Page 1 sur 1

probleme d affichage

Posté : 26 juil. 2005, 11:17
par donny
salut,

J ai formulaire dans lequel je choisi 3 elements sur des liste deroulante.
Dans le derniere liste deroulante je choisi une marque, et au clique d un bouton j affiche dans un tableau tout les element correspondant à cette marque.
ce qui se passe c est quand je choisi une des 3 premiere marque de ma liste deroulante et que je souhaite afficher le tableau, je n ai rien qui s affiche.
Meme pas l entete du tableau et quand je selectionne les autres marques alors elle s affiche correctement.
Dans ma liste deroulante j ai une option "*" et si on la choisi alors on affiche toute les marques, en utilisant cette option les marque qui ne s affichai pas s affiche.
Je vois pas trop d ou cela peux venir ??

Voila le code de ma liste
<?php
$sql = "select  distinct marque from objet where type_objet='Imprimante' order by marque  ";
$res=pg_query($sql);
?>
<select name="marq1"    >
  <option value="*">*</option>
<?
while($list=pg_fetch_array($res))
{
?>
  <option value="<?php echo ($list['marque']);?>"<? if(@$_SESSION['marqs'] == $list['marque']){echo(" selected=\"selected\"");}?>><?php echo ($list['marque']); ?></option>
<?php
}
?>
</select>

et le code du bouton qui execute l affichage
$sql1="select distinct(objet.numserie),etat_objet.numoperation,marque,modele,propriete4,propriete8,nom_personnel from objet,commandes,poste,personnel,poles,types_etat,etat_objet where commandes.numcommande=objet.numcommande and objet.numposte=poste.numposte and poste.numpersonnel=personnel.numpersonnel and poste.numpole=poles.numpole and etat_objet.numserie=objet.numserie and types_etat.numetat=etat_objet.numetat and type_objet='Imprimante' and etat in ('En poste','En stock') ";
if($_POST['marq1']!="*"){
$sql1=$sql1." and marque='".$_POST['marq1']."'";
}
$sql1=$sql1." and etat_objet.numoperation=(select max(numoperation) from etat_objet where etat_objet.numserie=objet.numserie)
order by marque,modele";
//order by etat_objet.numoperation
echo $sql1;
$result=pg_query($sql1);
?>
<div style="width:600px;  height:250px;overflow:auto;border-style:inset;">
<table class="table1">
<tr><th class="th1">a</td>
    <th class="th1">Affecté à</td>
    <th class="th1">Nom</th>
    <th class="th1">N° serie</th>
    <th class="th1">Marque</th>
    <th class="th1">Modele</th>
    <th class="th1">Technologie</th>
</tr>

<?

$sql2="select numconso from consommable where refcontructeur='".$_POST['mod']."' ";
$result2=pg_query($sql2);
$list2=pg_fetch_array($result2);
$numcos=$list2['numconso'];
//echo "<b>".$numcos."</b>";
$_SESSION['numcos']=$numcos;
$sql3="select numserie from compatible where numconso=".$numcos;
$result3=@pg_query($sql3);
$i=0;
while($list3=@pg_fetch_array($result3))
{
$numz[$i]=$list3['numserie']; 
    $i++; 
//echo "<b>".$list3['numserie']."<br></b>";
}
$i=0;
while($list=pg_fetch_array($result))
{

?>
<tr class="white" onClick="document.imprimante.liste.disabled=''">
    <td class="td1"><input type="checkbox" name="numero[]" value="<? echo $list['numserie'];?>"></td>
<?

?>
    <td class="td1"><input type="checkbox" name="numerob[]" disabled="disabled" value="<? echo $list['numserie'];?>" <? for($j=0;$j<count($numz);$j++)
{if ($list['numserie']==$numz[$j]){echo " checked=\"checked\" ";}} ?>></td>
<?

?>
    <td class="td1"><? echo $list['propriete8']; ?></td>
    <td class="td1"><? echo $list['numserie']; ?></td>
    <td class="td1"><? echo $list['marque']; ?></td>
    <td class="td1"><? echo $list['modele']; ?></td>
    <td class="td1"><? echo $list['propriete4']; ?></td>
</tr>

<?
$i=$i+1;

}
}
?>
</table>

Mon code me parait correct et je vois pas d ou cela viens.


Merci[/code]

Posté : 26 juil. 2005, 11:26
par mere-teresa
Modération : je suppose que ton affichage par un bouton se fait en Javascript si j'en crois le onClick()

Posté : 26 juil. 2005, 11:34
par donny
mon affichage ce fait en php
<?
if(isset($_POST['valider']))
{


$sql1="select distinct(objet.numserie),etat_objet.numoperation,marque,modele,propriete4,

Posté : 26 juil. 2005, 11:36
par mere-teresa
Donc tu n'arrives pas à récupérer les infos d'un formulaire ?

Posté : 26 juil. 2005, 11:40
par donny
j ai un bouton quand je clique dessus j effectue une requete banal et j affiche le resultat de la requete dans un tableau html.
Mais ce qui se passe c est que pour les 3 premieres marque de la liste deroulante, quand je clique sur valider, je n ai rien à l affichage meme pas l entete du tableau.
Et quand j affiche le requete, et que je l execute dans ma base elle me retourne bien un resultat

Posté : 26 juil. 2005, 11:47
par Cyrano
Et à l'exécution, tu n'as aucun message d'erreur ?

Enlève le "@" devant le pg_query de la requête 3, il y a peut-être un problème là mais tu ne verras rien si tu le laisses.

Je te signale au passage que tu as deux balises ouvrantes <th> que tu fermes avec un </td> au lieu d'un </th>

Posté : 26 juil. 2005, 11:54
par donny
merci pour les balises
je l ai enlever et je n ai rien
et a l execution je n ai pas de message d erreur
mais pourtant quand je selectionne une autre marque dans ma liste que les 2 premieres marques , la tableau s affiche bien avec les bonne donnée.
Ma liste se present ainsi
*
DELL
EPSON
THX
HP
Quand je selectionne DELL ou EPSON je n ai rien a l affichage et quand je selectionne les autre marque j ai quelquechose.
Meme quandje selectionne l "*" ,qui signifie tout afficher, à l affichage j ai bien toute les marque , DELL et Epson compris
c est pour sa que je comprend pas
?

Posté : 26 juil. 2005, 12:08
par Cyrano
Je vois vraiment pas, il doit y avoir un problème de casse ou un élément ajouté (ou enlevé) lors de l'exécution que je ne vois pas.

En ré-écrivant ton code plus lisiblement et en enlevant le "bruit" (ce qui ne sert à priri pas dans cette partie d'affichage, j'obtiens ceci:
<?php
if(isset($_POST['valider']))
{
    $sql1 = "SELECT distinct(objet.numserie),etat_objet.numoperation,marque,modele,propriete4,propriete8,nom_personnel
        FROM objet,commandes,poste,personnel,poles,types_etat,etat_objet 
        WHERE commandes.numcommande=objet.numcommande 
        AND objet.numposte=poste.numposte 
        AND poste.numpersonnel=personnel.numpersonnel 
        AND poste.numpole=poles.numpole 
        AND etat_objet.numserie=objet.numserie 
        AND types_etat.numetat=etat_objet.numetat 
        AND type_objet='Imprimante' 
        AND etat in ('En poste','En stock') ";
    if($_POST['marq1']!="*")
    {
        $sql1 .= " AND marque='".$_POST['marq1']."'";
    }
    $sql1 .= " AND etat_objet.numoperation=(SELECT MAX(numoperation) FROM etat_objet WHERE etat_objet.numserie=objet.numserie)
        ORDER BY marque,modele";
    //order by etat_objet.numoperation
    echo $sql1;
    $result = pg_query($sql1);
    ?>
<div style="width:600px; height:250px; overflow:auto; border-style:inset;">
<table class="table1">
  <tr>
    <th class="th1">a</th>
    <th class="th1">Affecté à</th>
    <th class="th1">Nom</th>
    <th class="th1">N° serie</th>
    <th class="th1">Marque</th>
    <th class="th1">Modele</th>
    <th class="th1">Technologie</th>
  </tr>
    <?
    /*
    $sql2="SELECT numconso FROM consommable WHERE refcontructeur='".$_POST['mod']."' ";
    $result2 = pg_query($sql2);
    $list2 = pg_fetch_array($result2);
    $numcos = $list2['numconso'];
    //echo "<b>".$numcos."</b>";
    $_SESSION['numcos'] = $numcos;
    $sql3="SELECT numserie FROM compatible WHERE numconso=".$numcos;
    $result3 = pg_query($sql3);
    $i=0;
    while($list3 = pg_fetch_array($result3))
    {
        $numz[$i]=$list3['numserie'];
        $i++;
        //echo "<b>".$list3['numserie']."<br></b>";
    }
    */
    $i=0;
    while($list=pg_fetch_array($result))
    {
?>
  <tr class="white" onClick="document.imprimante.liste.disabled=''">
    <td class="td1"><input type="checkbox" name="numero[]" value="<? echo $list['numserie'];?>"></td>
<?

?>
    <td class="td1"><input type="checkbox" name="numerob[]" disabled="disabled" value="<? echo $list['numserie'];?>" <? for($j=0;$j<count($numz);$j++){if ($list['numserie']==$numz[$j]){echo " checked=\"checked\" ";}} ?>></td>
<?

?>
    <td class="td1"><? echo $list['propriete8']; ?></td>
    <td class="td1"><? echo $list['numserie']; ?></td>
    <td class="td1"><? echo $list['marque']; ?></td>
    <td class="td1"><? echo $list['modele']; ?></td>
    <td class="td1"><? echo $list['propriete4']; ?></td>
  </tr>
    <?
    $i++;
    }
?>
</table>
</div>
<?php
}
?>
Teste à tout hasard... :?:

Posté : 26 juil. 2005, 13:07
par donny
c est la meme chose
mais je viens d essayer un truc
quand je selectionne seulement la marque, et que je ne selectionne pas d element dans les 2 autres listes à ce moment la,j obtiens le bonne affichage.

Posté : 26 juil. 2005, 13:15
par mere-teresa
Peux tu poster ton code source HTML de la page du formulaire ?
Modération : je le remets dans "Débuter en PHP" ?

Posté : 26 juil. 2005, 13:43
par donny
C est que je viens de verifier, dans le code source de ma page, j ai bien le tableau avec les bonne donnée , mais a l affichage sur mon ecran il n y a rien.
C est une erreur bizarre donc j ai abandonner
j ai opter pour une autre solution dans laquel j utilise pas cette liste deroulante et sa marche aussi bien.
Merci de vos conseil à tous

Posté : 26 juil. 2005, 13:54
par Cyrano
On peut considérer comme [Résolu] :?:

=> mere-teresa : comme tu le sens, on peut aussi bien le laisser là, mais c'est vrai qu'il n'y a pas grand problème de JavaScript dans ce post. Je te laisse la décision.

Posté : 26 juil. 2005, 14:27
par donny
je prefere mette à resolu
je pense que c est bon,
et ma solution me conviens bien
merci