JeuWeb - Crée ton jeu par navigateur
[Résolu] Déplacer un champ de la base de donnee via un formulaire - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu] Déplacer un champ de la base de donnee via un formulaire (/showthread.php?tid=1462)

Pages : 1 2 3


RE: déplacer un champ de la base de donnée via un formulaire - biboum - 07-08-2008

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 ?


RE: déplacer un champ de la base de donnée via un formulaire - keke - 07-08-2008

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.


RE: déplacer un champ de la base de donnée via un formulaire - biboum - 07-08-2008

En fait je crois que je suis largué aussi Smile

Et à chaque modif y a un nouveau truc qui apparait Smile

Il semblerait que j'ai régler mon probleme de buttonradio. Que cela s'inscrit dans la base de donnée (en théorie vu qu'il manque quelque chose)
Et que le bouton submit marche.

Il me reste encore à faire une redirection vers la page d'accueil après le formulaire. Ainsi que le session_start Confused

Mais si ca rebug je reviens essayer ta solution :p


RE: déplacer un champ de la base de donnée via un formulaire - Single Dark - 09-08-2008

Bonyour,

Pour moi, la meilleur solution reste celle de KéKé.

For exemple :

table_pays a écrit :|..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 :

Code PHP :
<?php 
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 çà !?!

Code PHP :
<?php 
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


RE: déplacer un champ de la base de donnée via un formulaire - biboum - 09-08-2008

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é Wink

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 :

Code :
<?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&eacute;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">&nbsp;</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>&nbsp;</p>

<?php
mysql_free_result($Recordset1);
?>

Et celle de traitement du formulaire :

Code :
<?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.


RE: déplacer un champ de la base de donnée via un formulaire - biboum - 14-08-2008

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é,
Code PHP :
<?php 
session_start
();
$_SESSION['id_joueur'] = '3';

J'ai du mal avec les sessions et les formulaires...Confused 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...Confused

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 Smile 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 :p)


RE: déplacer un champ de la base de donnée via un formulaire - Kassak - 14-08-2008

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 Wink


RE: déplacer un champ de la base de donnée via un formulaire - biboum - 14-08-2008

Merci pour ta réponse. Mais je n'y arrive pas Confused
On est bien d'accord :

Code PHP :
<?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à : )

Code PHP :
<?php 
//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 ?


RE: déplacer un champ de la base de donnée via un formulaire - Kassak - 14-08-2008

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...Wink

Citation :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é?


RE: déplacer un champ de la base de donnée via un formulaire - biboum - 14-08-2008

Smile
Comme j'ai dù le dire dans le 1er post de ce thread...J'utilise Macromédia. Pourquoi ? Parce que c'est le seul moyen que j'ai trouver pour le moment pour creer une page d'identification. Si je le fais moi même ca marche pas. Si je le fais assisté avec d'autres logiciel (frontpage, ou autre) ca marche pas non plus. Avec un tuto pour macromédia j'avais enfin réussis à creer ma zone d'inscription et d'identification...voilà pourquoi c'est en Anglais. Pas vraiment un choix, plutot une obligation pour le moment Smile
Mais bon pour les autres pages que je fais en même temps, je ne me sers plus des codes de macromédia Wink

J'ai tester oui pour l'echo. Mais ca ne marche pas, comme s'il ne voyait pas de session ouverte.