probleme de requete

Mammouth du PHP | 19672 Messages

29 mai 2005, 14:44

Je l,avais pas vu ce truc là: remplace le contenur de la valeur de onchange par :
<select name="famille" onChange="this.submit()">
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 406 Messages

29 mai 2005, 15:29

j ai changer et c est toujours pareil, pour la premiere liste (famille) quand on choisi un element alors la requete n est pas effectuer sur la 2eme liste.
Et quand on clique sur la 2eme liste alors l element de la premiere disparait.
En programmation quand on ne peut pas faire un truc on ruse, donc vu que les element selectionner me serve qu a executer une requete je peux seuelement les stocker dans la variable de sessiosn et les afficher dans une zone texte ?

Mammouth du PHP | 19672 Messages

29 mai 2005, 19:04

oui, tu peux, mais si le système indiqué ne fonctionne pas, c'est parce qu'il y a des erreurs dans ton code. Ce que tu me dis sur le fonctionnement est complètement illogique si tu as suivi le raisonnement de fonctionnement.

Si tu n'arrives pas à faire fonctionner le système avec formulaires, pour quoi remplacer par un système de session qui risque d'être tout aussi foireux ? Tu dois comprendre la logique du fonctionnement.

Fais fonctionner un premier formulaire qui garde sa sélection au ré-affichage: quand tu auras réussi ça, les autres suivront automatiquement si tu corriges de la même manière.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 406 Messages

30 mai 2005, 08:58

ok
Je vais reessayer,mais si sa ne fonctionne pas je vais opter pour ma solution avec les sessions car comme je t ai expliquer ce qui m interesse est juste de recuperer les valeur contenu dans le menu deroulant pour faire ma requete et si j en arrive pas à les laisser afficher j opterai pour une zone texte

en tous cas merci

Mammouth du PHP | 19672 Messages

30 mai 2005, 09:03

Pour tes essais, porte une attention particulière aux noms des variables en vérifiant bien qu'elle sont correctement initialisées. Si le nom est correct et qu'il y a une valeur, il te reste ensuite à vérifier de quelle manière tu génères l'attribut "selected" dans tes options.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 406 Messages

30 mai 2005, 11:20

j'ai reussi a la faire fonctionner les element de la liste apparaisse meme quand on change d element dans les autre liste mais j ai un probleme avec la premiere liste deroulante et j ene pije pas.
Elle se presente comme cela
*
PC
Imprimante
Serveur

Quand je clique sur pc et puis sur une autre liste pc reste afficher, pareil quand je clique ensuite sur imprimante, puis sur serveur mais quand je fais l inverse c est a dire que j ai cliquer sur imprimante et que je clique ensuite sur pc ou * bin sa ne s affiche pas il faut que je reselectionne encore une deuxieme fois pour que sa s affiche,alors que pour les 2 autres liste je n ai pas ce probleme ?Bizarre ???

et aussi au chargement de ma feuille, je voudrais que dans chaque liste soit afficher "*", j ai essayer le onload et le unload avec un unset($_session...) mais c est pas trop sa car apres si on clique sur un element d une liste tous les variable de session son effacer et il n y a plus de selected dans la liste ??


<?php 
session_start(); 
?> 
<html> 
<head> 
</head> 
<body> 
<?php 



include("connexionessai.inc.php"); 
//affichage pour la ville 

$sql = 'SELECT distinct type_objet FROM objet order by type_objet;'; 

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

$nb = pg_num_rows($result); 
echo '<h1> nombre '.$nb.'</h1>'; 
?> 
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post"> 
<select name="famille" onChange="location.href='<?php echo  $_SERVER['PHP_SELF']  ;?>?type_objet=' + this.value">  
<? 
if ( $nb==0 ) 
{ 
?> 
<option>Aucune Famille</option> 
<? 
} 
else 
{ 
    ?> 
    <option>*</option> 

    <? 
    $sel="selected"; 
    while ( $list = pg_fetch_array( $result ) ) 
    { 
?> 
<option value="<? echo $list['type_objet'] ;?>"<?php if(  $list['type_objet']==@$_GET['type_objet']){echo '  selected=\"selected\" ';}elseif($list['type_objet']==@$_SESSION['type_objet']){echo '  selected=\"selected\" ';} ?>><?php echo $list['type_objet'] ;?></option> 
<? 
    } 
} 
?> 
</select>   
<? 
if(isset($_GET['type_objet'])) 
{ 
    $type_objet=@$_GET['type_objet']; 
    $_SESSION['type_objet'] = @$_GET['type_objet']; 
} 
elseif(isset($_GET['marque'])) 
{ 
    $marque=@$_GET['marque']; 
    $_SESSION['marque'] = @$_GET['marque']; 
} 
elseif(isset($_GET['modele'])) 
{ 
    $modele=@$_GET['modele']; 
    $_SESSION['modele'] = @$_GET['modele']; 
} 
//$_SESSION['type_objet'] = @$_GET['type_objet']; 
echo @$_SESSION['type_objet']; 

if(@$type_objet!=""){ 
    //affichage pour les marque 
    $sql1 = "SELECT distinct marque FROM objet where type_objet='".$type_objet. "' order by marque;"; 
} 
else 
{ 
    $sql1 = "select distinct marque from objet order by marque"; 
} 
$result1 = pg_query($sql1) or die( 'Erreur1' ); 
$nb = pg_num_rows($result1); 
echo '<h1> nombre '.$nb.'</h1>'; 
?> 
<select name="marque" onChange="location.href='<?php echo  $_SERVER['PHP_SELF'] ; ?>?marque=' + this.value">   
<? 
if ( $nb==0 ) 
{ 
?> 
<option>Aucune Marque</option> 
<?   
} 
else 
{ 
?> 
  <option>*</option> 
    <? 
    while ( $list1 = pg_fetch_array( $result1 ) ) 
    { 
?> 
  <option value="<?php echo $list1['marque'] ;?>"<?php if( @$_GET['marque']== $list1['marque']){echo '  selected=\"selected\" ';}elseif(@$_SESSION['marque']== $list1['marque']){echo '  selected=\"selected\" ';} ?>><? echo $list1['marque'] ;?></option> 
<? 
    } 
} 
?> 
</select>   
<? 
//$marque=@$_GET['marque']; 
//echo $marque; 
echo @$_SESSION['marque']; 
echo strlen(@$_SESSION['marque']);
if(@$marque!="") 
{ 
    //affichage par modele 
    $sql1 = "SELECT distinct modele FROM objet where marque='".$marque. "' order by modele;"; 
} 
else 
{ 
    $sql1 = "select distinct modele from objet order by modele"; 
} 
$result1 = pg_query($sql1) or die( 'Erreur1' ); 

$nb = pg_num_rows($result1); 

echo '<h1> nombre '.$nb.'</h1>'; 
?> 

<select name="modele" onChange="location.href='<?php echo $_SERVER['PHP_SELF'] ;?>?modele=' + this.value"> 
<? 
if ( $nb==0 ) 
{ 
?> 
<option>Aucun Modele</option> 
<?   
} 
else 
{ 
?> 
   <option>*</option> 
    <? 
    while ( $list1 = pg_fetch_array( $result1 ) ) 
    { 
?> 
<option value="<?php echo $list1['modele'] ;?>"<?php if( @$_GET['modele']== $list1['modele']){echo '  selected=\"selected\" ';}elseif(@$_SESSION['modele']== $list1['modele']){echo '  selected=\"selected\" ';} ?>><? echo $list1['modele'] ;?></option> 
<? 
    } 
} 
?> 
</select> 
</form> 
<? 
//$modele=@$_GET['modele']; 
echo @$_SESSION['modele']; 

?> 
</body> 
</html> 
Merci

Mammouth du PHP | 19672 Messages

30 mai 2005, 16:56

Bon, on va essayer quelque chose: j'ai entièrement repris le code: voici une proposition de correction:
<?php
session_start();
?>
<html>
<head>
</head>
<body>
<?php



include("connexionessai.inc.php");
//affichage pour la ville

$sql = 'SELECT distinct type_objet FROM objet order by type_objet;';

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

$nb = pg_num_rows($result);
echo '<h1> nombre '.$nb.'</h1>';
?>
<form action = "<?php echo($_SERVER['PHP_SELF']); ?>" method = "post">
<select name = "famille" onChange = "this.submit();">  
<?
if ($nb == 0)
{
?>
<option>Aucune Famille</option>
<?
}
else
{
    ?>
    <option>*</option>
    <?
    $sel = "selected";
    while ($list = pg_fetch_array($result))
    {
?>
    <option value = "<?php echo $list1['type_objet'] ;?>"<?php echo((isset($_POST['type_objet']) && $_POST['type_objet'] == $list1['type_objet'] || (isset($_SESSION['type_objet']) && $_SESSION['type_objet'] ==  $list1['type_objet']))?" selected = \"selected\"":""); ?>><? echo $list1['type_objet'] ;?></option>
<?
    }
}
?>
</select>   
<?php
$type_objet = (isset($_POST['type_objet']))?$_POST['type_objet']:"";
$_SESSION['type_objet'] = $type_objet;
$marque = (isset($_POST['marque']))?$_POST['marque']:"";
$_SESSION['marque'] = $marque;
$modele = (isset($_POST['modele']))?$_POST['modele']:"";
$_SESSION['modele'] = $modele;

//$_SESSION['type_objet'] = $_POST['type_objet'];
echo $_SESSION['type_objet'];

if($type_objet != "")
{
    //affichage pour les marque
    $sql1 = "SELECT distinct marque FROM objet where type_objet = '".$type_objet. "' order by marque;";
}
else
{
    $sql1 = "select distinct marque from objet order by marque";
}
$result1 = pg_query($sql1) or die('Erreur1');
$nb = pg_num_rows($result1);
echo '<h1> nombre '.$nb.'</h1>';
?>
<select name = "marque" onChange = "this.submit();">   
<?
if ($nb == 0)
{
?>
    <option>Aucune Marque</option>
<?   
}
else
{
?>
    <option>*</option>
    <?
    while ($list1 = pg_fetch_array($result1))
    {
?>
    <option value = "<?php echo $list1['marque'] ;?>"<?php echo((isset($_POST['marque']) && $_POST['marque'] == $list1['marque'] || (isset($_SESSION['marque']) && $_SESSION['marque'] ==  $list1['marque']))?" selected = \"selected\"":""); ?>><? echo $list1['marque'] ;?></option>
<?
    }
}
?>
</select>   
<?
//$marque = $_POST['marque'];
//echo $marque;
echo $_SESSION['marque'];
echo strlen($_SESSION['marque']);
if($marque != "")
{
    //affichage par modele
    $sql1 = "SELECT distinct modele FROM objet where marque = '".$marque. "' order by modele;";
}
else
{
    $sql1 = "select distinct modele from objet order by modele";
}
$result1 = pg_query($sql1) or die('Erreur1');

$nb = pg_num_rows($result1);

echo '<h1> nombre '.$nb.'</h1>';
?>
<select name = "modele" onChange = "this.submit();">
<?
if ($nb == 0)
{
?>
<option>Aucun Modele</option>
<?   
}
else
{
?>
   <option>*</option>
    <?
    while ($list1 = pg_fetch_array($result1))
    {
?>
    <option value = "<?php echo $list1['modele'] ;?>"<?php echo((isset($_POST['modele']) && $_POST['modele'] == $list1['modele'] || (isset($_SESSION['modele']) && $_SESSION['modele'] ==  $list1['modele']))?" selected = \"selected\"":""); ?>><? echo $list1['modele'] ;?></option>
<?
    }
}
?>
</select>
</form>
<?
echo(isset($_SESSION['modele'])?$_SESSION['modele']: "<p>Variable de session pour le modèle non défini.</p>\n");
?>
</body>
</html>
Si tu as des erreurs, reviens avec les messages complets et les détails nécessaires si tu ne trouves pas la réponse toi-même bien sur.

Note bien que j'ai changé pas mal de choses dans la manière de procéder.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 406 Messages

31 mai 2005, 08:28

salut,

L evenement onchange ne fonctionne pas quand je cliqu esur la liste il ne se passe rien

Mammouth du PHP | 19672 Messages

31 mai 2005, 08:47

Je viens de réaliser un truc: il n'y a pas de bouton submit dans ton formulaire, alors forcément, l'évènement n'agit sur rien... Tu aurais dû le voir ayant créé toi même le code d'origine ;)
Et si tu ne veux pas voir de bouton submit, rien n'interdit de le cacher avec un style CSS visibility: hidden
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 406 Messages

31 mai 2005, 08:58

en faite j en ai un sur mon nouveau formulaire,mais ce qu il y a je l'utilise pour faire une requetes,
mais sinon le code que j ai mis hier fonctionne et garde l element choisi sur la liste deroulante mais le truc est que juste pour la premiere liste j ai un petit bogue.
Peut etre que sa viens d IE

Mammouth du PHP | 19672 Messages

31 mai 2005, 09:16

Mouais, c'est pas impossible: vide le cache de IE et refais donc un test, ça te donnera une meilleure idée: si ça marche c'est qu'effectivement, IE récupère des informations obsolètes dans son cache et les impose sans se préoccuper des changement: pour ajuster ça, tu devrais alors ajouter une balise meta dans l'entête : http-equiv="Pragma" content="no-cache", ça aidera à améliorer le schmilblick
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 406 Messages

31 mai 2005, 09:23

t a raison j ai supprimer la cache et c est pareil
et tu serais comment je pourrais faire pour vider mes variables de sessions mais a la fermeture de ma fenetre ?

Mammouth du PHP | 19672 Messages

31 mai 2005, 09:34

Non, tu ne peux pas le déclencher comme ça, mais en fermant ton navigateur, tu coupe la session de toutes façon.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 406 Messages

31 mai 2005, 09:39

parceque tu vois au chargement dans chacun de mes menu j aurai cela "*" au depart puis quand je choisirai une valeur le menu restera bloquerà cette valeur donc je reviendrais sur cette page j aurai cette valeur aussi e tplus les "*".
Je pense que t a raison car avec le unonload sa ne fonctionne pas aussi

Mammouth du PHP | 19672 Messages

31 mai 2005, 10:01

Est-ce que ça fonctionne avec un autre navigateur, Firefox ou Opera ? On sera fixé et on pourra affirmer que ça vient bien du navigateur...:?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: