Bonjour,

Je voudrais savoir ave quel methode je pourrais faire une slection de planete.

--- Chaque joueur qui possèdera plusieurs planète pourra selectionner une des planètes qui lui appartient et faire des changements sur cette planète. Chaque planètes à son propre ID, qui lui permet d'être identifiable. Elle est connecté avec le joueurs par l'id membre pour savoir quel planète(s) appartient à quel joueurs.

j'ai donc effectuée le select qui propose les planètes que le joueurs possède.
La ou intervient mon problème c'est que j'ai à priori deux solutions:

1-Soit une Session de planete.
2- Soit un GET ou POST.

je ne sais pas trop comment faire; j'ai essayé avec un GET mais je pense que je fais pas ce qu'il faut, de toute façon je n'arrive pas à comprendre comment je pourrais rediriger la page derrière. Si quelqu'un à une idée je suis preneur. En attendant je continue de chercher^^

(Je met le code quand même au cas ou, pour info c'est un include)

<select id="liste_planete">
            <?php

                    $requete=$bdd->prepare("SELECT * FROM planete WHERE id_membre = ? ");
                    $requete->execute(array($idmembre));
                    while($resultat = $requete->fetch())

                        {

            ?> 

                <option ><?php echo $resultat['nom_planete'] ?></option>

                <?php

                        }

                        ?>
</select>
<form method="GET" action="">
<input type="submit" id="liste_planete"/>
    </form>     

<?php

                            if(isset($_GET['liste_planete']))
                                {                   

                                        $requser=$bdd->prepare("SELECT * FROM planete WHERE id= ?");
                                        $requser->execute(array($_GET['id']));
                                        $user = $requser->fetch();

                                        header('..?id=' . $_GET['id']);                                         

                                }

                                ?>

Merci ;)

121 réponses


Carouge10
Réponse acceptée

Et bien voilà, problème résolu.
Plus qu'à mettre le sujet en résolu.

Bonjour,
Pour GET ou POST tout dépend des données à passer.
Si c'est juste un id ou un élément sans espace, la méthode GET conviendra.

Je vois que le select est en-dehors de la balise form, ce qui constitue une erreur.

Pour le traitement, une fois l'id de la planète récupérer, vous faite un header comme vous l'avez écrit.

malibx
Auteur

en effet j'avais pas fait gaffe a la balise, pour le header je laisse les deux points devant? je l'écris de cette façon?

non le header s'écrit de cette façon:

header('Location: mapage.php?id'.$id);
malibx
Auteur

Ok, mais dans se le problème c'est qu'il ne peut pas naviguer sur toutes les pages il faudrait que je fasse ca pour chaque page non? donc pas top :/

Je n'ai pas compris la question

malibx
Auteur

Si je fais une redirection sur une page donnée, me gardera il GET id sur toutes mes autres pages aussi?
Et sinon j'ai fais la modif et avec ce que j'ai fais même quand je valide il ne se passe rien ^^

s'il est renvoyé à chaque page, oui vous aurez l'id de la planète. Sinon vous pouvez utiliser les sessions pour éviter de le renvoyer en GET à chaque fois.

malibx
Auteur

Oui voila c'etait bien ma question, donc oui je vais plutot faire avec une session je pense ^^

oui c'est le plus efficace.
On stocke l'id de la planete en cours dans un $_SESSSION['user']['current_planete'] par exemple

malibx
Auteur

Okay, je suis en train d'essayer de le faire la, je galère un peu. La session de la planete il vaut mieux que je la créer à la connexion? ou seulement au changement de planete?

Actuellement j'ai modifié mon inscription et ma BDD donc car j'ai un champs dans la table membre "planete_session" qui prend l'id de la planete principale quand on s'inscrit.

On la crée à la connexion car il faut bien récupérer la planète de départ et quand on change de planète, on met à jour la session.

malibx
Auteur

D'accord, donc j'essaie de faire sa ^^ je galère un peu dessus mais je vais insister :p

malibx
Auteur

j'ai mis sa:

$userinfo = $requser->fetch();    /* Permet de créer les sessions sur le membre */                                                  
$_SESSION['id'] = $userinfo['id'];                                              
$_SESSION['pseudo'] = $userinfo['pseudo'];                                                  
$_SESSION['mail'] = $userinfo['mail'];                                                  
$_SESSION['planete_session'] = $unserinfo['planete_session'];

A la suite donc de mes autres sessions, c'est correct non? se sera au changement de planete que je notifierais que planete_session doit garder l'id de X ou Y planete?

Oui sachant qu'on peut automatiser la session quelque soit les valeurs retourné.
Par exemple si vous ajoutez un champ dans la planet, il sera automatiquement ajouter à la session quand elle sera mis à jour
Avec un foreach, cela se fait bien.

malibx
Auteur

Okay, mais la par exemple même si la valeur récuperé est dans la table membre je peux récuperé des informations sur la table planete? avec se code que j'ai mis?

oui en faisant une requête qui récupère les données de la planète en fonction de l'id de la planète qui à été passé en paramètre

malibx
Auteur

Okay, je vais essayer ca.

malibx
Auteur

il me ressort : NULL à planete session :/

c'est quoi le code que vous avez fait ?

malibx
Auteur
if(isset($_POST['formconnexion']))  /* Si je valide le bouton se connecter */

            {
                $pseudoconnex = htmlspecialchars($_POST['pseudoconnex']);   
                $mdpconnex = sha1 ($_POST['mdpconnex']);

                if(!empty('pseudoconnex') AND !empty('mdpconnex'))
                {
                    $requser = $bdd->prepare("SELECT * FROM membre WHERE pseudo = ? AND mdp = ?"); /* Permet de se connecter à la BDD demander les pseudo ainsi que les mdp */
                    $requser->execute(array($pseudoconnex, $mdpconnex,));  /*execute la commande */
                    $pseudoexiste = $requser -> rowCount(); 

                                        if($pseudoexiste == 1)
                                                {

                                                    $userinfo = $requser->fetch();    /* Permet de créer les sessions sur le membre */
                                                    $_SESSION['id'] = $userinfo['id'];
                                                    $_SESSION['pseudo'] = $userinfo['pseudo'];
                                                    $_SESSION['mail'] = $userinfo['mail'];

                                                    $_SESSION['planete_session'] = $unserinfo['planete_session'];
                                                    /* ESSAIE DE FAIRE SESSION PLANETE 
                                                    $reqplanetesession = $bdd->prepare("SELECT * FROM planete WHERE id_planete = :id_planete");
                                                    $reqplanetesession->execute(array('id_planete' => $idplanete)); 
                                                    $opensession = $reqplanetesession -> fetch();

                                                                $opensession = $_SESSION['planete_session'];
                                                    */          

                                                    header("Location: .php?id=" . $_SESSION['id']); /* permet d'envoyer sur son profil en conservant l'ID */

                                                }           

                                                else /* Si la BDD ne trouve pas un utilisteur alors */
                                                {
                                                        $erreur = "Le pseudo ou le mot de passe n'existe pas.";
                                                }

                }
                else /* Si les identifiants ne sont pas bon */
                    {
                            $erreur = "Les identifiants sont incorrect.";
                    }

            }

?>

J'ai mis toute ma connexion.

Donc $userinfo['planete_session'] = null et il vaut quelque chose dans la BDD ?

malibx
Auteur

oui il vaut l'id de la planete mère du joueur pour le moment donc Id 1

logique, vous avez écrit unserinfo (^_^)

malibx
Auteur

lol en effet, il me le ressort NULL quand meme ^^

malibx
Auteur

Pour verifié je me met dans une des pages de mon jeu, j'ai fait plusieurs vardump, il me retrouve les autres mais pas la session --

Pas compris de quoi vous parlez.

malibx
Auteur

je parlais du fait qu'il me trouve bien :

$_SESSION['id'] = $userinfo['id'];
$_SESSION['pseudo'] = $userinfo['pseudo'];
$_SESSION['mail'] = $userinfo['mail'];

Par contre j'ai fait des test, si je rajoute d'autres champs de la table membre en session il me les renvoie comme etant NULL aussi... je ne comprend vraiment pas.

Soit vous les rentrer manuellement comme la, soit vous le faite automatiquement en parcourant $userinfo

foreach ( $userinfo as $k => $v) {
    $_SESSION[$k] = $v;
}

C'est à tester.

malibx
Auteur

En parcourant userinfo il ne me les retrouvent pas :/

$requser = $bdd->prepare("SELECT * FROM membre WHERE pseudo = ? AND mdp = ?"); /* Permet de se connecter à la BDD demander les pseudo ainsi que les mdp */
                    $requser->execute(array($pseudoconnex, $mdpconnex,));  /*execute la commande */
                    $pseudoexiste = $requser -> rowCount(); 

                                        if($pseudoexiste == 1)
                                                {

                                                    $userinfo = $requser->fetch();   
                                                    $_SESSION['id'] = $userinfo['id'];  /*retrouve */
                                                    $_SESSION['pseudo'] = $userinfo['pseudo']; /*retrouve */
                                                    $_SESSION['mail'] = $userinfo['mail']; /*retrouve */
                                                    $_SESSION['point'] = $userinfo['point']; /*retrouve pas (NULL)*/
                                                    $_SESSION['planete_session'] = $userinfo['planete_session']; /*retrouve pas (NULL)*/

Je ne comprend pas pourquoi. Après je veux bien les rentrer manuellement mais bon..

Faite un var_dump de $userinfo, juste après le fetch et afficher le résultat.
Si vous pouvez afficher une image de la structure de la table membre, ça serait bien

malibx
Auteur

le var_dump($userinfo); me rend NULL mais après la connexion.
A la connexion il me rend : toute la table membre!

malibx
Auteur

table planete et membre

--
-- Structure de la table `planete`
--

CREATE TABLE IF NOT EXISTS `planete` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `population` int(11) NOT NULL,
  `nom_planete` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `coordonnee` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `planete_mere` tinyint(1) DEFAULT NULL,
  `avatar_p` int(11) DEFAULT NULL,
  `id_membre` int(11) DEFAULT NULL,
  `pseudo` varchar(25) COLLATE utf8_unicode_ci DEFAULT NULL,
  `id_population` int(11) NOT NULL,
  `id_mine` int(11) NOT NULL,
  `id_batiment` int(11) NOT NULL,
  `id_defense` int(11) NOT NULL,
  `id_caserne` int(11) NOT NULL,
  PRIMARY KEY (`id`,`population`),
  KEY `FK_planete_id_membre` (`id_membre`),
  KEY `FK_planete_pseudo` (`pseudo`),
  KEY `FK_planete_id_population` (`id_population`),
  KEY `FK_planete_id_mine` (`id_mine`),
  KEY `FK_planete_id_batiment` (`id_batiment`),
  KEY `FK_planete_id_defense` (`id_defense`),
  KEY `FK_planete_id_caserne` (`id_caserne`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

-- --------------------------------------------------------
--
-- Structure de la table `membre`
--

CREATE TABLE IF NOT EXISTS `membre` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `pseudo` varchar(25) COLLATE utf8_unicode_ci NOT NULL,
  `mail` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `mdp` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `confirmekey` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `confirm` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `point` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `planete_session` int(11) DEFAULT NULL,
  `race` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `avatar_m` int(11) DEFAULT NULL,
  `id_membre_online` int(11) NOT NULL,
  `id_technologie` int(11) NOT NULL,
  PRIMARY KEY (`id`,`pseudo`),
  KEY `FK_membre_id_membre_online` (`id_membre_online`),
  KEY `FK_membre_id_technologie` (`id_technologie`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

C'est bizarre que ça renvoi null car il pourtant bien renvoyer

malibx
Auteur

oui... je pige pas pourquoi

je testerais bien de changer de nom de la colonne pour enlever le "session"

malibx
Auteur

le remplacer par planete_utilise par exemple?

oui par exemple

malibx
Auteur

Okay je vais essayer sa après manger :p je te tiens au courant :)

malibx
Auteur

parfait, la connexion fonctionne et il me ressort bien le chiffre de la bonne session ;) c'etait donc le mot session qui merdait ;) et du coup maintenant pour récuperer les infos de la table planete correspondant à ce numéro d'ID qui se trouve dans planete_utilise je dois faire une requete particuliere comment ca se passe?

en faisant simplement un select avec comme conditions que l'id de la planète soit égale à planete_utilise.

malibx
Auteur

non mais enfaite c'est bon ^^ j'utilise le chiffre dedans qui est égale à la planete etc... bref donc enfaite je pense que j'ai tout ce qu'il me faut

Bien, plus qu'à mettre le sujet en résolu et bon jeu.
Par curiosité, c'est un genre de "xnova" votre jeu ?

malibx
Auteur

Alors nop du tout c'etait mon Jeu Stargate que je remet à ma sauce question de droits(on ne sait jamais) Conquete spatial mais a 10 lieu du Xnova. Par contre encore un petit problème du coup j'essayais de faire le changement de planete mais je galère un peu.

Je sais que je veux faire :
$_SESSION['planete_utilise'] ----> remplacé par ----> ID nouvelle planete.
selectionner la planete actuelle dans la table membre et le remplacer par l'id de la planete que l'on selectionne.

        Mais j'arrive pas à le concevoir, je pense que je m'y prend mal.
        Sachant que j'ai mis en variable que la session planete à pour valeur '$planete_utilise'.
if(isset($_POST['liste_planete'])) /* SI JE CLIQUE SUR LISTE PLANETE */
                                {                   

                                    $req_chang=$bdd->prepare("SELECT * FROM planete WHERE id = :id ");
                                    $req_chang->execute(array('id'=>$id_pla));

                                    var_dump($id_pla);

                                    $up_nouv_pl=$bdd->prepare("UPDATE membre SET planete_utilise = ? WHERE id_membre = $idmembre ");
                                    $up_nouv_pl->execute(array($planete_utilise));

                                    planete_utilise=$id_pla;

                                }

Mais je dois me gourer dans la forme ^^

oui c'est a peu près cela.
$id_pla = $_POST['liste_planet']; (je pense que c'est l'id de la planète que vous avez eu par un select dans un formulaire)
A la fin, il faut modifié la planete_utilise dans la sessions par le nouvelle id

malibx
Auteur

ok j'essaie

malibx
Auteur
if(isset($_POST['liste_planete'])) /* SI JE CLIQUE SUR LISTE PLANETE */
                                {                   

                                    $req_chang=$bdd->prepare("SELECT * FROM planete WHERE id = :id ");
                                    $req_chang->execute(array('id'=>$id_pla));

                                    var_dump($id_pla);

                                    $id_pla = $_POST['liste_planet'];
                                    $planete_utilise=$id_pla;

                                    $up_nouv_pl=$bdd->prepare("UPDATE membre SET planete_utilise = ? WHERE id_membre = $idmembre ");
                                    $up_nouv_pl->execute(array($planete_utilise));

                                }

J'ai modifié, nada ^^

Reliser votre cote, vous faite le 1er select avec un élément qui va être renseigner seulement 2 lignes plus tard (^_^)

malibx
Auteur

Lol ah parfois je me perd entre deux lignes :p
Modification effectué, toujours aucun effet

faite-voir le code

Un petit tour sur la création d'un select en html.

<select name="select">
  <option value="value1">Valeur 1</option> 
  <option value="value2" selected>Valeur 2</option>
  <option value="value3">Valeur 3</option>
</select>
malibx
Auteur

C'est mon select qui est incorrect?

Je vous laisse comparer ce que j'ai posté et le votre. (surtout le "value") (^_^)

malibx
Auteur

Ah oui... Je sais pas ce que j'ai foutu! lol

malibx
Auteur

Ok je regarde, mais j'ai vu sur le net, ouai meme je suis allez mettre ID="" comme si c'etait un DIV xD et je m'en suis meme pas rendu compte

malibx
Auteur

Déjà il se valide! lol il me ressort probleme a cette ligne, ma requete doit être fausse ;)

$up_nouv_pl=$bdd->prepare("UPDATE membre SET planete_utilise = ? WHERE id_membre = $idmembre ");
                                    $up_nouv_pl->execute(array($planete_utilise));
malibx
Auteur

C'est l'ID membre qui ne va pas, et si je le retire il m'efface de la BDD la planete utilisé et la remplace par NULL ^^

Qu'elle est l'erreur annoncée ?

malibx
Auteur

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'id_membre' in 'where clause'' in /home/u218634216/public_html/jeu/controleur/changement_planete.php:52 Stack trace: #0 /home/u218634216/public_html/jeu/controleur/changement_planete.php(52): PDOStatement->execute(Array) #1 /home/u218634216/public_html/jeu/design/header.php(73): include('/home/u21863421...') #2 /home/u218634216/public_html/jeu/design/corps_haut.php(10): include('/home/u21863421...') #3 /home/u218634216/public_html/jeu/vue/salle_de_controle.php(11): include('/home/u21863421...') #4 {main} thrown in /home/u218634216/public_html/jeu/controleur/changement_planete.php on line 52

Je pense que l'erreur est très explicite.
Attention de ne pas confondre la table du membre et celle des planètes (^_^)

malibx
Auteur

Oui mais pourtant c'est la table membre que je veux update, je veux update le champs Planete_utilise de la table membre

Oui d'accord.
Va falloir travailler son anglais plus sérieusement. L'erreur vous qu'il n'y a pas de colonne "id_membre" dans la table membre.
Je cite : Column not found: 1054 Unknown column 'id_membre'

malibx
Auteur

^^ Ou apprendre à lire une erreur. Ok j'avais vu qu'il y avait un soucis avec ça mais j'avais pas cerné dans le flot de ligne.

malibx
Auteur

Il me remplace toujours la valeur par NULL :/

malibx
Auteur

Et si je reviens sur ma planete principale il me retrouve bien mon numero initial

Je résume le problème:
Lorsque vous validez le changement de planète, l'update sur "planete_utilise", ne se fait pas ?

malibx
Auteur

Alors quand je selectionne ma planete principale il fait l'update de 'planete_utilise' il met le chiffre 1 en l'ocurrence.
Si je passe sur ma seconde planete le champ passe en NULL
Si je retourne sur ma planete principale il me remet 1

je peux avoir le code qui a été fait

malibx
Auteur

<br><br></br><br>
<form method="POST" action="">
<select name="liste_planete">
            <?php

                    $requete=$bdd->prepare("SELECT * FROM planete WHERE id_membre = ? ");  /* SELECTION DE LA TABLE PLANETE PAR RAPPORT A L'ID DU MEMBRE */
                    $requete->execute(array($idmembre));
                    while($resultat = $requete->fetch())

                        {

            ?> 

                <option value="value1"><?php echo $resultat['nom_planete'] ?></option>

                <?php

                        }

                        ?>
</select>

<input type="submit"  name="liste_planete"/>
    </form>     

<?php

                            if(isset($_POST['liste_planete'])) /* SI JE CLIQUE SUR LISTE PLANETE */
                                {                   

                                    $id_pla = $_POST['liste_planet'];

                                    $req_chang=$bdd->prepare("SELECT * FROM planete WHERE id = :id ");
                                    $req_chang->execute(array('id'=>$id_pla));

                                    $up_nouv_pl=$bdd->prepare("UPDATE membre SET planete_utilise = ? WHERE id = $idmembre");
                                    $up_nouv_pl->execute(array($planete_utilise));

                                    $planete_utilise=$id_pla;
                                }

                                ?>
malibx
Auteur

je n'ai pas moose, un peu modifier beaucoup de chose, l'odre de quelques variable et le select

Ah non mais la, c'est de la bêtise.
Vous avez quelle niveau d'expérience en html ?

malibx
Auteur

Bah comme en php je débute ^^

Ah oui, et vous vous lancez dans un projet aussi complexe pour un débutant.
C'est un peu comme descendre une piste rouge en ski après avoir pris sa 1ère heure de cours

Le select de la sélection de la planète à toujours le même value, il faut le rendre dynamique comme le nom de la planète afficher à coté.

Vous avez trouvé votre erreur ?

malibx
Auteur

Désolé je me suis endormi hier soir ^^ hum je lirais sur les selects ce soir en rentrant! Je crois avoir compris l'idée du select ^^

malibx
Auteur

j ai lu plusieurs doc sur les select. ils mettent des options selected. des values mais je comprend pas trop mon erreur

le value doit être dynamique, c'est à dire qu'il change comme le nom de la planète

malibx
Auteur

Donc je dois y mettre du php?

c'est bien ça

malibx
Auteur

Et c'est ca qui fait bugger l'Update?

oui car vous ne récupérez pas une valeur correcte pour le update

malibx
Auteur

Ok. Donc dans le select je dois du php mais quoi? une requete (je pense pas^^) une variable?

oui une variable, vous avez déjà le nom. Il vous la variable qui va vous permettre de mettre à jour le champ planete_utilise ( il me semble que c'est cela)

malibx
Auteur

Dac donc se doit etre $planete_utilise

j'en doute.
Demandez-vous le format qui est insérer dans la table à mettre à jour et ce qui correspondrais dans la table planete

malibx
Auteur

$id_pla dans se cas^^

oui voilà ça serait mieux, non ?

Aller affiche-moi le code pour sélectionner la planete.

malibx
Auteur
if(isset($_POST['liste_planete'])) /* SI JE CLIQUE SUR LISTE PLANETE */
                                {                   

                                    $id_pla = $_POST['liste_planet'];

                                    $req_chang=$bdd->prepare("SELECT * FROM planete WHERE id = :id ");
                                    $req_chang->execute(array('id'=>$id_pla));

                                    $up_nouv_pl=$bdd->prepare("UPDATE membre SET planete_utilise = ? WHERE id = $idmembre");
                                    $up_nouv_pl->execute(array($planete_utilise));

                                    $planete_utilise=$id_pla;
                                }

je parlais du select en html et php.
Celui qui liste vos planètes.

Et le code que vous venez de poster est erroné.
Vous avez refait l'erreur de l'odre des variables

malibx
Auteur

alors je refais les modifs, j'ai pas changé le code d'hier.

et value1, vous le changer quand ?
Car la $_POST[''liste_planet] vaut toujours "value1" quelque soit la planete choisie.

malibx
Auteur

<br><br></br><br>
<form method="POST" action="">
<select name="liste_planete">
            <?php

                    $requete=$bdd->prepare("SELECT * FROM planete WHERE id_membre = ? ");  /* SELECTION DE LA TABLE PLANETE PAR RAPPORT A L'ID DU MEMBRE */
                    $requete->execute(array($idmembre));
                    while($resultat = $requete->fetch())

                        {

            ?> 

                <option value="$id_pla"><?php echo $resultat['nom_planete'] ?></option>

                <?php

                        }

                        ?>
</select>

<input type="submit"   name="liste_planete"/>
    </form>     

<?php

                            if(isset($_POST['liste_planete'])) /* SI JE CLIQUE SUR LISTE PLANETE */
                                {                   

                                    $id_pla = $_POST['liste_planet'];

                                    $req_chang=$bdd->prepare("SELECT * FROM planete WHERE id = :id ");
                                    $req_chang->execute(array('id'=>$id_pla));

                                            $planete_utilise=$id_pla;                       

                                    $up_nouv_pl=$bdd->prepare("UPDATE membre SET planete_utilise = ? WHERE id = $idmembre");
                                    $up_nouv_pl->execute(array($planete_utilise));

                                }

                                ?>
malibx
Auteur

Quand j'ai copié le code j'avais pas fait la modif ^^ pour sa que j'ai remis car je m'en suis rendu compte derriere ;)

ça reviens au même $id_pla est fixe et même vide d'ailleurs. Il vous une variable qui est quasiment identique à celle jute à coté $resultat.. mais qui est l'id de la planete.

malibx
Auteur

Je ne pige pas tout...

Alalala, la jeunesse qui voit trop grand et qui se lance dans de grand projet sans en connaitre les bases. (^_^)

<option value="<?php echo $resultat['id_planete'] ?>"><?php echo $resultat['nom_planete']; ?></option>

dans le value , il nous faut l'id de la planete pour pouvoir le récupérer à la suite.
Vérifier quand même que j'ai bien mis le bon nom de la colonne

malibx
Auteur

Lol je ne suis pas si jeune :p et cela me donne l'ocasion d'apprendre ^^ avec un objectif ( realisable ou non)

Sinon en effet j'avais oublié ma premiere requete -_- ^^

<option value="<?php echo $resultat['id'] ?>"><?php echo $resultat['nom_planete']; ?></option>

J'ai juste du modifier le id_planete en id mais cela revient au même au changement de planete il me remplace par NULL dans la BDD

if(isset($_POST['liste_planete'])) /* SI JE CLIQUE SUR LISTE PLANETE */
                                {                   
                                    $id_pla = $_POST['liste_planet'];

                                    $req_chang=$bdd->prepare("SELECT * FROM planete WHERE id = :id ");
                                    $req_chang->execute(array(':id'=>$id_pla));                  

                                    $up_nouv_pl=$bdd->prepare("UPDATE membre SET planete_utilise = ? WHERE id = ?");
                                    $up_nouv_pl->execute(array($id_pla,  $idmembre));

                                }
malibx
Auteur

Même effet :/

$id_pla = $_POST['liste_planet']; il manque le e

malibx
Auteur

Indeed. Alors maintenant il affiche 0 et non NULL quand je change de planete

En inspectant le code du select hml
Le value de option est bien l'id de la planet affiché à côté ?

malibx
Auteur

C'est à dire? Car je suis pas sur de bien interpréter la question et donc d'y répondre mal .

quand vous regarder le code source (ou l'inspecteur de code sous chrome)
Que val les values de option select.

malibx
Auteur
            Oui elles sont bonnes
malibx
Auteur
<option value="1">Terre</option>
<option value="2">atlantis</option>

Ensuite on avance et on controle $id_pla, que vaut-il ?

malibx
Auteur

il m'affiche sa sur ma page sous le select .

string(7) "Valider"

ajouter un name au select html (liste_planete)

malibx
Auteur
<form method="POST" action="">
<select name="liste_planete">

La deuxieme ligne? je modifie le name c'est bien ca?

oui que vaut $id_pla maintenant ?

malibx
Auteur

la même chose

essayer en enlevant le name de input type submit

malibx
Auteur

Alors j'ai donc maintenant

string(1) "1"
string(1) "2"

Selon la planete que je choisi

voilà donc la vous avez ce que vous désirez.
Du coup l'update devrait bien se faire ?

malibx
Auteur

Comme ça c'est good. Dans la BDD il me modifie bien le bon numero ;)

malibx
Auteur

Un grand merci ^^ J'aurais je pense pas réussi sans aide... j'aurais pensais que je merdais sur les requetes etc... Mais pas au niveau du select

malibx
Auteur

Yes merci encore ;)