menu deroulant et requete

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : menu deroulant et requete

par riccardo » 10 mai 2005, 21:14

Merci je vais étudier le code

par donny » 10 mai 2005, 21:10

le voila
<?php 
include("connexion.inc.php"); 
//affichage pour la ville 
$sql = 'SELECT * FROM ville order by id_ville;'; 

$result = pg_query($sql) or die( 'Erreur' ); 



$nb = pg_num_rows($result); 

echo '<h1> nombre '.$nb.'</h1>'; 
//echo '<select name="ville">'; 
echo "<select name=\"ville\" onChange=\"location.href='" . $_SERVER['PHP_SELF'] . "?idVille=' + this.value\">"; 
if ( $nb==0 ) { 
echo '<option>Aucune ville</option>'; 
  } else { 
    echo '<option>Ville</option>'; 
   while ( $list = pg_fetch_array( $result ) ) { 
echo '<option value="'.$list['id_ville'].'">'.$list['nom_ville'].'</option>'; 
} 
} 
echo '</select> '; 
$idville=@$_GET['idVille']; 

//affichage pour les bureaux 
$sql1 = 'SELECT * FROM bureau order by id_bureau;'; 

$result1 = pg_query($sql1) or die( 'Erreur' ); 



$nb = pg_num_rows($result1); 

echo '<h1> nombre '.$nb.'</h1>'; 
//echo '<select name="bureau">'; 
echo "<select name=\"bureau\" onChange=\"location.href='" . $_SERVER['PHP_SELF'] . "?idbureau=' + this.value\">"; 
if ( $nb==0 ) { 
echo '<option>Aucun bureau</option>'; 
  } else { 
    echo '<option>bureau</option>'; 
   while ( $list1 = pg_fetch_array( $result1 ) ) { 
echo '<option value="'.$list1['id_bureau'].'">'.$list1['nom_bureau'].'</option>'; 
} 
} 
echo '</select> '; 
$idbureau=@$_GET['idbureau']; 

?> 
<br> 
<br> 
<h4>Liste des personne<h4> 
<? 
//affichage du tableau 
if($idville!=""){ 
$sql='select * from personne where ville='.$idville.' order by nom_perso'; 
$result=pg_query($sql); 
echo '<table  width="80%" border="1" bgcolor="silver">'; 
while($list=pg_fetch_array($result)) 
echo '<tr onmouseover="this.style.backgroundColor=\'yellow\'" onmouseout="this.style.backgroundColor=\'silver\'" style="background-color: silver"><td>'.$list['id_perso'].'</td><td>'.$list['nom_perso'].'</td><td>'.$list['prenom_perso'].'</td><td>'.$list['ville'].'</td><td>'.$list['bureau'].'</td></tr>'; 
echo '</table>'; 
}elseif($idbureau!=""){ 

$sql1='select * from personne where bureau='.$idbureau.' order by nom_perso'; 
$result=pg_query($sql1); 
echo '<table  width="80%" border="1" bgcolor="silver">'; 
while($list=pg_fetch_array($result)) 
echo '<tr onmouseover="this.style.backgroundColor=\'yellow\'" onmouseout="this.style.backgroundColor=\'silver\'" style="background-color: silver"><td>'.$list['id_perso'].'</td><td>'.$list['nom_perso'].'</td><td>'.$list['prenom_perso'].'</td><td>'.$list['ville'].'</td><td>'.$list['bureau'].'</td></tr>'; 
echo '</table>'; 


} 

?> 

par riccardo » 10 mai 2005, 19:32

Si très clair, c'est exactement se qu'il me faut, peux-tu me fournir ton source final pour m'aider.

Merci

par donny » 10 mai 2005, 19:06

en faite t alimente une liste deroulante avec une de tes tables et lorsque tu choisi un element de ta liste bin sa passe un parametre dans l url et tu recupere se parametre pour realiser une deuxiement requete sur une autre table(les deux table sont lié entre elle) et t affiche le resultat de cette requete dans un tableau et tout sa tout en restant sur la meme page
je sais pas si j ai été clair

par riccardo » 10 mai 2005, 18:58

Donny, peux-tu m'expliquer le fonctionnement du ton code plus haut (fonctionnment à l'écran de l'utilisateur), des parties pourraient peut-etre m'intéréssées.

Merci

par donny » 10 mai 2005, 14:28

RESOLU

par donny » 08 mai 2005, 19:07

en faite je me suis mal fait comprendre je voulais dire dans le sens de reutiliser du code comme cela dans la meme page ,je sais pas si je me suis fait comprendre.
Et je le tester il fonctionne il n y a pas de soucis la dessus.

par Cyrano » 08 mai 2005, 12:52

donny, comment veux-tu qu'on te dise si c'est bon: la base et le serveur de base de données sont sur ta machine, on ne peut pas tester. Donc on pourrait te dire "C'est bon" ou "C'est pas bon pour x raison", mais c'est d'abord à toi de le tester avec ton système et tu seras le premier à savoir si c'est bon ou pas pour la simple raison que tu sais ce qu'il y a dans ta base, tu sais quel résultats tu dois avoir avec ton programme: nous, on ne peut pas le deviner simplement en voyant une page de code.

Donc essaye ton script, fais-toi un jeu d'essai dans ta base, comme ça, tu sauras que pour telle requête, tu devras obtenir tel résultat et si ça ne fonctionne pas, là tu pourras venir nous voir et exposer ton problème.

par donny » 08 mai 2005, 12:38

en faite j ai une table personne,bureau et ville.
Et une personne travail dans un bureau et appartient à une ville.
donc j ai fait comme cela est ce bon ?
<?php 
 include("connexion.inc.php");
//affichage pour la ville
 $sql = 'SELECT * FROM ville order by id_ville;'; 

 $result = pg_query($sql) or die( 'Erreur' );
 

 
 $nb = pg_num_rows($result);

 echo '<h1> nombre '.$nb.'</h1>';
//echo '<select name="ville">';
echo "<select name=\"ville\" onChange=\"location.href='" . $_SERVER['PHP_SELF'] . "?idVille=' + this.value\">"; 
 if ( $nb==0 ) { 
echo '<option>Aucune ville</option>';
  } else {
	echo '<option>Ville</option>';
   while ( $list = pg_fetch_array( $result ) ) { 
 echo '<option value="'.$list['id_ville'].'">'.$list['nom_ville'].'</option>'; 
 } 
 } 
echo '</select> ';
 $idville=@$_GET['idVille'];

//affichage pour les bureaux
$sql1 = 'SELECT * FROM bureau order by id_bureau;'; 

 $result1 = pg_query($sql1) or die( 'Erreur' );
 

 
 $nb = pg_num_rows($result1);

 echo '<h1> nombre '.$nb.'</h1>';
//echo '<select name="bureau">';
echo "<select name=\"bureau\" onChange=\"location.href='" . $_SERVER['PHP_SELF'] . "?idbureau=' + this.value\">"; 
 if ( $nb==0 ) { 
echo '<option>Aucun bureau</option>';
  } else {
	echo '<option>bureau</option>';
   while ( $list1 = pg_fetch_array( $result1 ) ) { 
 echo '<option value="'.$list1['id_bureau'].'">'.$list1['nom_bureau'].'</option>'; 
 } 
 } 
echo '</select> ';
 $idbureau=@$_GET['idbureau'];

?>
<br>
<br>
<h4>Liste des personne<h4>
<?
//affichage du tableau
if($idville!=""){
$sql='select * from personne where ville='.$idville.' order by nom_perso';
$result=pg_query($sql);
echo '<table  width="80%" border="1" bgcolor="silver">';
while($list=pg_fetch_array($result))
echo '<tr onmouseover="this.style.backgroundColor=\'yellow\'" onmouseout="this.style.backgroundColor=\'silver\'" style="background-color: silver"><td>'.$list['id_perso'].'</td><td>'.$list['nom_perso'].'</td><td>'.$list['prenom_perso'].'</td><td>'.$list['ville'].'</td><td>'.$list['bureau'].'</td></tr>'; 
echo '</table>';
}elseif($idbureau!=""){

$sql1='select * from personne where bureau='.$idbureau.' order by nom_perso';
$result=pg_query($sql1);
echo '<table  width="80%" border="1" bgcolor="silver">';
while($list=pg_fetch_array($result))
echo '<tr onmouseover="this.style.backgroundColor=\'yellow\'" onmouseout="this.style.backgroundColor=\'silver\'" style="background-color: silver"><td>'.$list['id_perso'].'</td><td>'.$list['nom_perso'].'</td><td>'.$list['prenom_perso'].'</td><td>'.$list['ville'].'</td><td>'.$list['bureau'].'</td></tr>'; 
echo '</table>';


}

?>

par daoud » 07 mai 2005, 13:21

Salut,

pour les bureaux ça donnerait :
- tu testes si le paramètre ville existe
- si oui alors tu génère ta liste avec comme option :
echo "<select name=\"bureau\" onChange=\"location.href='" . $_SERVER['PHP_SELF'] . "?idBureau=' + this.value + '&idVille=" . $_GET['ville'] . "'\">"; 
a+
daoud

par donny » 07 mai 2005, 12:47

et pour rajouter plusieurs paramatre dans l url je n ai qu a rajouter un + apres ce code

[code]$_SERVER['PHP_SELF'] . "?idVille=' + this.value[/code]

par daoud » 07 mai 2005, 12:36

Bon j'ai compris ton premier problème. Effectivement pour la première ville il n'y a pas d'évènement onChange qui est généré puisque tu restes sur le même élément, donc ta solution est la bonne ;)
Ton problème de faire cela en cascade va être de se rappeler ce qui a été choisi à chaque fois. Par exemple tu choisis une ville, la page se recharge avec une liste de bureau. Tu choisis un bureau, mais si tu appliques simplement la même technique, tu ne te rappeleras plus quelle ville a été choisie...
Il peut y avoir a mon avis plusieurs solutions, a toi de les imaginer, mais voici quand même des idées :
- les variables de session
- ajouter à ton javascript pour le bureau l'id de la ville sélectionnée et donc en paramètre tu auras le bureau et la ville

Bon courage :)
daoud

par donny » 07 mai 2005, 12:20

en faite j ai ruser je sais pas si c est bien mais j ai rajouter une ligne dans le if qui n affiche que le titre de la liste deroulante et sa fonctionne
echo "<select name=\"ville\" onChange=\"location.href='" . $_SERVER['PHP_SELF'] . "?idVille=' + this.value\">"; 
 if ( $nb==0 ) { 
echo '<option>Aucune ville</option>';
  } else {
[color=red] 	echo '<option>Ville</option>';[/color]
   while ( $list = pg_fetch_array( $result ) ) { 
 echo '<option value="'.$list['id_ville'].'">'.$list['nom_ville'].'</option>'; 
 } 
 } 
echo '</select> ';


et tu vois ma table bureau est relié à une table personne et je voudrais faire cela aussi reprendre le numero de bureau et faire une requete avec dans la table personne et afficher le nombre de personne de ce bureau dans une liste deroulante .
C est possible on n est pas limité ???

par daoud » 07 mai 2005, 11:58

Salut !

Je n'ai pas trop de temps pour regarder précisément, cependant voici ma réflexion :
Déjà, ton test if($nb = 0) doit s'écrire $nb==0
Ensuite, je te conseille d'affciher la source du de la page html qui est générée et de regarder ce qui est inscrit, notament en ce qui concerne cette option qui ne te renvoie rien. Eventuellement tu peux afficher le code ici.
Utilises s'il te plait la balise
 et n'oublie pas d'activer le bbcode avant de valider pour rendre ton message plus lisible

Bon courage :),
a+
daoud

par donny » 07 mai 2005, 11:32

merci du coup de pouce donc je l ai fait et sa fonctionne mais pas à 100%
en faite dans la premiere liste il affiche bien toutes les villes mais et quand je clique sur une ville j ai bien idville dans l url mais pas pour la premiere, il refuse de m afficher dans l url l id de la premiere alors que sa fonctionne bien pour toute les villes et je ne comprends pas??
voila le code

[code] <?php
include("connexion.inc.php");

$sql = 'SELECT * FROM ville order by id_ville;';

$result = pg_query($sql) or die( 'Erreur' );



$nb = pg_num_rows($result);

echo '<h1> nombre '.$nb.'</h1>';
//echo '<select name="ville">';
echo "<select name=\"ville\" onChange=\"location.href='" . $_SERVER['PHP_SELF'] . "?idVille=' + this.value\">";
if ( $nb=0 ) {
echo '<option>Aucune ville</option>';
} else {
while ( $list = pg_fetch_array( $result ) ) {
echo '<option value="'.$list['id_ville'].'">'.$list['nom_ville'].'</option>';
}
}
echo '</select> ';
$idville=$_GET['idVille'];
echo '<h2>'.$idville.'</h2>';

$sql = 'SELECT * FROM bureau where ville='.$idville.';';

$result = pg_query($sql) or die( 'Erreur' );



$nb = pg_num_rows($result);

echo '<h1> nombre '.$nb.'</h1>';
echo '<select name="bureau">';
//echo "<select name=\"ville\" onChange=\"location.href='" . $_SERVER['PHP_SELF'] . "?idVille=' + this.value\">";
if ( $nb=0 ) {
echo '<option>Aucun bureau</option>';
} else {
while ( $list = pg_fetch_array( $result ) ) {
echo '<option value="'.$list['id_bureau'].'">'.$list['nom_bureau'].'</option>';
}
}
echo '</select> ';

?> [/code]