tableau et menu deroulant dans cellule

Eléphant du PHP | 406 Messages

18 mai 2005, 10:35

je mettai ma boucle de creation de tableau dans une autre boucle ce qui fait qu il l executait à chaque donc inutile.

Moi ce que je captais pas c est comment il fait pour selectionner le bonne element dans la liste alors qu en faite j en utilise que $liste_etat[$i] et non
$list['etat'] ?

Et aussi j ai remplacer par le count et commence la saisie du tableau à $i=0
est ce normal que dans ma liste à la derniere ligne j ai
notice:Undefinied offset:4 in c:.......

Mammouth du PHP | 19672 Messages

18 mai 2005, 10:40

sur quelle ligne l'erreur ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 406 Messages

18 mai 2005, 10:48

sur la 69 et c est celle ci
<option value="<?php echo($liste_etat[$i]);?>"><?php echo ($liste_etat[$i]); ?></option>

PS:t utilise quel editeur de texte pour taper tes script ?

Mammouth du PHP | 19672 Messages

18 mai 2005, 10:51

pas normal puisque la variable ne contient d'index que de 0 à 3, donc il y a une correction à faire quelque part. Après la génération du tableau liste_etat, ajoute une ligne de débuggage avec:
echo(count($liste_etat));
Tu ne devrais théoriquement pas avoir d'index 4.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 406 Messages

18 mai 2005, 10:59

c est ce que j ai fais mais sa m affiche 4
car dans mon tableau il y a 4 elements

et la boucle avec le for on commence a $i=0, et quand $i sera=4 il sera bien inferieur à 4 donc on devrai sortir de la boucle ?

Mammouth du PHP | 19672 Messages

18 mai 2005, 11:07

on va vérifier autrement:
echo("<pre>");
var_dump($liste_etat);
echo("</pre>\n");
Vérifie les numéros d'index et s'il n'y en a pas un qui n'a pas de valeur, ce serait bizarre, mais bon...
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 406 Messages

18 mai 2005, 11:11

sa m affiche cela,
array(4) {
[0]=>
string(8) "en stock"
[1]=>
string(8) "en panne"
[2]=>
string(8) "en poste"
[3]=>
string(12) "en livraison"
}

Mammouth du PHP | 19672 Messages

18 mai 2005, 11:15

Ok, alors modifie cette partie: on va utiliser un pointeur différent, il se peut qu'il traine une valeur qui perturbe dans $i
<?php
    for($j=0;$j<count($liste_etat);$j++)
    {
?>
                <option value="<?php echo($liste_etat[$j]);?>"><?php echo ($liste_etat[$j]); ?></option>
<?php
    }
?>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 406 Messages

18 mai 2005, 11:31

en mettant $j sa ne fonctionne plus sa me met plein d erreur sur la page

Mammouth du PHP | 19672 Messages

18 mai 2005, 11:36

... :?: ... renvoie donc le code de ta page tel qu'il est actuellement.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 406 Messages

18 mai 2005, 11:39

<html> 
<head> 
</head> 
<body> 
<?php 
// on se connecte à MySQL 
$db = mysql_connect('localhost', 'root', ''); 
// on sélectionne la base 
mysql_select_db('conso',$db); 

// on crée la requête SQL 
$sql = "SELECT etat.etat, idetatobjet, date, serie
FROM etat, etatobjet
WHERE etat.id = etatobjet.etat "; 

//$sql = "SELECT *  FROM etatobjet "; 

echo $sql;
// on envoie la requête 
$req = mysql_query($sql) or die('Erreur SQL !<br>\n'.$sql.'<br>\n'.mysql_error()); 





$sql='select * from etat'; 
$res=mysql_query($sql); 

$i=0;
while($tab=mysql_fetch_array($res)){
$liste_etat[$i]=$tab['etat'];
$i++;
 }

echo(count($liste_etat)); 
?> 
<table  width="80%" border="1"> 
    <tr> 
        <td><b>N°operation</b></td> 
        <td><b>Date</b></td> 
        <td><b>Serie</b></td> 
        <td><b>Etat</b></td> 
    </tr> 
<?php 
while($list=mysql_fetch_array($req)) 
{ 
    ?> 
    <tr> 
        <td><input type="text" name="etatobjet" value=<?php echo($list['idetatobjet']); ?> /></td> 
        <td><input type="text" name="date" value=<?php echo($list['date']); ?> /></td> 
        <td><input type="text" name="serie" value=<?php echo($list['serie']); ?> /></td> 
        <td>

<?php 


?>  

	<select name="etat"> 

<?php 
//while($list=mysql_fetch_array($res)) 
$num=(count($liste_etat)-2);
for($i=0;$i<$num;$i++){ 
//<option value=<?php echo($list['etat']); ?> ><?php echo ($list['etat']); ?></option>
//<option value=<?php echo ($liste_etat[$i])?>><?php for($i=1;$i<5;$i++){
//if($liste_etat[$i] == $list['etat']){echo(" selected=\"selected\"");}}?>><?php echo ($list['etat']); ?></option> 
?> 


<option value="<?php echo($liste_etat[$i]);?>"><?php echo ($liste_etat[$i]); ?></option>
	
<?php 
} 
?> 
	</select>


	</td> 
    </tr> 
<?php 
} 
}
?> 
    <tr> 
        <td><input type="text" name="etatobjet1" value="" /></td> 
        <td><input type="text" name="date" value="<?php echo date("d/m/Y"); ?>"  /></td> 
        <td><input type="text" name="serie" value="" /></td> 
        <td> 
<?php 
$sql='select * from etat'; $res=mysql_query($sql); 
?> 
            <select name="etat"> 
<?php 
while($list=mysql_fetch_array($res)) 
{ 
?> 
                <option value="<?php echo($list['id']); ?>"><?php echo($list['etat']); ?></option> 
<?php 
} 
?> 
            </select> 
        </td> 
    </tr> 
</table> 

<?php echo count($liste_etat);

echo("<pre>"); 
var_dump($liste_etat); 
echo("</pre>\n"); 

?>

</body> 
</html> 

Mammouth du PHP | 19672 Messages

18 mai 2005, 11:49

Essaye avec ça:
<html>
<head>
</head>
<body>
<?php
// on se connecte à MySQL
$db = mysql_connect('localhost', 'root', '');
// on sélectionne la base
mysql_select_db('conso',$db);

// on crée la requête SQL
$sql = "SELECT etat.etat, idetatobjet, date, serie
FROM etat, etatobjet
WHERE etat.id = etatobjet.etat ";

//$sql = "SELECT *  FROM etatobjet ";

//echo $sql;


// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>\n'.$sql.'<br>\n'.mysql_error());

$sql='select * from etat';
$res=mysql_query($sql);

$i=0;
$liste_etat = array();
while($tab=mysql_fetch_array($res))
{
    $liste_etat[$i]=$tab['etat'];
    $i++;
}

// echo(count($liste_etat));
?>
<table  width="80%" border="1">
    <tr>
        <td><b>N°operation</b></td>
        <td><b>Date</b></td>
        <td><b>Serie</b></td>
        <td><b>Etat</b></td>
    </tr>
<?php
while($list=mysql_fetch_array($req))
{
    ?>
    <tr>
        <td><input type="text" name="etatobjet" value=<?php echo($list['idetatobjet']); ?> /></td>
        <td><input type="text" name="date" value=<?php echo($list['date']); ?> /></td>
        <td><input type="text" name="serie" value=<?php echo($list['serie']); ?> /></td>
        <td>
            <select name="etat">

<?php
    for($j=0; $j<count($liste_etat); $j++)
    {
        ?>
                <option value=<?php echo ($liste_etat[$j]); if($liste_etat[$j] == $list['etat']){echo(" selected=\"selected\"");}?>><?php echo ($list['etat']); ?></option>
<?php
    }
?>
            </select>


        </td>
    </tr>
<?php
}
?>
    <tr>
        <td><input type="text" name="etatobjet1" value="" /></td>
        <td><input type="text" name="date" value="<?php echo date("d/m/Y"); ?>"  /></td>
        <td><input type="text" name="serie" value="" /></td>
        <td>
<?php
$sql='select * from etat'; $res=mysql_query($sql);
?>
            <select name="etat">
<?php
while($list=mysql_fetch_array($res))
{
?>
                <option value="<?php echo($list['id']); ?>"><?php echo($list['etat']); ?></option>
<?php
}
?>
            </select>
        </td>
    </tr>
</table>
</body>
</html>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 406 Messages

18 mai 2005, 11:56

en faite sa fonctionne mais le truc c est que dans la liste deroulante il y a toujours la meme valeur.

Par exemple si c est afficher en panne alors j ai 4 fois en panne dans la liste et si c est afficher en stock j ai 4 fois en stock et pas les autre valeur comme au depart ?

Mammouth du PHP | 19672 Messages

18 mai 2005, 12:02

:shock: Tu as fait un copier/coller tel quel ou tu as juste modifiée des parties à partir du code que j'ai envoyé ?

Techniquement, ce que tu me dis est pas possible.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 406 Messages

18 mai 2005, 14:12

ouai j ai fait un copier coller et sa ce que je t ai dit
mais maintenant sa marche j ai changer sa
<option value=<?php echo ($liste_etat[$j]); if($liste_etat[$j] == $list['etat']){echo(" selected=\"selected\"");}?>><?php echo ($list['etat']); ?></option> 
par sa
<option value=<?php echo ($liste_etat[$j]); if($liste_etat[$j] == $list['etat']){echo(" selected=\"selected\"");}?>><?php echo ($liste_etat[$j]); ?></option> 
Merci :)
Je commence à comprendre petit à petit