Foreach () avec plusieurs Like

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Foreach () avec plusieurs Like

par Ryle » 24 avr. 2009, 10:59

Accessoirement, il faudrait également déclarer le tablea $tb en dehors de la boucle while. En effet, dès lors que ta requête ne trouvera aucun enregistrement correspondant, la variable $tb ne sera pas déclarée (puisqu'il n'entrera pas dans le while) et l'appel au foreach() renverra l'avertissement ci-dessus (mauvais argument spécifié).

Il suffit pour éviter cela, de simplement ajouter un " $tb = array(); " avant le while, afin de le déclarer :)

par Invité » 24 avr. 2009, 09:57

Bonjour momox,

Merci de ton aide le "OR" marche parfaitement bien.

Bonne journée

par momox » 24 avr. 2009, 07:28

Utilises la fonction print_r() afin de vérifier la structure de ton tableau. Ca te permettra de voir ton erreur ;)
Ensuite, ta requete est mal construite concernant les LIKE multiples. Il faudrait utiliser OR car tu demandes tous les produits dont les constructeurs sont en même temps HP, CANON, et BROTHER avec AND.

par muriel » 24 avr. 2009, 02:01

Bonsoir thehawk,

J'avais essayé ce code mais malheureusement j'ai toujours l'erreur au niveau de la ligne
(Invalid argument supplied for foreach() )
foreach ($tb as $v){ 
et j'ai lu que le foreach n'accepte u'une valeur sinon il faut faire un "array= " et là j'avoue que je suis perdue, mais merci de ton aide thehawk.

par thehawk » 24 avr. 2009, 00:57

 mysql_query("SELECT * FROM tarif WHERE constructeur LIKE '%hp%' AND  constructeur LIKE '%canon%'  AND  constructeur LIKE '%brother%'   "); 
Peut etre ;)

Foreach () avec plusieurs Like

par muriel » 24 avr. 2009, 00:32

Bonjour à tous,

Il y a quelques jours vous m'avez aidé pour crée mon code et je vous remercie une nouvelle fois mais je bloque sur une nouveau probleme dans ce meme code je desirai ajouter 3 differents LIKE '%hp' AND '%canon' AND '%brother' mais evidement cela ne marche absolument pas j'ai une erreur sur le foreach() et en allant lire des explications je comprends pourquoi cela ne marche pas mais je ne trouve pas la solution et c'est la raison pour laquelle je fais une nouvelle fois appel à vous, voici le code complet qui lui marche:
$result_query = mysql_query("SELECT * FROM tarif WHERE constructeur LIKE '%hp%'");
?> 
<table> 
<?php 
$col = 0 ; 
$row = 0; 

while($result = mysql_fetch_array($result_query)) { 

  $tb[$row][$col] = $result; 
  $row++; 

  if ($row == 10) { $row =0;$col++;} 

} 

//et ensuite  

foreach ($tb as $v){ 

  echo '<tr>  
<td> '. ((!empty($v[0])) ? $v[0]['constructeur'].' '.$v[0]['reference'] : '&nbsp;').'</td> 
<td> '. ((!empty($v[0])) ? $v[1]['constructeur'].' '.$v[1]['reference'] : '&nbsp;').'</td> 
<td> '. ((!empty($v[0])) ? $v[2]['constructeur'] : '&nbsp;').'</td> 
</tr> '; 

} 
?>
 </tr> 
</table>  
D'avance merci mille fois de votre aide,
muriel