Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Récupérer le champ "ID" d'une table en sélectionnant un autre champ de cette même table. [ Base de données / MySQL ] (stark_2097)

mercredi 20 août 2008 à 21:12:58 | Récupérer le champ "ID" d'une table en sélectionnant un autre champ de cette même table.

stark_2097

Bonjour à tous.

Je suis un amateur de très très bas niveau en PHP et j'ai pas mal de questions pour finaliser mon projet... merci d'être compréhensif et pas trop méchant...

Le contexte :
Je souhaite remonter un site en PHP/SQL pour mon site (CFCCAR.COM, site sur les codes Action Replay pour consoles qui va fêter ses 10 ans cet automne) qui tourne actuellement qu'avec un forum PHPBB depuis que j'ai lacher mon site en html (trop long en mise à jour).

J'ai donc créer une base de donnée avec un table "consoles" contenant :
ID (auto_increment)
Nom de la console
URL de l'icone
URL du logo

Içi pas de soucis, j'ai réussit à faire un formulaire pour injecter des données dans la base.

Ensuite, j'ai un autre table "typesdecodes" contenant :
ID (auto_increment)
ID_consoles (où on doit retrouver l'ID de la table "consoles" pourla console choisie)
Nom du type de codes


Le problème est le suivant :
Sachant que les types de codes dépendent de la console, dans mon formulaire, j'ai fait une liste déroulante pour choisir la console dont le type dépend (donc sélection par Nom de la consol car l'ID est pas parlant si on ne sais pas à quelle console il se rapporte).

Par contre, comme le montre la base "types de codes", je souhaiterais enregistrer non pas le nom de la console mais l'ID de cette console dans ID_consoles

Bref il faudrait quele fait de sélectionner le nom de la console me permette d'enregistrer l'ID correspondant..

Et là je sèche complètement... et je trouve pas par google ou autre de réponse... peut être je n'utilise pas les bons mots clefs..

Je suis à votre disposition pour de plus amples information.. j'espère que vous pourrez m'aidez

jeudi 21 août 2008 à 10:52:12 | Re : Récupérer le champ "ID" d'une table en sélectionnant un autre champ de cette même table.

laurent1024

Bonjour.
Dans ta liste déroulante il suffit de faire
<select ....>
<option value="Ton identifiant de console">le nom de la console</option>
<option value="Ton 2eme identifiant de console">le nom de la 2eme console</option>
Ton identifiant de console => ID de la table "consoles"
le nom de la console => champ "nom de console" dans la table "consoles"

Sur ta page de formulaire, dans la liste il y aura le nom de la console, par contre quand tu enverras le formulaire, tu obtiendras l'identifiant.

Pour récupérér l'ID d'un console, tu peux aussi faire une requete sql du genre select ID from consoles where nomdelasonsole = "la valeur de la console séléectionné";


Cdt


jeudi 21 août 2008 à 11:25:15 | Re : Récupérer le champ "ID" d'une table en sélectionnant un autre champ de cette même table.

stark_2097

Merci pour ta réponse, je commençasi à me dire que j'allais finalement modifier ma base pour enregistrer le nom de la console plutot que son ID même si ça ne me satisfaisais pas....

Voiçi le code que j'utilise pour faire ma liste déroulante depuis ma base de donnée :
$SQL = "SELECT * FROM Consoles";
        $res = mysql_query($SQL);
        while($val=mysql_fetch_array($res)) {
         echo "<option>".$val["Nom"]."</option>\n";
         }
         ?>
        </select>

"Nom" c'est le nom (très recherché) du champ ou sont enregistrés les noms des consoles...
Ta première solution serait de rentrer manuellement les différentes option de la liste déroulantes à la main en code... mais je perdrait alors le bénéfice de l'utilisation d'une base SQL pour gérer ma liste de console..

Par contre je sui intéressé par ta deuxième solution...

comment je peux coupler une fonction insert into avec ta requete select...
Voiçi le bout de code que j'utiliserait pour ajouter mes valeurs dans la base :
 
"$sql = "INSERT INTO Typescodes
VALUES('','$ID_consoles','$Nom',)";

Deux option me viennetnt à l'esprit:
- soit je fait une requete SQL dans le formulaire qui définirait $ID_console comme étant la résultante de ta requete : select ID from consoles where Nom = "$Nom";

- soit on peut imbriquer deux requete et faire un truc du genre :
"$sql = "INSERT INTO Typescodes
VALUES('','select ID from consoles where Nom = "$Nom";','$Nom',)";

A moins qu'une troisième solution permettrait de modifier légèrement ma requete pour la liste déroulante et qui  permettrait d'afficher le nom de la console tout ne lui donnat la "value" ID plutôt que Nom...

Par avance merci de m'excuser pour les énormités SQL que j'ai du écrire ci-dessus (attention aux crises cardiaques)




jeudi 21 août 2008 à 11:45:19 | Re : Récupérer le champ "ID" d'une table en sélectionnant un autre champ de cette même table.

laurent1024

Réponse acceptée !
Re bonjour.
Dans ma première solution il n'y avais rien de manuel, c'est juste que j'ai eu la flemme de faire le code php correspondant ;)
Il suffit de remplacer
        $res = mysql_query($SQL);
        while($val=mysql_fetch_array($res)) {
         echo "<option>".$val["Nom"]."</option>\n";
         }
         ?>
        </select>
par
        $res = mysql_query($SQL);
        while($val=mysql_fetch_array($res)) {
         echo "<option value='". $val["id]. "'.>".$val["Nom"]."</option>\n";
         }
         ?>
        </select>

Sinon la méthode c'est de faire un
select id from consoles where nom="$nom"; (avec $nom qui contient la valeur qui a été choisit quand tu a validé le formulaire.
Verifier qu'il y a 1 résultat à la requete, prendre l'indentifiant $idcorrespondant.
et faire le insert("", $idcorrespondant, ....

Cdt






jeudi 21 août 2008 à 12:18:44 | Re : Récupérer le champ "ID" d'une table en sélectionnant un autre champ de cette même table.

stark_2097

Merci pour ta réponse.

Désolé si pour moi ça paraissait pas évident que ta première réponse était pas manuelle, je ne maitrise pas du tout le SQL ni le PHP, je me débrouille comme je peux en ajoutant des bout de codes par ci, par là..

Je comprend grossièrement le fonctionnement du truc mais pas plus.

Avec ton bout de codes, j'ai eu quelques soucis, il m'affichait une erreur plus loin dans mon formulaire.

J'ai je pense solutionner le truc, il semblerait qu'il y ait eu un oublie de " dans ton code :
$res = mysql_query($SQL);
        while($val=mysql_fetch_array($res)) {
         echo "<option value='". $val["id"]. "'.>".$val["Nom"]."</option>\n";
         }
         ?>
        </select>

J'ai rajouter un " après id qui me semblait manquer et je pense que c'est bon, ma page ne créée plus d'erreur à l'affichage..... mais maintenant c'est à la validation du formulaire que ça coince

Le formulaire se valide mais en regardant ma base, j'ai un 0 dans la case Console_ID au lieu d'un 2 dans mon essai( la console portait le numéro 2).
Je pense que le soucis c'est que le formulaire doit pas attribuer de nom de champ à la console sélectionné.

Par exemple quand je rentre en texte le nom du type de code, j'ai une ligne de ce genre :
<p><label for="Nom" class="left">Nom du type de code :</label>
           <input type="text" name="Nom" class="field" value="" tabindex="1" /></p>

Alors que ma liste déroualnte, jamais elle dit que la console sélectionnée s'appelera "Consoles-ID"
je peux insérer un for="Consoles_ID" comme ça :

echo "<option for="Consoles_ID" value='". $val["id"]. "'.>".$val["Nom"]."</option>\n";


Encore désolé, je suis un vrai boulet.... mais je suis vraiment content de trouver une personne qui veut bien me donner un peu de son temps pour me filer un coup de main

jeudi 21 août 2008 à 12:35:04 | Re : Récupérer le champ "ID" d'une table en sélectionnant un autre champ de cette même table.

stark_2097

Réponse trouvée, en fait je dois mettre un name="nomduchamp" à coté de la fonction "select

Voiçi mon code corrigé et fonctionnel pour ceux qui auront le même soucis :

<select name="Consoles_ID">
        <?
        $db = mysql_connect('localhost', 'login', 'motdepasse');
              mysql_select_db('nomdelabase',$db);

        $SQL = "SELECT * FROM Consoles";
        $res = mysql_query($SQL);
        while($val=mysql_fetch_array($res)) {
         echo "<option value='". $val["ID"]. "'.>".$val["Nom"]."</option>\n";
         }
         ?>
        </select>

Merci pour ce super coup de main, promis je reviens très bientôt avec d'autres questions.... le prochain formulaire devant intégrer deux listes déroulantes alimentée par SQL et dont la deuxième liste est conditionnée par la première  .... tout un programme !


mardi 26 août 2008 à 12:11:03 | Re : Récupérer le champ "ID" d'une table en sélectionnant un autre champ de cette même table.

stark_2097

Me revoilà, j'aurais une petite modification à faire que cette requete..... et je n'y arrive pas...

Je souhaite afficher dans cette liste déroulante un texte par défaut (pas une valeur par défaut) du style :
-- Choisissez une console --

D'après ce que j'ai pu voir, il faudrait mettre ce texte dans cette ligne :
 echo "<option value='". $val["ID"]. "'.>".$val["Nom"]."</option>\n";

Le truc c'est que j 'ai beau la placer n'importe ou, elle s'affiche mais toujours associée avec la première valeur de la liste...


mardi 26 août 2008 à 12:18:10 | Re : Récupérer le champ "ID" d'une table en sélectionnant un autre champ de cette même table.

laurent1024

Ben il suffit de rajouter un echo '<option value="" >choisir une console...</option>';

mardi 26 août 2008 à 12:27:44 | Re : Récupérer le champ "ID" d'une table en sélectionnant un autre champ de cette même table.

stark_2097

Merci, ça marche....... partiellement

Effectivement ça indique bien le texte par défaut dans la liste... mais il s'intercale aussi entre chaque choix de ma liste.
Voiçi le code :
 echo '<option value="" >Choisir une Region</option>';
 echo "<option  value='". $val["ID"]. "'.>".$val["Nom"]."</option>\n";

Ce qui me donne :
Choisir une Région
PAL
Choisir une Région
NTSC-J
Choisir une Région
NTSC-US

La solution doit plus être très loin....


mardi 26 août 2008 à 13:23:01 | Re : Récupérer le champ "ID" d'une table en sélectionnant un autre champ de cette même table.

laurent1024

Réponse acceptée !
il faut mettre le premier echo avant la boucle while pour qu'il n'arraisse qu'une fois.


1 2

Cette discussion est classé dans : table, site, champ, console, id


Répondre à ce message

Sujets en rapport avec ce message

Relation et Foreign Key [ par ripoux ] Bonjour,J'ai une petite question au niveau des relations avec MySQL.Je n'ai pas bien compris le concept, car je travail malheuresuement en général ave Afficher les données d'un champ d'une table d'après l'ID de cette table enregistrée dans une autre table [ par stark_2097 ] Salut,Grâce à votre aide, j'ai pas mal avancé sur mon projet, il me reste juste 1 soucis à règler...Pour simplifier, j'ai une table qui gère des conso modifier un champ [ par brudao ] Bonjour, je n'arrive pas à modifier le type d'un champ d'une bd mysql en php. exemple: je cree une table: $req="CREATE TABLE 'ma_table ( id int(11) no remplir champ formulaire depuis l adresse [ par Antho87 ] Bonjour,Ce que je souhaiterai faire c'est que depuis un site, un lien renvoie sur la page d inscription de mon site et qu'un champ soit pré-rempli grâ Enregistrer plusieurs résultats d'un foreach dans une table [ par cyse ] Bonjour,J'ai réussis à mettre en place des checkbox avec plusieurs choix possibles, et à récupérer les id de chacun des résultats séparés par un espac pb dans le remplissage d'une table de la base de données [ par angeimaginaire ] bjr pour ts,qlqun m aider svp, j'ai un pb au lieu de modification  des données d'une table 'membre' à travers d'un formulaire dans lequel j'ai récupér pb transfert données [ par dimeric ] BonjourJe me permets de poser mon problème car je n 'ai pas la moindre pour commencer a me sortir de la.Je posséde un site (http://dimdod.free.fr) qui import BDD access-mysql [ par cisfra ] Bonjour, je suis entrain de travailler sur l'export de BDD Access vers Mysql en utilisant DSN-less(connexion sans  DSN), le problème c'est que j'arriv Conception de BDD: relation n-n [ par leica69 ] Bonjour,je souhaiterais concevoir une BDD mais avant d'attaquer j'aurais une question à vous poser.En simplifiant, voici ma situation:Je veux mettre e probleme requete en php [ par brudao ] Bonjour, j'ai un problème avec ma requete sql en php. je ne comprends pas trop pourquoi. l'erreur se passe lorsque je veux modifier la va leur par d


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,390 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.