Locace Posté 8 Février 2007 Partager Posté 8 Février 2007 Bonjour, Je vous livre en pature un bout de code qui reste mysterieux a mes yeux de néophyte. <fieldset> <legend>Accessoires disponibles</legend> <table> <tr class="head"> <td>Ref</td> <td>Nom</td> <td>Lier</td> </tr> <? // On récupère TOUS les accessoires $requete_tous_accessoires = mysql_query("SELECT * FROM accessoire"); while ($data_tous_accessoire = mysql_fetch_array($requete_tous_accessoires)); { $id_tous_accessoire = $data_tous_accessoire['id']; $requete_liaisons = mysql_query("SELECT id_accessoire FROM couple_pdt_acc WHERE id_produit='$id_produit'"); while ([b]$id_accessoire_liaison [/b] = mysql_fetch_array($requete_liaisons)); { echo '<pre>'; print_r($id_accessoire_liaison); echo '</pre>'; if (!in_array ("$id_tous_accesoire", [b]$id_accessoire_liaison[/b])) { echo '<tr>'; echo '<td>'; echo $data_tous_accessoire['ref']; echo '</td>'; echo '<td>'; echo $data_tous_accessoire['nom']; echo '</td>'; echo '<td><input name="liaison['.$id.']" type="checkbox" value="'.$id_tous_accessoire.'" /></td>'; echo '</tr>'; } } } ?> </table> </fieldset> Le problème est sur ma variable $id_accessoire_liaison . La fonction in_array ne la reconnait pas en tant que array puisque PHP me sort l'erreur suivante : Warning: in_array() [function.in-array]: Wrong datatype for second argument in /home.10.8/emphasel/www/case_a_vins/admin/produit.php on line 301 Chose d'autant plus étrange que quand je vire le WHILE qui encadre ma variable $id_accessoire_liaison, alors ce problème d'argument n'apparait plus, mais (car il y a toujours un mais) le array $id_accessoire_liaison ne contient que un seul enregistrement au lieu de plusieurs. Qu'en pensez vous ? Bonne journée Lien vers le commentaire Partager sur d’autres sites More sharing options...
Portekoi Posté 8 Février 2007 Partager Posté 8 Février 2007 Bonjour, Déjà, tu récupères la variables $id_tous_accessoire alors que dans ta requête, tu as $id_produit. Remplace ceci : $requete_liaisons = mysql_query("SELECT id_accessoire FROM couple_pdt_acc WHERE id_produit='$id_produit'"); par : $requete_liaisons = mysql_query("SELECT id_accessoire FROM couple_pdt_acc WHERE id_produit='$id_produit'") or die(mysql_error()); ++ Portekoi Lien vers le commentaire Partager sur d’autres sites More sharing options...
Locace Posté 8 Février 2007 Auteur Partager Posté 8 Février 2007 (modifié) Merci de ta réponse portekoi mais ca ne m'aide pas. En effet mon in_array fait toujours des siennes Modifié 8 Février 2007 par Locace Lien vers le commentaire Partager sur d’autres sites More sharing options...
georges Posté 8 Février 2007 Partager Posté 8 Février 2007 (modifié) if (!in_array ("$id_tous_accesoire", $id_accessoire_liaison)) retire les "" if (!in_array ($id_tous_accesoire, $id_accessoire_liaison)) edit je dis des betises Modifié 8 Février 2007 par georges Lien vers le commentaire Partager sur d’autres sites More sharing options...
Portekoi Posté 8 Février 2007 Partager Posté 8 Février 2007 Et si tu fais un is_array() juste au dessus, il renvoie quoi? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Anonymus Posté 12 Février 2007 Partager Posté 12 Février 2007 Bonjour, Tu as inversé les paramètres : if (in_array("un élément", $le_tableau)) { echo "est dans le tableau"; Lien vers le commentaire Partager sur d’autres sites More sharing options...
TheRec Posté 12 Février 2007 Partager Posté 12 Février 2007 Euh... non il les a mis dans le bon ordre, mais effectivement le nom des variables qu'il a utilisé peuvent porter à confusion. Sinon je penche pour la même solution que georges, les guillemets sont de trop. Mais je pense plutôt que tu devrais essayer d'utiliser les jointures entre tes tables pour faire ce genre de requêtes (c'est à ça que ça sert), car une requête dans une boucle peut s'avérer très coûteuse en ressource lors de la montée en charge. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sarc Posté 12 Février 2007 Partager Posté 12 Février 2007 Bonjour, Gardez en tête que print_r() place le pointeur de tableau à la fin du tableau. Utilisez reset() pour le ramener au début. Je ne sais pas si ça change quelque chose pour un in_array, mais sait-on jamais... De plus, il manque un s à ta première variable if (!in_array ($id_tous_accesoire, $id_accessoire_liaison)) accesoire => accessoire Essaye avec tout ce qui a été dit Lien vers le commentaire Partager sur d’autres sites More sharing options...
TheRec Posté 12 Février 2007 Partager Posté 12 Février 2007 Oh oui Comme quoi, on est tous passé à côté de cette faute "d'orthographe" sauf sarc, bravo Les guillemets restent superflus mais ne doivent pas gêner... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant