Forum Clubic

Alimenter une liste déroulante

Salut !
Voila je tourne avec EasyPHP 1.7 . Je me suis mis à PHP il ya quelques heures, mais le développement web ne m’est pas inconnu, j’ai déja travaillé avec ASP/Access.
Alors voila, je veux me faire la main avec Php et Mysql, car je vais les étudier à la fac ;).

J’ai une liste déroulante dans un formulaire. Je veux que cette liste déroulante soit alimenter par ma table type de la base t_liens. Jusque la rien de bien méchant. Le formulaire me renvoit vers une page qui va afficher le résultat d’une requete SQL qui comparera la valeur de la liste déroulante avec un champ d’une autre table de la meme base. En d’autres termes, c’est une relation clé primaire / clé étrangère toute bête.

Le problème est que je n’arrive pas à afficher ma liste déroulante !!
Voila mon code :

[cpp]
Sélectionner le type de site web

<?php // on se connecte à notre base $base = mysql_connect ('localhost', 'root'); mysql_select_db ('t_liens', $base); // on remplit la liste déroulante $sql = "SELECT NomType FROM type order by NomType" ; $optio = mysql_query($sql,$base) ; while($row = mysql_fetch_row($optio)) { print "\t\t".($row[0])."\n"; }
mysql_close(); ?>
 </FORM>[/cpp]

Pouvez-vous m’éclairer? L’erreur est au niveau du select …

Déjà, pour faire généré du code HTML (ou du texte) par PHP, il faut utiliser echo (ou print).
[cpp]<?php
Hello World
?>[/cpp]Ne marche pas (car pour le logiciel PHP, “Hello World” est du code PHP, or ça ne l’est pas)
[cpp]<?php
echo “Hello World”;
?>[/cpp]Marche

Ensuiten dans un et ses choix, la partie “dynamique”, c’est les choix (les ).
[cpp]

Choix 1 Choix 2 Choix 3 ... [/cpp] Donc, dans ton while, tu mets : [b]Choix X[/b]

Ce qui donne :[cpp]
Sélectionner le type de site web

<?php // on se connecte à notre base $base = mysql_connect ('localhost', 'root'); mysql_select_db ('t_liens', $base); // on affiche le et son premier élément qui sert à demander explicitement à l'utilisateur de choisir une option de la liste déroulante echo " -- Choississez --"; // Fin de cette partie du code HTML // Requète MySQL pour récupérer les types de site $sql = "SELECT NomType FROM type order by NomType"; $optio = mysql_query($sql,$base) ; while($row = mysql_fetch_row($optio)) // Pour chaque enregistrement de la base { echo "\t\t".($row[0])."\n"; } // Tous nos choix ont été affichés // On continu le code HTML pour fermer le ... echo "
"; mysql_close(); ?> [/cpp]

EDIT: J’ai fais les corrections qu’a fait MansonShadow.

Merci beaucoup !
Très sympa de ta part !
Je teste cela de suite!

j’ai une erreur au niveau du echo "
il me dit cela : Parse error: parse error, unexpected T_STRING, expecting ‘,’ or ‘;’ in c:\siteweb\rechercheliens\accueil.php on line 32

pourtant ca devrai le faire? j’ai essayé de placer un " et de tester plusieurs trucs mais rien n’y fait!

à la place de :


 echo "</select>
      <br>
      <input type = "submit" value = "Pour choisir">

mets


 echo "</select>
     <br>
     <input type = 'submit' value = 'Pour choisir'>";

C’est ma faute, j’ai oublié de corriger la partie après le MySQL…

Fait comme MansonShadow a dit, mais si tu veux absolument des " dans ton code HTML final (celui reçu par le navigateur), mets des \ devant les " qui ne servent pas au PHP mais à l’HTML.
[cpp]echo “Hello ‘chour’”; // Affiche : Hello ‘chour’
echo “Hello “chour””; // Affiche : Hello “chour”[/cpp]

Merci merci !
Voila mon code après vos modifs :

[cpp]

<?php // on se connecte à notre base $base = mysql_connect ('localhost', 'root') or die ("Impossible de se connecter"); echo "Connexion réussie sur le serveur Apache MySql"; echo "
"; mysql_select_db ('web', $base) or die ("Impossible de connecter la bd web"); echo "Connexion réussie a la db"; echo "
"; // on affiche le et son premier élément qui sert à demander explicitement à l'utilisateur de choisir une option de la liste déroulante echo "Sélectionner le type de site web
"; echo " --Choississez-- "; // Fin de cette partie du code HTML // Requète MySQL pour récupérer les types de site $sql = "SELECT NomType FROM type order by NomType"; $optio = mysql_query($sql,$base); while($row = mysql_fetch_row($optio)) // Pour chaque enregistrement de la base { echo "\t\t".($row[0])."\n"; } // On continu le code HTML pour fermer le echo " ;" mysql_close($base); ?>
 </FORM>[/cpp]

Apparement ma database n’a pas été sauvegardé, et donc je dois la refaire x) !!

J’ai une erreur au niveau du mysql_close($base). Peut etre est-ce au niveau de la syntaxe?
Je continue mes recherches.
Merci encore!

Quand je fais un aperçu de mon code (j’utilise Script Edit), des commentaires apparaissent, mais pas ce qui précèdent les des commentaires.
Bizarr

C’est bon j’ai trouvé !!
j’ai inversé le ; avec le "
merci encore!

[cpp]<?php
$base = mysql_connect (‘localhost’, ‘root’);
mysql_select_db (‘web’, $base);

 $recup = $_POST['liste'];
 $sql = "SELECT NomLien, AdresseLien FROM liens WHERE TypeLien = $recup order by NomLien";
 $result = mysql_query($sql,$base);
 
 if ($result > 0)
 {
  while($row = mysql_fetch_array($result))
  {
   echo $row["NomLien"] . $row["AdresseLien"] . "\n";
  }
 }
 mysql_close($base);

?>[/cpp]

Pour afficher le résultat de ma requete dans un tableau, mon code est bon?

Il faut un peut securisé, contre les injections SQL, ton $_POST[…] est directement ajouté a la requete sans aucun traitement.

et pour affiché dans un tableau , sans les balise

, ca va pas marché

Ok je comprend. En d’autres termes, tu veux que je teste la valeur de $recup . Pour le tableau j’ai pigé aussi. Je vais mettre ca en oeuvre. Merci!

Tu peut la testé comme ca :
[cpp]if( isset( $_POST[‘liste’] ) ) {
$recup = mysql_real_escape_string( $_POST[‘liste’] );
// requete …
} else { exit; }[/cpp]

oki merci !
cela tourne, mais je galere a l’affichage du resultat de la requete.