aide tableau 2d

michael410
Invité n'ayant pas de compte PHPfrance

16 févr. 2011, 13:20

bonjour
j'ai récupéré un morceau de code pour enregistrer les produits consultés mais je n'arrive pas à corriger 2 bugs:
1. pas de test si le produit est déjà dans le tableau
2. affichage de 8 images dont 7 vides si le tableau ne contient qu'une ligne

est ce qu'une bonne âme peut m'aider?

Code : Tout sélectionner

if (isset($_SESSION['ProdVu'])) { $ProdVu = ($_SESSION['ProdVu']); } else { $ProdVu = array(array()); } // ici bug1 manque test si article deja present array_unshift($ProdVu, array("ID" => $resultat['ID'], "IMG" => $resultat[$image])); if (sizeof($ProdVu) > 8) { array(array_pop($ProdVu)); } //limite a 8 $_SESSION['ProdVu'] = $ProdVu; $NbProdVu = sizeof($ProdVu);
partie affichage:

Code : Tout sélectionner

<? for ($row = 0; $row < 8; $row++) //ici bug 2 { echo "<td><a href='lien.php?ID=".$ProdVu[$row]['ID']."'> <img src='/".$ProdVu[$row]['IMG']."' border='0' width='50' /> </a> </td>"; } ?>

ViPHP
xTG
ViPHP | 7331 Messages

16 févr. 2011, 13:33

Bug 2 : il faut tester l'existence de la variable => isSet() ou empty()

michael410
Invité n'ayant pas de compte PHPfrance

16 févr. 2011, 15:30

j'ai trouvé pour le bug 2, le tableau étant dans un tableau, je compte le nombre de ligne du tableau - 1

$NbProd=sizeof($ProdVu);

for ($row = 0; $row < ($NbProd-1); $row++)
{
echo "<a href='lien.php?ID=".$ProdVu[$row]['ID']."'><img src='/".$ProdVu[$row]['IMG']."' width='50' /></a>";
}

je cale completement sur le bug1....

ViPHP
xTG
ViPHP | 7331 Messages

16 févr. 2011, 15:45

Pour le bug 1 : in_array()
Je ne l'ai pas posté avant car je n'étais pas sûr qu'on pouvait lui faire rechercher un tableau. :)

michael410
Invité n'ayant pas de compte PHPfrance

16 févr. 2011, 15:59

merci, je trouve pas comment faire le test dans le tableau, ce dernier etant deja dans un tableau (sic...)

ViPHP
xTG
ViPHP | 7331 Messages

16 févr. 2011, 17:16

Exemple numéro 3 de la documentation. ;)

michael410
Invité n'ayant pas de compte PHPfrance

16 févr. 2011, 17:27

if (in_array(array($resultat['ID']), $ProdVu)) {
}else{
array_unshift($ProdVu, array("ID" => $resultat['ID'], "IMG" => $resultat[$Image]));
}

>> marche toujours pas, je vais devenir fou....

pour info un print_r me donne:
Array ( [0] => Array ( [ID] => 8675 [IMG] => 8675.jpg ) [1] => Array ( [ID] => 14564 [IMG] => 14564.jpg ) [2] => Array ( [ID] => 14564 [IMG] => 14564.jpg ) [3] => Array ( ) )

ViPHP
xTG
ViPHP | 7331 Messages

16 févr. 2011, 17:30

Ton print_r() nous renseigne bien pourtant sur le fait que le tableau intérieur ne contient pas que l'id. ;)
Pour PHP : array( 'id' => 1) != array( 'id' => 1, 'img' => "image.jpg")

michael410
Invité n'ayant pas de compte PHPfrance

16 févr. 2011, 17:41

est ce qu'il y a un forum extra debutant? ou gros nuls?
car là je suis absolument pas...

ViPHP
xTG
ViPHP | 7331 Messages

16 févr. 2011, 19:44

C'est pas une question de langage qui te bloque mais de compréhension. :/
Je t'explique avec un bel exemple ce qui ne va pas.

Si tu préfères avec des termes sur un autre exemple plus simple :
Pour PHP : "toto" != "tata"
Et aussi : "toto" != "toto1"