Page 1 sur 2

requete en fonction de menu deroulant

Posté : 16 mai 2005, 13:03
par donny
salut,

Je dispose d un menu deroulant alimenter à partir de ma base de donné et je souhaite lorsque je choisi un element dans ce menu executé une requete en fonction de cet element
mon code a l air bon mais pourtant sa bogue
html> 
<head> 
</head> 
<body> 

<?php 
// on se connecte à MySQL 
$db = mysql_connect('localhost', 'root', ''); 

// on sélectionne la base 
mysql_select_db('conso',$db); 

    
if (isset($_POST['modif'])) { 
        // par défaut, c'est le bouton 1, même si on ne clique pas/ 
        
    
    $marque=$_POST['bureau']; 
//affichage du tableau 
if($marque!=""){ 
$sql = 'SELECT *  FROM  objet  where marque="'.$_POST['bureau'].'"'; 
//$sql='select * from objet where marque="'.$_POST['bureau'].'" order by marque'; 
//$result=mysql_query($sql); 
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 

//echo '<table  width="80%" border="1" bgcolor="silver">'; 
//while($list=mysql_fetch_assoc($result)) 
//echo '<tr><td>'.$list['N°série'].'</td><td>'.$list['marque'].'</td><td>'.$list['modèle'].'</td></tr>'; 
//echo '</table>'; 

while($data = mysql_fetch_assoc($req)) 
    { 
    // on affiche les informations de l'enregistrement en cours 
    echo '<b>'.$data['N° série'].' '.$data['marque']; 
    echo ' <i>date de naissance : '.$data['modèle'].'</i><br>'; 


    } 



}  


} 








// on crée la requête SQL 
$sql = "SELECT distinct marque  FROM `objet`"; 

// on envoie la requête 
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 

?> 

<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post"> 
<? 
echo "<select name=\"bureau\" >"; 

// on fait une boucle qui va faire un tour pour chaque enregistrement 
echo '<option>*</option>'; 
while($data = mysql_fetch_assoc($req)) 
    { 
    // on affiche les informations de l'enregistrement en cours 
    //echo '<b>'.$data['N° série'].' '.$data['marque']; 
    //echo ' <i>date de naissance : '.$data['modèle'].'</i><br>'; 
echo '<option value="'.$data['marque'].'">'.$data['marque'].'</option>'; 

    } 
echo '</select> '; 
//$id=@$_GET['id']; 





?> 


<input type="submit" name="modif" value="CHERCHER"> 
</form> 

</body> 
</html>
Notice: Undefined index: marque in c:\program files\easyphp1-7\www\projet\formu2.php on line 34
1
Notice: Undefined index: modèle in c:\program files\easyphp1-7\www\projet\formu2.php on line 35
date de naissance :

Notice: Undefined index: marque in c:\program files\easyphp1-7\www\projet\formu2.php on line 34
2
Notice: Undefined index: modèle in c:\program files\easyphp1-7\www\projet\formu2.php on line 35
date de naissance :
Merci

Posté : 16 mai 2005, 13:09
par rami
T'as des noms de champs avec des caractères exotiques: N° série, modèle.
Il ne faut pas mettre de caractères spéciaux ds les noms de champs, et donc nom de variables :wink:

Posté : 16 mai 2005, 13:19
par zeus
Au vue de tes messages d'erreur, il faut que tu vérifie tes requêtes parce que tu appelle des index de tes tableau qui n'existe pas !!!

J'ai pas lu ton code en entier, mais
while($data = mysql_fetch_assoc($req))
    {
    // on affiche les informations de l'enregistrement en cours
    echo '<b>'.$data['N° série'].' '.$data['marque'];
    echo ' <i>date de naissance : '.$data['modèle'].'</i><br>';


    }
$data['marque'] et $data["modèle"] n'existe pas dans ton code ! C'est ce que disent les messages d'erreurs

Sinon, c'est déconseillé de mettre des caractères spéciaux dans les noms de tes colonnes de bdd

modèle => modele
N° Série => num_serie

Posté : 16 mai 2005, 13:54
par donny
il existe c est bizarre car j ai deja fait une requete sur eux et sa me les affichai et j affiche meme la marque dans la liste deroulante
while($data = mysql_fetch_assoc($req)) 
    { 
    // on affiche les informations de l'enregistrement en cours 
    //echo '<b>'.$data['N° série'].' '.$data['marque']; 
    //echo ' <i>date de naissance : '.$data['modèle'].'</i><br>'; 
echo '<option value="'.$data['marque'].'">'.$data['marque'].'</option>'; 

    } 
echo '</select> '; 
//

Posté : 16 mai 2005, 13:56
par rami
A mon avis ca vient de tes noms de champ avec des caractères spéciaux. Car des indices de tableau avec des caractères : ° ou è ou tout autre caractère spécial ne passe pas :wink:

Posté : 16 mai 2005, 13:58
par zeus
Dans la boucle que tu me montre, c'est le résultat d'une autre requete que tu affiches !!!

affiche ta 1ere requete et teste la avec une intreface sgbd (phpMyAdmin ?)

comme ça :
$sql = 'SELECT *  FROM  objet  where marque="'.$_POST['bureau'].'"'; 
echo $sql;

Posté : 16 mai 2005, 14:00
par zeus
le problème rami, c'est que c'est pas les noms de colonnes douteux qui bloquent !!!!

Mais c'est peut-être lié !!!!

Posté : 16 mai 2005, 14:27
par donny
j ai fait un echo $sql et j obtiens cela
Notice: Undefined index: marque in c:\program files\easyphp1-7\www\projet\formu2.php on line 72
SELECT * FROM objet where marque = ""
donc j ai mis une marque en dure et cela m affichai bien les resultat mais quand je mets $_POST['marque'] la sa ne fonctione plus ??

Posté : 16 mai 2005, 14:29
par zeus
C'est ce que je pensais !!! ton $_POST["bureau"], n'est pas valide !!!

reprend ton code pour voir pourquoi il est vide !!!!

Posté : 16 mai 2005, 14:39
par donny
:oops:
je suis con je viens de le remarquer
le truc c est qu au depart j avais bien mis bureau et comme je l avais mis dans une variable appelé marque j ai pas fait la bonne modification.

J ai une autre question je souhaite rajouter une autre liste deroulante,pour les modele, et je souhaite aussi faire
des select * ....
pour faire cela je suis obligé de passer par des if si je ne me trompe pas
avec par exemple

if ($_post['bureau']==* and $_post['modele']==*)
{select * from objet;}
 elseif ($_post['bureau']==* and $_post['modele']!=*)
{select * from objet where modele=$_post['modele'];}
elseif ($_post['bureau']!=* and $_post['modele']!=*)
{select * from objet where modele=$_post['modele'] and marque=$_post['marque'];}
elseif ($_post['bureau']!=* and $_post['modele']==*)
{select * from objet where marque=$_post['bureau];}

Posté : 16 mai 2005, 14:44
par zeus
Ca devrait fonctionner !!!

Je pense qu'on devrait pouvoir optimiser mais j'ai pas le temps cet aprèm

Posté : 16 mai 2005, 14:50
par donny
avec des switch case

Posté : 16 mai 2005, 15:02
par zeus
Non, ça marchera pas ou alors de la même manière

je pensais plutot a tester une fois l'existence ($val = ($_POst[] != *) ? "val1" : "val2"; ) et de tout ecrire à la fin "SELECT * FROM WHERE ".$val mais il faut 2-3 verif et j'ai pas le temps immédiatement !!!!

Posté : 16 mai 2005, 15:07
par donny
ok
je vois

recuperation de variable

Posté : 16 mai 2005, 15:35
par donny
comment pourrai j efaire pour recuperer la valeur d un bouton radio sachant qu il ne se trouve pas dans un formualire donc je ne peux pas utiliser post et get,car il me faut savoir quel ligne à été cocher pour pouvoir ouvrir une nouvelle fenetre ?
<html>
<head>

<script>

function ouvrirFenetre(id,url){ 
var URL =  url + "?id=" + id ; 
window.open(URL,"PopUp",'width=500,height=350,location=yes,status=no,toolbar=no,scrollbars=no');


} 
</script>
</head>
<body>

<?php 
// on se connecte à MySQL 
$db = mysql_connect('localhost', 'root', ''); 

// on sélectionne la base 
mysql_select_db('conso',$db); 

	 



?>


<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">

<?

// on crée la requête SQL 
$sql = "SELECT distinct marque  FROM `objet`"; 

// on envoie la requête 
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 




echo "<select name=\"bureau\" >"; 

// on fait une boucle qui va faire un tour pour chaque enregistrement
//echo '<option>Choisir une marque</option>'; 
echo '<option>*</option>';
while($data = mysql_fetch_assoc($req)) 
    { 
    echo '<option value="'.$data['marque'].'">'.$data['marque'].'</option>'; 

    } 
echo '</select> '; 
//$id=@$_GET['id'];


///2eme liste deroulante

// on crée la requête SQL 
$sql = "SELECT modele  FROM `objet`"; 

// on envoie la requête 
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 


echo "<select name=\"modele\" >"; 

// on fait une boucle qui va faire un tour pour chaque enregistrement
//echo '<option>Choisir un modele</option>'; 
echo '<option>*</option>';
while($data = mysql_fetch_assoc($req)) 
    { 
    echo '<option value="'.$data['modele'].'">'.$data['modele'].'</option>'; 

    } 
echo '</select> '; 


?>


<input type="submit" name="modif" value="CHERCHER">
<input type="submit" name="sel" value="VALIDER">
</form>






<?

if (isset($_POST['modif'])) { 
        // par défaut, c'est le bouton 1, même si on ne clique pas/ 
        
	
    $marque=$_POST['bureau']; 
    $modele=$_POST['modele'];		
//affichage du tableau 
if($marque!="*" and $modele=="*"){ 
$sql = 'SELECT *  FROM  objet  where marque ="'.$_POST['bureau'].'"'; 
//echo $sql; 

$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
}elseif($marque=="*" and $modele!="*"){
$sql = 'SELECT *  FROM  objet  where modele ="'.$_POST['modele'].'"'; 
$req=mysql_query($sql);
}elseif($marque!="*" and $modele!="*"){
$sql = 'SELECT *  FROM  objet  where modele ="'.$_POST['modele'].'" and marque="'.$_POST['bureau'].'"'; 
$req=mysql_query($sql);
}elseif($marque=="*" and $modele=="*"){
$sql = 'SELECT *  FROM  objet '; 
$req=mysql_query($sql);
}
echo '<table  width="80%" border="1" bgcolor="silver">'; 
while($list=mysql_fetch_assoc($req)) 
echo '<tr><td>[color=red] <input type="radio" name="a" value="'.$list['numserie'].'">[/color] </td><td>'.$list['numserie'].'</td><td>'.$list['marque'].'</td><td>'.$list['modele'].'</td></tr>'; 
echo '</table>'; 

//while($data = mysql_fetch_array($req)){ 
    // on affiche les informations de l'enregistrement en cours 
  // echo '<b>'.$data['numserie'];
	//echo  $data['marque'];	

    //} 

} elseif (isset($_POST['sel'])) { 

  echo '<script>ouvrirFenetre('.[color=red] $a[/color] .',"ficheconso.php")</script>'; 
} 


?>
</body>
</html>