Erreur de test en php

Bonjour,

pouvez me corriger mon script invantaire1.php

l'erreur est dans l'affichage de deuxième tableau

<html>
<head>
</head>

<form action="" method="post" name="form1">

<table frame="box" rules="none">
<tr>
<td>resultat de choix</span></td>
</td>
<tr>
<td>
<?php
$local=$_POST['local'];
$choix=$_POST['choix'];
$TableauRef=explode(",",$choix);
$Nb=count($TableauRef);
$serveur="localhost";
$user="user1";
$pwd="user1";
$db="gestionpret";
$lien=mysql_connect($serveur,$user,$pwd) or die("impossible de connecter de serveur");
mysql_select_db($db,$lien);
$query="select *from article where local='$local'";
$res=mysql_query($query);
while($ligne=mysql_fetch_row($res))
{
for($i=0;$i<$Nb;$i++){
if($TableauRef[$i]==$ligne[0])
echo"<tr><td>$TableauRef[$i]</td><td>correcte</td></tr>";

}

}

?>

</td>
</tr>
</table>

<table frame="box" rules="none">
<tr>
<td>resultat de deuximme choix</span></td>
</td>
<tr>
<td>
<?php
$local=$_POST['local'];
$choix=$_POST['choix'];
$TableauRef=explode(",",$choix);
$Nb=count($TableauRef);
$serveur="localhost";
$user="user1";
$pwd="user1";
$db="gestionpret";
$lien=mysql_connect($serveur,$user,$pwd) or die("impossible de connecter de serveur");
mysql_select_db($db,$lien);
$query="select *from article where local='$local'";
$res=mysql_query($query);
while($ligne=mysql_fetch_row($res))
{
for($i=0;$i<$Nb;$i++){
if($TableauRef[$i]!=$ligne[0])
echo"<tr><td>$TableauRef[$i]</td><td>faux</td></tr>";

}

}

?>

</td>
</tr>
</table>

</form>
</body>
</html>

le script inventaire.php

<html>
<head>

<title>exercice 3</title>

</head>

<body>
<form action="inventaire1.php" method="post" name="form1">

<table frame="box" rules="none">

<td>
Local
</blockquote></td>
<td><select name="local">
<?php
$serveur="localhost";
$user="user1";
$pwd="user1";
$db="gestionpret";
$lien=mysql_connect($serveur,$user,$pwd) or die("impossible de connecter de serveur");
mysql_select_db($db,$lien);
$query="select *from depot";
$result=mysql_query($query);

while($ligne=mysql_fetch_row($result))
{
echo"<option value=\"$ligne[0]\">$ligne[2]</option>";
}
?>
</select></td>
</tr>
<tr>
<td>
choix
</td>
<td><input type="text" name="choix"/>
</td>
</tr>

<tr>
<td colspan="2" align="center"><input type="submit" value="valider" name="envoyer"/></td></tr>

</table>
</form>
</html>

est ce qu'on peut pas mettre en php test de ce genre

if($TableauRef[$i]!=$ligne[0])

le premier test marche correctement et donne de résultat juste
if($TableauRef[$i]==$ligne[0])

merci d'avance

10 réponses

  1. Contributeur
    Pour les test, ils sont corrects... vérifie les valeurs à tester en affichant les variables avec "echo".

    Par contre, je remarque ceci à plusieurs endroit...

    <table frame="box" rules="none">
    <tr>
    <td>resultat de choix</span></td>
    </td>
    <tr>
    <td> 
    


    Tu fermes une balise <span> sans en avoir ouvert... puis derrière tu refermes deux fois de suite la balise <td>
    1. les balises de ton tableaux sont un peu mise en vrak .
      Tu ouvres des lignes sans avoir fermée la precedente, tu fermes des cellules sans les avoirs ouvert.
      1. je corrige les faute de le script

        mais lors de l'affichage

        dans mon cas
        le premier affichage donne résultat juste il m'affiche résultat de choix
        1 correcte
        5 correcte

        mais dans le deuxième affichage il m'affiche résultat plusieurs fois
        résultat de deuxième choix
        9 faux
        8 faux
        5 faux
        7 faux
        6 faux
        9 faux
        8 faux
        1 faux
        5 faux
        7 faux
        6 faux
        9 faux
        8 faux
        1 faux
        7 faux
        6 faux
        9 faux
        8 faux
        1 faux
        5 faux
        7faux
        6 faux
        9 faux
        8 faux
        1 faux
        1 faux
        5 faux
        7 faux
        6 faux

        le résultat correcte doit être
        résultat de la deuxième choix
        9 faux
        8 faux
        7 faux
        6 faux

        je parle de test selon mon cas

        mais le principe de test c le meme
        1. <table frame="box" rules="none">
          <tr>
          <td>resultat de deuximme choix</span></td>
          </td>

          <tr>
          <td>
          alor déja tu ferme un </span> san en ouvrir un ensuite tu met 2 foi </td> a la suite (jvoi pa pourkoi) et pour finir tu ouvre le <tr> (en dessous de <table frame="box" rules="none">) san le refermé aprè.
          Tro d'erreur d'inatention !
          1. merci de vos réponse

            désolé j'oublie d'envoyer le fichier inventaire1.php après modification

            <html>
            <head>
            </head>

            <form action="" method="post" name="form1">

            <table>
            <tr>
            <td>resultat de choix</td>
            </tr>
            <tr>
            <td>
            <?php
            $local=$_POST['local'];
            $choix=$_POST['choix'];
            $TableauRef=explode(",",$choix);
            $Nb=count($TableauRef);
            $serveur="localhost";
            $user="user1";
            $pwd="user1";
            $db="gestionpret";
            $lien=mysql_connect($serveur,$user,$pwd) or die("impossible de connecter de serveur");
            mysql_select_db($db,$lien);
            $query="select *from article where local='$local'";
            $res=mysql_query($query);
            while($ligne=mysql_fetch_row($res))
            {
            for($i=0;$i<$Nb;$i++){
            if($TableauRef[$i]==$ligne[0])
            echo"<tr><td>$TableauRef[$i]</td><td>correcte</td></tr>";

            }

            }

            ?>

            </td>
            </tr>
            </table>

            <table>
            <tr>
            <td>resultat de deuximme choix</td>
            </tr>
            <tr>
            <td>
            <?php
            $local=$_POST['local'];
            $choix=$_POST['choix'];
            $TableauRef=explode(",",$choix);
            $Nb=count($TableauRef);
            $serveur="localhost";
            $user="user1";
            $pwd="user1";
            $db="gestionpret";
            $lien=mysql_connect($serveur,$user,$pwd) or die("impossible de connecter de serveur");
            mysql_select_db($db,$lien);
            $query="select *from article where local='$local'";
            $res=mysql_query($query);
            while($ligne=mysql_fetch_row($res))
            {
            for($i=0;$i<$Nb;$i++){
            if($TableauRef[$i]!=$ligne[0])
            echo"<tr><td>$TableauRef[$i]</td><td>faux</td></tr>";

            }

            }

            ?>

            </td>
            </tr>
            </table>

            </form>
            </body>
            </html>
            1. Contributeur
              Il faudra que tu expliques l'utilité du formulaire parce que moi perso, je vois pas...
              1. c simple dans le premier formulaire (invantaire.php)

                je sélectionne un local

                après je tape par exemple des références 9,8,1,5,7,6

                le test c fait comme suit

                premièrement elle cherches tous les references des articles de ce local

                et cela se fait par select *from article where local='$local'

                le résultat est bien sur un tableau

                parcourir ces tableau et comparer valeur par valeur par

                les valeur des références tapés( 9,8,1,5,7,6)

                pour mon cas 1 et 5 sont correcte

                les restes sont fausses

                j'espère que devient clair
                1. le question qui suppose est ce que en php on accepte des testes

                  comme celle ci if($TableauRef[$i]!=$ligne[0])
                  1. Contributeur
                    Bien entendu... encore faut-il que tu es les bonnes valeurs dans les deux variables.
                2. je change l'opérateur != par <> mais encore le deuxième affichage

                  est incorrecte pourtant le premier affichage est juste

                  je pense qu'on dois faire autrement

                  puisque le premier résultat est juste on peut l'exploiter

                  mais comment , je pense quant fait le test avec if($TableauRef[$i]==$ligne[0])
                  on affiche le resulat avec echo"<tr><td>$TableauRef[$i]</td><td>correcte</td></tr>";

                  au meme temps je veux décrémente cette valeur de tableau $TableauRef[

                  pour q'apres juste on parcour ce tableau et on fait l'affichage

                  avec for($i=0;$i<$Nb;$i++){

                  echo"<tr><td>$TableauRef[$i]</td><td>faux</td></tr>";
                  }

                  je pense mon idee est juste mais reste a l'appliquer

                  je suppose qu'on doit faire comme celle ci

                  mais elle m'affiche erreur ( undefined offset -1)

                  <html>
                  <head>
                  </head>

                  <form action="" method="post" name="form1">

                  <table frame="box" rules="none">
                  <tr>
                  <td>resultat de choix</td>
                  </tr>
                  <tr>
                  <td>
                  <?php
                  $local=$_POST['local'];
                  $choix=$_POST['choix'];
                  $TableauRef=explode(",",$choix);
                  $Nb=count($TableauRef);
                  $serveur="localhost";
                  $user="user1";
                  $pwd="user1";
                  $db="gestionpret";
                  $lien=mysql_connect($serveur,$user,$pwd) or die("impossible de connecter de serveur");
                  mysql_select_db($db,$lien);
                  $query="select *from article where local='$local'";
                  $res=mysql_query($query);
                  while($ligne=mysql_fetch_row($res))
                  {
                  for($i=0;$i<$Nb;$i++){
                  if($TableauRef[$i]==$ligne[0])
                  {echo"<tr><td>$TableauRef[$i]</td><td>correcte</td></tr>";
                  $TableauRef[$i]=$TableauRef[$i-1];}

                  }

                  }

                  ?>

                  </td>
                  </tr>
                  </table>

                  </form>
                  </body>
                  </html>
                  1. Contributeur
                    En PHP, l'opérateur d'inégalité est "!=" pas "<>".

                    Après si j'ai bien compris, tu souhaites afficher les valeurs $TableauRef[$i] et ajouté si c'est égal à $ligne[0] "correcte" sinon "incorrecte"... pour cela tu fais:

                    <table> 
                    <tr><td>Valeur</td><td>Statut</td></tr> 
                    
                    <?php 
                    for($i=0; $i<sizeof($TableauRef);$i++) 
                    { 
                         ?> 
                    
                         <tr><td><?php echo $TableauRef[$i];?></td> 
                         <td> 
                         <?php 
                         if($TableauRef[$i] == $ligne[0]) 
                              echo "Correct"; 
                         else 
                              echo "Incorrect"; 
                         ?> 
                         </td> 
                         </tr> 
                    
                         <?php 
                    } 
                    ?> 
                    


                    "Trotti Trotta, Monsieur P, il y a des anges qui veulent un bisou..."
                    "Même les joujou de Monsieur P ont besoin de joujou"