stark_2097
Messages postés28Date d'inscriptionsamedi 3 décembre 2005StatutMembreDernière intervention19 septembre 2008
-
20 août 2008 à 21:12
stark_2097
Messages postés28Date d'inscriptionsamedi 3 décembre 2005StatutMembreDernière intervention19 septembre 2008
-
26 août 2008 à 13:31
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
cs_laurent1024
Messages postés987Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention30 août 201225 21 août 2008 à 11:45
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, ....
cs_laurent1024
Messages postés987Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention30 août 201225 21 août 2008 à 10:52
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é";
stark_2097
Messages postés28Date d'inscriptionsamedi 3 décembre 2005StatutMembreDernière intervention19 septembre 2008 21 août 2008 à 11:25
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)
Vous n’avez pas trouvé la réponse que vous recherchez ?
stark_2097
Messages postés28Date d'inscriptionsamedi 3 décembre 2005StatutMembreDernière intervention19 septembre 2008 21 août 2008 à 12:18
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 :
<label for ="Nom" class="left">Nom du type de code :</label>
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 :
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
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 !
stark_2097
Messages postés28Date d'inscriptionsamedi 3 décembre 2005StatutMembreDernière intervention19 septembre 2008 26 août 2008 à 12:27
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
stark_2097
Messages postés28Date d'inscriptionsamedi 3 décembre 2005StatutMembreDernière intervention19 septembre 2008 26 août 2008 à 13:31
Merci c'est impeccable.....
Tu es mon sauveur.
Je vais pouvoir passer au problème suivant, je referais un autre post car celà ne concerne pas le même problème, ça concerne mes liste déroulantes conditionnelles, elles marchent bien mais j'arrive pas à définir le nom de la valeur pour la seconde liste, ça m'enregistre des 0 dans la base de données au lieu des ID.
Merci encore et peut être à plus tard dan mon prochain topics