begin process at 2012 05 26 23:38:44
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

MySQL

 > 

Requêtes

 > 

probleme avec SELECT et liste déroulante


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

probleme avec SELECT et liste déroulante

vendredi 7 septembre 2007 à 19:36:33 | probleme avec SELECT et liste déroulante

munchie

bonjour à tous,

Voila j'ai un petit problème avec ma requete...
Je veux récupérer les champs d'une table mais en évitant les doubles. et lorsque l'on clic sur  une valeur de la liste ca devrait lister les resultats correspondants au champs.
je m'explique...
Voici la requete:
$query="SELECT DISTINCT ville_agenda
                FROM t_agenda";
Donc avec cela j'obtient les différents nom des villes dans la liste déroulante sans doublon. Donc c ok! mais il est sensé lister toutes les expositions qui existe pour une ville.mais il ne récupère q'un seul resultat. Il faudrait pouvoir lier l'ID mais avec DISTINCT pas possible....
Comment faire pour qu'il me liste toutes les expositions existantes pour la ville selectionnée???

merci à tous!!!
je débute en php donc soyez indulgent ;)
samedi 8 septembre 2007 à 22:33:39 | Re : probleme avec SELECT et liste déroulante

nhervagault

Administrateur CodeS-SourceS
salut, Peux-tu mettre un exemple plus clair. Exemple la structure de tes 3 tables (il me semble que tu en as 3) Et le resultat de ta requete. Si j'imagime c que tu cherches c'est une requete du style que tu veux? select agenda + ' - ' + ville from ville inner join agenda_ville on agenda_ville.idville = ville.idvillle inner join agenda on agenda_ville.idagenda = agenda.idagenda Et la tu as les agenda de toutes les villes. Je me trompes peut etre mais sans plus de detail c'est difficile de repondre? Voila
dimanche 9 septembre 2007 à 20:13:10 | Re : probleme avec SELECT et liste déroulante

munchie

En fait, c'est plus simple que ca

je n'ai qu'une seule table dont voici la structure:

CREATE TABLE `t_agenda` (
  `id_agenda` int(11) NOT NULL auto_increment,
  `evt_agenda` varchar(255) character set latin1 collate latin1_general_cs NOT NULL,
  `net_agenda` varchar(255) character set latin1 collate latin1_general_cs NOT NULL,
  `adresse_agenda` varchar(255) character set latin1 collate latin1_general_cs NOT NULL,
  `ouver_agenda` varchar(255) character set latin1 collate latin1_general_cs NOT NULL,
  `plan_agenda` varchar(255) character set latin1 collate latin1_general_cs NOT NULL,
  `tel_agenda` varchar(50) character set latin1 collate latin1_general_cs NOT NULL,
  `ville_agenda` varchar(50) NOT NULL,
  `CP_agenda` int(11) NOT NULL,
  `dat_agenda` date NOT NULL,
  `dat_fin_agenda` date NOT NULL,
  PRIMARY KEY  (`id_agenda`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=16 ;

Je récupère le champ "ville_agenda" pour lister les villes dans une liste déroulante. Par exemple 3expositions différentes peuvent avoir lieu à Bruxelles.
Dans ma liste déroulante , je veux que "Bruxelles" apparaissent une seule fois. et lorsque je desire afficher les expositions qui ont lieu à Bruxelles , je veux qu'il me liste les 3 expositions existantes.
Problème : quand je fais ceci :

$query2="SELECT *
        FROM t_agenda
        ORDER BY ville_agenda
        ";
Il affiche "Bruxelles" 3 fois dans ma liste déroulante.(correspondant aux 3expositions)
Mais si je fais ceci:

$query2="SELECT DISTINCT ville_agenda
        FROM t_agenda
        ORDER BY ville_agenda
        ";
là, "Bruxelles" apparait une seule fois mais il n'y a plus d'ID et donc si je désire afficher les expositions correspondantes a "Bruxelles" il me mets ceci:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\Tools\Wamp\www\diminewtemp\include\agenda2.php on line 138

J'ai un peu peur de pas être très clair... donc voici l'ensemble de mon code...

$query2="SELECT *
        FROM t_agenda
        ORDER BY ville_agenda";
$result2=mysql_query($query2);

echo '<div id="recherch_agenda">
      <form method="GET" action="index.php?cat=9">
      <select name="choix">';
echo '<option value="select_tt">Tout afficher</option>';
      while ($row2 = mysql_fetch_array($result2)){
        //if($row2['ville_agenda']>1)
          echo '<option value="'.$row2['id_agenda'].'">'.$row2['ville_agenda'].'</option>';
  }
  echo '</select>
        <input type="submit" value="Afficher"/>
        <input type="hidden" value="9" name="cat"/>
        </form>
        </div>';

if (!isset($_GET['choix'])){
    $sql="SELECT *
          FROM t_agenda
          ORDER BY dat_agenda";         
      }
      elseif(($_GET['choix'])=="select_tt"){
      $sql="SELECT *
          FROM t_agenda
          ORDER BY dat_agenda";     
      }
      else{
    $sql="SELECT *
          FROM t_agenda
          WHERE id_agenda=".$_GET['choix']."
          ORDER BY dat_agenda";
      }
 
$sql_result=mysql_query($sql);

echo '<table id="table_agenda10" cellspacing="5"><tr>
      <th>Exposition</th>
      <th>Date</th>
      <th>Lieu</th>
      <th>Infos?</th></tr>
      ';
$i=0;
while($row=mysql_fetch_array($sql_result)){
$bgcolor = ($i++ & 1) ? "white" : "#c6c6c6";   
    echo '<tr bgcolor='.$bgcolor.'><td><b class="agenda10">'.$row['evt_agenda'].'</b></td>
          <td><b class="agenda10">Du '.strftime("%d/%m/%y", strtotime($row['dat_agenda'])).' au '.strftime("%d/%m/%y", strtotime($row['dat_fin_agenda'])).'</b></td>
          <td>'.$row['ville_agenda'].'</td>
          <td><a href="index.php?cat=9&amp;info='.$row['id_agenda'].'" class="lien_info10">Plus d\'infos</a></td></tr>';
}
echo '</table>';
}
  }
Voilou.... j'espère avoir été assez clair...
Merci d'avance!!!
dimanche 9 septembre 2007 à 21:50:18 | Re : probleme avec SELECT et liste déroulante

nhervagault

Administrateur CodeS-SourceS
Salut, J'ai un peu de mal à suivre le raisonnement. C'est un probleme de conception que tu as. Normalement, il faut une table ville et une table agenda et la table agenda a une cle etrangere sur la table ville. Sinon je vois mal comment tu ajoute de nouvelles villes. Et une ville a une seule cle si tu utilse 2 tables. Bon courage.
dimanche 9 septembre 2007 à 22:31:51 | Re : probleme avec SELECT et liste déroulante

munchie

merci pour ta réponse...
mais lorsque j'ajoute un évènement , j'ai le nom de l'expo, les dates , l'adresse, la ville, ect... et la liste déroulante me sert d'outil de recherche (par ville) qui  permet d'afficher toutes les expos qui ont lieu à bruxelles par exemple... 
je ne comprend pas pourquoi (dans ce cas ci) je devrais faire 2tables pour encoder un évènement... mais si c'est la seule solution... alors...j'vai y regarder...
lundi 10 septembre 2007 à 10:27:19 | Re : probleme avec SELECT et liste déroulante

nhervagault

Administrateur CodeS-SourceS
Ok,

J'ai pigé ton truc, dans la construction  de ta liste dans il faut utilisé le nom de ta ville et non l'ID de ta ligne d'agenda, sinon tu auras toujours qu'une seule ligne car id_agenda est normalement unique c'est logique.

Bon courage

echo '<option value="'.$row2['ville_agenda'].'">'.$row2['ville_agenda'].'</option>';

Apres est_ce que les espaces et accents sur les noms de ville, fonctionne normalement OUI.
Mais c'est mieux avec deux tables.

Voila
mardi 11 septembre 2007 à 12:13:53 | Re : probleme avec SELECT et liste déroulante

munchie

encore merci pour ta réponse!
voila, j'ai testé ta proposition et malheureusement  il me met une erreur sur cette ligne:

while($row=mysql_fetch_array($sql_result)){

alors, j'ai testé également avec 2 tables. celle dont je t'ai mis la structure plus haut...(t_agenda) et une nouvelle qui reprend le nom des villes.(t_ville_expo) Pour relier les 2 j'ai ajouté un champs "num_ville" dans ma première table (t_agenda) qui correspond donc a l'ID de la ville (de la deuxième table) .
J'ai fait la requete :
$sql="SELECT *
          FROM t_agenda
          WHERE num_ville=".$_GET['choix']."
          ";
      }

et tout fonctionne parfaitement!!! Donc "bruxelles apparait une fois dans la liste et quand j'affiche les resultats pour "bxl" il me liste les 3expos existantes...

mais voila, maintenant se pose un autre probleme... il ya une partie administration dans mon site. Et lorsqu'on va ajouter une nouvelle exposition dans l'agenda, comment faire pour remplir le "num_ville" de la table(t_agenda). Comment faire pour qu'il fasse la correspondance entre la nouvelle ville qu'il encode et un "num_ville".
Aieaieaie...dur dur pour un debutant tout ca!....;)
peux-tu me donner des pistes? J'ai encore de gros problème de logique je crois...

merci encore pour t'aide!
mardi 11 septembre 2007 à 21:48:38 | Re : probleme avec SELECT et liste déroulante

nhervagault

Administrateur CodeS-SourceS
Normalement,
Tu inseres dans la tabole ville,
Tu fais uen requete pour recuperer le dernier index inserer, c'es tun  truc du genere
SELECT LAST_INSERT_ID() FROM table

Et apres tu inseres dans ta table agenda ton evenement.

Et apres tu peux mettre les deux insertions dans une transaction.



Cette discussion est classée dans : probleme, liste, select, déroulante, ville


Répondre à ce message

Sujets en rapport avec ce message

liste déroulante [ par Axelles ] Ma liste déroulante est liée à un groupe d'option. Comment je pourrais faire pour obliger l'utilisateur à saisir la donnée dans ma liste déroulante sa PROBLEME REQUETE SELECT [ par brute ] Bonjour,J'ai un probleme de REQUETE SELECT avec ORacle  .J4ai une table avec 4 colonnes, ID, FACE, PARAM, VALEURl'ID prend les valeurs (1 ou 2 ou 3 ou requete imbrique <> all [ par JulienOrion666 ] Bonjour, Je voudrais selectioner toute les personne ne faisait pas partie d'une liste retourne par une requete (le contraire de IN en sorte toutes le SELECT rapatriement multiple de données suivant liste id à virgule [ par alphanono ] Désolé pour ce titre foireux ... j'ai essayé de faire court pour un problème que j'ai du mal à exprimer simplement.Je vais prendre un exemple fictif.M Comment insérer une variable d'une liste déroulante dans une instruction SQL [ par nicodgb ] Bonjour à tous,Je suis débutant et j'ai un petit problème sur Access 2007.J'ai un formulaire avec une liste déroulante et je voudrais faire référence Probleme de GROUP BY [ par etu54 ] Bonjour et merci de prendre ces quelques minutes pour lire le post, Je débute dans le Access et j'ai un probleme qui me fait perdre la tete Voila j'a liste déroulante ACCESS pas de sélection possible dans la liste [ par chamttt ] Bonjour à tous, Je débute et ai un petit problème avec une liste déroulante : J'ai bien réussi à y intégrer les données que je voulais y voir appar problème résultat requête select [ par slayer07 ] Bonjour, je viens de faire une requête select sur 2 tables. Le souci que j'ai est que lors de l'exécution de la requête,il m'apparait 2 résultats avec liste déroulante formulaire [ par audreysorelle ] Bonjour, J'ai une liste déroulante alimenter par une table prenons par exemple la table famille ou dans ma liste il y a tout les noms de famille.. Je probleme repetition requette sql [ par profiter ] bonjour, j'ai 2 tables : societe, ville avec le code_ville est une cle etrangere de la table ville dans la table societe alors si je veux afficher da


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 5,366 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales