requete en fonction de menu deroulant

Eléphant du PHP | 406 Messages

16 mai 2005, 13:03

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

Mammouth du PHP | 983 Messages

16 mai 2005, 13:09

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:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

16 mai 2005, 13:19

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
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 406 Messages

16 mai 2005, 13:54

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> '; 
//

Mammouth du PHP | 983 Messages

16 mai 2005, 13:56

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:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

16 mai 2005, 13:58

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;
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

16 mai 2005, 14:00

le problème rami, c'est que c'est pas les noms de colonnes douteux qui bloquent !!!!

Mais c'est peut-être lié !!!!
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 406 Messages

16 mai 2005, 14:27

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 ??

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

16 mai 2005, 14:29

C'est ce que je pensais !!! ton $_POST["bureau"], n'est pas valide !!!

reprend ton code pour voir pourquoi il est vide !!!!
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 406 Messages

16 mai 2005, 14:39

: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];}

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

16 mai 2005, 14:44

Ca devrait fonctionner !!!

Je pense qu'on devrait pouvoir optimiser mais j'ai pas le temps cet aprèm
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 406 Messages

16 mai 2005, 14:50

avec des switch case

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

16 mai 2005, 15:02

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 !!!!
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 406 Messages

16 mai 2005, 15:07

ok
je vois

Eléphant du PHP | 406 Messages

16 mai 2005, 15:35

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>