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
    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"
    1. 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. 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. 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. Contributeur
          Il faudra que tu expliques l'utilité du formulaire parce que moi perso, je vois pas...
          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. <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. 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. 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. 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>