Erreur de test en php

Fermé
mb42 Messages postés 432 Date d'inscription vendredi 17 octobre 2008 Statut Membre Dernière intervention 14 janvier 2014 - 27 mai 2010 à 15:27
Neliel Messages postés 6146 Date d'inscription jeudi 9 juillet 2009 Statut Contributeur Dernière intervention 20 mars 2017 - 28 mai 2010 à 08:00
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

Neliel Messages postés 6146 Date d'inscription jeudi 9 juillet 2009 Statut Contributeur Dernière intervention 20 mars 2017 1 688
27 mai 2010 à 15:34
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
Creutzou Messages postés 550 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 30 mai 2013 30
27 mai 2010 à 15:35
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
mb42 Messages postés 432 Date d'inscription vendredi 17 octobre 2008 Statut Membre Dernière intervention 14 janvier 2014 7
27 mai 2010 à 15:54
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
<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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mb42 Messages postés 432 Date d'inscription vendredi 17 octobre 2008 Statut Membre Dernière intervention 14 janvier 2014 7
27 mai 2010 à 16:13
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
Neliel Messages postés 6146 Date d'inscription jeudi 9 juillet 2009 Statut Contributeur Dernière intervention 20 mars 2017 1 688
27 mai 2010 à 16:27
Il faudra que tu expliques l'utilité du formulaire parce que moi perso, je vois pas...
0
mb42 Messages postés 432 Date d'inscription vendredi 17 octobre 2008 Statut Membre Dernière intervention 14 janvier 2014 7
27 mai 2010 à 16:39
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
mb42 Messages postés 432 Date d'inscription vendredi 17 octobre 2008 Statut Membre Dernière intervention 14 janvier 2014 7
27 mai 2010 à 17:35
le question qui suppose est ce que en php on accepte des testes

comme celle ci if($TableauRef[$i]!=$ligne[0])
0
Neliel Messages postés 6146 Date d'inscription jeudi 9 juillet 2009 Statut Contributeur Dernière intervention 20 mars 2017 1 688
27 mai 2010 à 18:01
Bien entendu... encore faut-il que tu es les bonnes valeurs dans les deux variables.
0
mb42 Messages postés 432 Date d'inscription vendredi 17 octobre 2008 Statut Membre Dernière intervention 14 janvier 2014 7
27 mai 2010 à 20:03
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
Neliel Messages postés 6146 Date d'inscription jeudi 9 juillet 2009 Statut Contributeur Dernière intervention 20 mars 2017 1 688
Modifié par Neliel le 28/05/2010 à 08:01
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