Version complète: sur le forum Webmaster Hub : Affichage du contenu d'une table
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
doomer2
Bonjour,

Je suis en train de finaliser un site en Xhtml strict et me voilà confronter à un soucis pour afficher des données d'une table sql via une liste déroulante. Avant sans que la page soit en xhtml strict cela fonctionnait.

J'arrive à afficher dans ma liste déroulante le contenu de ma table sans probléme smile.gif smile.gif mais je n'arrive pas lorsque je choisis dans la liste un item à afficher les données correspondantes. Je précise que la premiere selection affiche bien les données de la table mais c'est lorsque on utilise la liste deroulante rien ne se produit.

J'ai un message d'erreur :
CODE
Erreur : client is not defined


Voici le fichier en cause, j'utilise une fonction javascript pour rediriger mais là cela ne fonctionne plus, peut être existe t'il une autre façon :

CODE
<script type="text/javascript">
function ChangeClient(){
if (client.sel_client.options[client.sel_client.selectedIndex].value!="")
document.location.href="infos.php?Clecli="+client.sel_client.options[client.sel_client.selectedIndex].value;
}
</script>

<form method="post" action="fichecli.php?num=$num" name="client" id="client">
<h3> Commune de <?php print $commune;   ?> (<?php print $Codepost;?>)</h3>
<? echo '<img src="'.$photo.'" width="292" height="188" border="1"/>'?>
<p>Le Maire<?php print $Nom_prenom;   ?></p>
<p>T&eacute;l&eacute;phone:<?php print $TelCli;   ?></p>
<p>Fax : <?php print $FaxCli;   ?></p>
<p>Email : <?php echo '<a href="mailto:'.$EmailCli.'"> '.$EmailCli.' </a>' ?></p>
<p>Site Internet :<? echo '<a href="'.$SiteCli.'" target="_blank"> '.$SiteCli.'  </a>'   ?></p>
<p>Les permanences:<?php print $Permcli;   ?></p>
<p>Cherchez la Mairie de :</p>
<p><select name="sel_client" id="sel_client" onchange="ChangeClient()">
<?php
while($data_allclient=mysql_fetch_array($req_allclient)){
if ($data_allclient[Clecli]==$Clecli){
print ("<option selected value='$data_allclient[Clecli]'>".$data_allclient[commune]." </option>");
}else{
print ("<option value='$data_allclient[Clecli]'>".$data_allclient[commune]." </option>");
}}  ?></select></p></form>
<?php mysql_close();?>
doomer2
V que j'ai eu peu de réponse et que j'ai effectué de nombreuses recherche sans succés. Je souhaiterais savoir si il existait un tutorial expliquant à partir d'une liste deroulante afficher le contenu d'une table.

Je 'explique j'ai une table comme celle-ci :
CODE
CREATE TABLE commune (
 Clecli tinyint(4) NOT NULL auto_increment,
 Nomcli varchar(50) NOT NULL default '',
 Precli text NOT NULL,
 Adresse text NOT NULL,
 Codepost int(5) NOT NULL default '0',
 commune text NOT NULL,
 Permcli varchar(255) NOT NULL default '',
 TelCli varchar(10) NOT NULL default '',
 FaxCli varchar(10) default NULL,
 EmailCli varchar(35) NOT NULL default '',
 SiteCli varchar(150) NOT NULL default '',
 photo varchar(250) default NULL,
 carte varchar(250) default NULL,
 adsl varchar(25) default 'pas disponible',
 logo varchar(250) default 'logo/do',
 fleur varchar(50) default NULL,
 photomaire varchar(250) default NULL,
 PRIMARY KEY  (Clecli,Nomcli)
) TYPE=MyISAM COMMENT='Table Commune';


Et je souhaiterais à partir d'une liste déroulante qui affiche le nom de la commune, on arrive à afficher sur les données de la commune sélectionner dans la liste déroulante.

Si quelqu'un peut m'aiguiller ?

Merci et j'attends avec impatience vos contributions.
sarc
Tu veux en fait que dès qu'on clique sur le nom de la commune, les infos s'affichent à côté ? Bref, tu veux une redirection automatique dès qu'on appuie sur la commune ?

Donne l'url également, ça peut aider à visualiser le problème...
zedzed
Personnellement je choisirais la solution de poster le formulaire plutôt qu'utiliser "document.location.href".

Sur le select tu mets : onchange="java script:document.client.submit();"

Et ensuite pour l'affichage des informations spécifique à la commune:
If ($_POST['sel_client'] == ""){
echo "aucune commune selectionnée";
}else{
//recupération des informations à partir du numéro de commune
//affichage des informations
}

Ensuite tu affiche ton select.


J'espere être clair ...
doomer2
Bonsoir,


Tout à fait Sarc c'est cela mon probléme.

Voici le lien demandé :

Page de test avec liste deroulante

J'ai essayé de nombreuses choses mais en vain. Le fait de faire du XHTML strict pose quelques soucis de compatibilité de mes anciens scripts.

Une aide seriat interessante.

Merci
sarc
Moi j'avais ça :
CODE
<select name='page' onChange='if (this.selectedIndex!=0) window.location.href = this.options[this.selectedIndex].value;'>


Il faut mettre en valeur de tes <options> l'url de la page en question...
Jte garantis rien, mais chez moi ça marchait !
doomer2
As tu un modéle de script pour que je puisse comparer par rapport à ce que j'ai fait ?

Merci
sarc
J'ai pas grand chose, j'ai juste le fichier enregistré sur mon disque, je ne l'utilise plus pour mes sites (javascript désactivé => pas d'accès aux autres pages...)
mais mon code, c'était ça :

CODE
echo "<div align=center><select name='page' onChange='if (this.selectedIndex!=0) window.location.href = this.options[this.selectedIndex].value;'>\n
<option SELECTED>allez voir une autre catégorie</option>\n";
while ($ligne = mysql_fetch_array($res))
{
    extract($ligne);
    echo "<option value=page.php?page=$id'>$nom</option>\n";
}
echo "</select></div>";


NDSarc : pas besoin de <form> pour faire ça !!
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.