|
[Résolu] Déplacer un champ de la base de donnee via un formulaire
|
| Auteur |
Message |
biboum
Membre
Messages : 55
Groupe : Membre
Inscription : Aug 2008
Statut :
Hors ligne
Réputation : 0
|
RE: déplacer un champ de la base de donnée via un formulaire
Bon j'ai tout supprimer ce formulaire, et refait, encore une fois. Il est vraiment plus clair.
En revanche je viens de comprendre que vu que c'est un formulaire radiobutton en boucle, avec une insertion d'affichage d'un élémént de la base de données, la valeur n'est pas fixe.
Donc ce problème régler, la suite viendra d'elle même surement.
Enfin je l'espère...mais cela expliquerait pourquoi quand je lui demandais d'inserer via "submit" dans la base de donnée, cela ne m'affichait que "radiobutton". Ce qui me permettrait ensuite avec des "DROP" et autres "INSERT" de continuer les informations à donner au formulaire. non ? Enfin déjà ...restons en là, comment lié le radiobutton à ma donnée non fixe ?
|
|
| 08-07-2008 01:54 PM |
|
 |
keke
Modérateur JeuPHP
    
Messages : 1,035
Groupe : Modérateur JeuWeb
Inscription : Mar 2007
Statut :
Hors ligne
Réputation : 15
|
RE: déplacer un champ de la base de donnée via un formulaire
Je suis largué .
Tu pourrais le code source complet ? qu'on puisse avoir une idée un peu moins ... "théorique".
Dans l'idée d'Oxman (qui me semble LA solution la plus adaptée à ton cas) il n'y a insertion de donnée Que lorsque tu souhaites rajouter un nouveau pays.
Dans les autres cas, ce ne sont que des modifications...
Bon courage !
kéké
PS : une table de ce type :
PAYS
nom_pays, id_joueur_possédant
Pourrait peut-être même être mieux, selon ton contexte. un Id_jour_possedant à 0 serait alors par exemple un pays vide.
Kéké
Administrateur du jeu médiéval http://Magdales.com
Papa depuis 15 mois. Modérateur de jeuPHP .
|
|
| 08-07-2008 03:20 PM |
|
 |
biboum
Membre
Messages : 55
Groupe : Membre
Inscription : Aug 2008
Statut :
Hors ligne
Réputation : 0
|
RE: déplacer un champ de la base de donnée via un formulaire
|
|
| 08-07-2008 04:50 PM |
|
 |
Single Dark
Membre
Messages : 98
Groupe : Membre
Inscription : Jun 2007
Statut :
Hors ligne
Réputation : 0
|
RE: déplacer un champ de la base de donnée via un formulaire
Bonyour,
Pour moi, la meilleur solution reste celle de KéKé.
For exemple :
|..pays.......|..id_joueur..|
|.France.....|............1...|
|.Allemagne.|............0...|
Donc la France appartient au joueur avec l'id 1.
L'allemagne en revanche n'appartient à personne, d'ou l'id 0 soit tu peut laisser vide.
Ensuite, si j'ai bien comprid, un nouveau joueur arrive, avec l'id 3, il doit choisir son pays. Il ne peut choisir que les pays libres, donc avec l'id 0.
Voici comment je vois la chose :
session_start(); $_SESSION['id_joueur'] = '3';// Bien sur il faut utiliser sa avec ta struture existante
//** Premiere méthode **// //-- Soit tu choisi directement dans la requete de ne pas inclure les pays déjà prid --// $requete_pays = mysql_query('SELECT * FROM table_pays WHERE id_joueur=="0" ');
//** Deuxieme méthode **// //-- Soit tu choisi de les inclures --// $requete_pays = mysql_query('SELECT * FROM table_pays');
//**-- 1er methode --**// echo '<form method="POST" action="page_de_traitement.php">'; // Ensuite tu lance ton while, pas trop fort quand même // while ($sql_pays =mysql_fetch_assoc($requete_pays)) { echo '<input type="radio" name="pays" value="'.$sql_pays['pays'].'" />'; } echo '<input type="submit" value="Suivant" />'; </form> //**-- FIN 1er methode --**//
//**--2eme methode --**// echo '<form method="POST" action="page_de_traitement.php">'; // Toujours la boucles // while ($sql_pays =mysql_fetch_assoc($requete_pays)) { // Ca change a se niveau if ($sql_pays['id_joueur'] != '0' || $sql_pays['id_joueur'] != '') { // En gros si le pays appartient deja a quelqu'un il est impossible de clique sur le radio// $radio= 'disabled="disabled"'; } else { $radio=''; } echo '<input type="radio" name="pays" value="'.$sql_pays['pays'].'" '.$radio.'/>'; } echo '<input type="submit" value="Suivant" /> </form>'; //**-- FIN 2eme methode --**//
Voilà pour la page du formulaire
After il faut bien traiter tous çà !?!
session_stat();
$_POST['pays'] //Après tous çà il va falloir mettre la mise a jour mysql_query ('UPDATE table_pays SET id_joueur="'.$_SESSION['id_joueur'].'" WHERE pays=$_POST['pays']');
// Ensuite une belle redirection header( "Location: ../index.php");
Il se peut qu'il y est des erreurs, j'ai pas tester, mais dans les grandes lignes c'est çà...
Maintenant il se peut aussi que je n'ai rien compris au problème, et dans ce cas la, je m'en excuse...
Single Dark
[W.I.P] Star Commander [W.I.P]
_____________________________
|
|
| 08-09-2008 02:06 AM |
|
 |
biboum
Membre
Messages : 55
Groupe : Membre
Inscription : Aug 2008
Statut :
Hors ligne
Réputation : 0
|
RE: déplacer un champ de la base de donnée via un formulaire
Merci beaucoup single Dark. J'avais pensé comme je l'ai dit dans un précédent message, si ma solution ne marcherait pas d'utiliser un système à la Kéké, voir la tienne bien plus explicitement expliqué 
Pour le moment j'ai fais quelque chose qui semble correct en reprenant plutôt l'idée d'oxman. Je lie le pays avec le pseudo. Tout comme le payspris aura pour valeur null. Donc un peu le même cas que toi avec la valeur0 de l'id.
Bon je dois avoir un probleme à l'identification car on dirait qu'il ne reconnait pas mon pseudo dans le code. Donc je le met ci dessous. Le formulaire c'est ok, la base de donnée c'est ok, il y a juste un probleme dans l'identification et le suivi de l'identification du pseudo à l'étape avant d'arriver sur cette page qui empeche d'executer l'UPDATE et l'INSERT demandé par le formulaire.
Voilà la page de choix du pays :
<?php # // on se connecte à notre base
$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('cosmopoeia', $base) ;
?>
<?php require_once('Connections/membre.php');
?>
<?php
mysql_select_db($database_membre, $membre);
$query_Recordset1 = "SELECT paysdispo from pays where paysdispo NOT IN (select paysjoue from membre)";
$Recordset1 = mysql_query($query_Recordset1, $membre) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>
<body>
<iframe id="scripts" frameborder="0" width="0" height="0"></iframe>
<p align="center">Veuillez choisir votre pays que vous allez représenter :</p>
<div align="center">
<table width="250" border="1">
<tr>
<td width="137">Pays</td>
<td width="97">Choix du pays </td>
</tr>
</table>
</div>
<form name="formulaire" method="post" target="scripts" action="traitement_inscription.php">
<div align="center">
<table width="248" border="1">
<tr>
<td width="136"> </td>
<td width="96"><label>
<input type="radio" name="payscocher" value="<?php echo $row_Recordset1['paysdispo']; ?>">
<?php echo $row_Recordset1['paysdispo']; ?></label></td>
</tr>
</table>
</div>
<label>
<div align="center">
<input type="submit" name="Submit" value="Envoyer" />
</div>
</label>
</form>
<p> </p>
<?php
mysql_free_result($Recordset1);
?>
Et celle de traitement du formulaire :
<?php session_start();?>
<?php # // on se connecte à notre base
$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('cosmopoeia', $base) ;
?>
<?php require_once('Connections/membre.php');
?>
<html>
<!DOCTYPE html PUBLIC"-//w3c//DTD XHTML 4.1 Strict//EN""http://www.w3.org/TR/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="content-Language" content="fr, fr-be, fr-ca, fr-lu, fr-ch">
<meta name="Distribution" content="global">
<meta name="publisher" content="dad72">
<meta name="Author" content="dad72">
<link rel="stylesheet" media="screen" type="text/css" title="style" href="style/style.css" />
</head>
<body>
<?php mysql_query("UPDATE membres SET paysjoue = '" . $_POST['payscocher'] ."' WHERE pseudo = '". $_SESSION['pseudo'] . "'");
?>
<?php echo $_SESSION['pseudo']; ?>
</body>
</html>
Il faut bien se dire qu'avant d'arriver sur la page du choix du pays, on a dù s'identifier, donc normalement la superglobale SESSION prééxiste.
Je débute alors pardonnez mon éparpillement dans ce dossier...où depuis le début du forum je suis passé à un tout autre probleme. Mais si dans ce code là vous ne trouvez pas d'où viens l'erreur et moi non plus entre temps, je reviendrais tenter d'utiliser ton systeme Single Dark qui est aussi surement le mieux organisé dans la base de donnée.
|
|
| 08-09-2008 02:46 AM |
|
 |
oxman
Membre
Messages : 680
Groupe : Membre
Inscription : May 2008
Statut :
Hors ligne
Réputation : 10
|
RE: déplacer un champ de la base de donnée via un formulaire
La meilleure solution est celle de keke, j'ai donné une solution très simplifiée car tu avais du mal à suivre, mais utilise celle de keke si possible
|
|
| 08-09-2008 10:51 AM |
|
 |
biboum
Membre
Messages : 55
Groupe : Membre
Inscription : Aug 2008
Statut :
Hors ligne
Réputation : 0
|
RE: déplacer un champ de la base de donnée via un formulaire
A y est, mon projet est entièrement sur papier, je peux me remettre à coder avec une vue plus général
Je reviens sur le Post de Kéké,
session_start(); $_SESSION['id_joueur'] = '3';
J'ai du mal avec les sessions et les formulaires...:s mais je ne comprend pas le "3". Comment faire pour que le "3" corresponde à celui du visiteur qui se connecte ? Parce que là c'est nous qui le précodons. Non ?
Ou alors je patauge complet sur les sessions...:s
Parce que pour le moment, mon code (post au dessus) ne reconnait aucune séssion. L'id-joueur et le php_session_start ayant été rajouté, il ne me reconnait quand même aucun utilisateur. Donc il ne m'inscrit rien du tout dans ma base de donnée en face de l'utilisateur qui est censé être connecté.
Prêt à en découdre avec ca Mais...avec votre aide.
Info : le code du post au dessus a été modifié pour correspondre à celui de kéké. La structure étant la même, seul quelques redirection et nom de variable ont été changé, étant plus la base de donnée elle même qui changeait. (A moins que là aussi j'ai rien compris )
|
|
| 08-14-2008 05:35 AM |
|
 |
Kassak
Membre
Messages : 795
Groupe : Membre
Inscription : Aug 2006
Statut :
Hors ligne
Réputation : 4
|
RE: déplacer un champ de la base de donnée via un formulaire
C'est un autre problème, tu as surement un formulaire pour se loguer au site?
Donc quand le joueur se logue (pseudo et mot de passe), tu vérifies bien sûr qu'il existe, que son mot de passe corresponde bien et blabla....
Ensuite avant de le rediriger vers la partit membre, tu crées les variables de session dont tu as besoin (va voir là : Variable session).
En gros, tu récupères l'id du joueur qui veut se connecter, et pour créer la variable session ID : $_SESSION['id'] = $id_joueur ;
Et voila
Il est pas magnifique ce sol?
|
|
| 08-14-2008 12:42 PM |
|
 |
biboum
Membre
Messages : 55
Groupe : Membre
Inscription : Aug 2008
Statut :
Hors ligne
Réputation : 0
|
RE: déplacer un champ de la base de donnée via un formulaire
Merci pour ta réponse. Mais je n'y arrive pas :s
On est bien d'accord :
<?php require_once('Connections/membre.php'); ?> <?php // *** Validate request to login to this site. if (!isset($_SESSION)) { session_start(); }
$loginFormAction = $_SERVER['PHP_SELF']; if (isset($_GET['accesscheck'])) { $_SESSION['PrevUrl'] = $_GET['accesscheck']; }
if (isset($_POST['pseudo'])) { $loginUsername=$_POST['pseudo']; $password=$_POST['passe']; $MM_fldUserAuthorization = ""; $MM_redirectLoginSuccess = "choixpays3.php"; $MM_redirectLoginFailed = "inscription.php"; $MM_redirecttoReferrer = false; mysql_select_db($database_membre, $membre); $LoginRS__query=sprintf("SELECT pseudo, motdepasse FROM membre WHERE pseudo='%s' AND motdepasse='%s'", get_magic_quotes_gpc() ? $loginUsername : addslashes($loginUsername), get_magic_quotes_gpc() ? $password : addslashes($password)); $LoginRS = mysql_query($LoginRS__query, $membre) or die(mysql_error()); $loginFoundUser = mysql_num_rows($LoginRS); if ($loginFoundUser) { $loginStrGroup = ""; //declare two session variables and assign them $_SESSION['MM_Username'] = $loginUsername; $_SESSION['MM_UserGroup'] = $loginStrGroup;
if (isset($_SESSION['PrevUrl']) && false) { $MM_redirectLoginSuccess = $_SESSION['PrevUrl']; } header("Location: " . $MM_redirectLoginSuccess ); } else { header("Location: ". $MM_redirectLoginFailed ); } }
Il y a bien ma superglobale qui est présente ? (plus précisément là : )
//declare two session variables and assign them $_SESSION['MM_Username'] = $loginUsername; $_SESSION['MM_UserGroup'] = $loginStrGroup;
Donc normalement si à la page d'après je fais session_start ();
Et que je lui demande de faire un echo d'une de ces variables, cela me l'affichera non ?
Ce message a été modifié le: 08-14-2008 07:56 PM par biboum.
|
|
| 08-14-2008 07:56 PM |
|
 |
Kassak
Membre
Messages : 795
Groupe : Membre
Inscription : Aug 2006
Statut :
Hors ligne
Réputation : 4
|
RE: déplacer un champ de la base de donnée via un formulaire
L'anglais c'est ton choix?
Vu que tu as un peu de mal, prend un script déjà fait mais en français, se sera déjà plus clair pour le nom des variables les commentaires etc...
Donc normalement si à la page d'après je fais session_start ();
Et que je lui demande de faire un echo d'une de ces variables, cela me l'affichera non ?
Tu as testé?
Il est pas magnifique ce sol?
|
|
| 08-14-2008 08:14 PM |
|
 |
|
|