Erreur de test en php

mb42 Messages postés 553 Statut Membre -  
Neliel Messages postés 7012 Statut Contributeur -
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. Neliel Messages postés 7012 Statut Contributeur 1 702
     
    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>
    0
  2. Creutzou Messages postés 655 Statut Membre 30
     
    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.
    0
  3. mb42 Messages postés 553 Statut Membre 7
     
    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
    0
  4. Gibbs
     
    <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 !
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. mb42 Messages postés 553 Statut Membre 7
     
    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>
    0
  7. Neliel Messages postés 7012 Statut Contributeur 1 702
     
    Il faudra que tu expliques l'utilité du formulaire parce que moi perso, je vois pas...
    0
  8. mb42 Messages postés 553 Statut Membre 7
     
    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
    0
  9. mb42 Messages postés 553 Statut Membre 7
     
    le question qui suppose est ce que en php on accepte des testes

    comme celle ci if($TableauRef[$i]!=$ligne[0])
    0
    1. Neliel Messages postés 7012 Statut Contributeur 1 702
       
      Bien entendu... encore faut-il que tu es les bonnes valeurs dans les deux variables.
      0
  10. mb42 Messages postés 553 Statut Membre 7
     
    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>
    0
  11. Neliel Messages postés 7012 Statut Contributeur 1 702
     
    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"
    0