Flux rss
Collection CommentCaMarche.net
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

Boucle foreach capricieuse

Smoking bird, le vendredi 5 décembre 2008 à 02:40:50
Bonjour,

J'ai un problème avec ce code ci:

$ref=$_GET['ref'];
$image=$_GET['image'];

$sql="select ref,annexes from contenuofficiel where ref='".$ref."'";
$query=mysql_query($sql) or die(mysql_error());
while( $del=mysql_fetch_array($query) ) {
	$exploAnn=explode('||',$del['annexes']);
		foreach($exploAnn as $Image) {
			if( preg_match('/.jpg|.png|.gif|.jpeg/i',$Image) ){
				echo "fichier image<br />";
				if( preg_match("/$image/",$Image)) {
					echo 'cible';
				}
			}
		}
}


ref et image sont récupérées correctement.

Il y a deux tests avec expressions régulières dans le foreach, le premier se passe sans problème, mais c'est comme si à partir du second, le tableau $Image ne passait plus et n'existait tout simplement plus lors du test même.

Quelqu'un aurait -il une idée?

Merci

Smoke
Configuration: Windows Vista
Opera 9.62
Répondre à Smoking bird  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
pitxu, le vendredi 5 décembre 2008 à 09:51:57
bonjour,

imbriquer une boucle for each dans une boucle while est impossible, il faut utiliser l'une des 3 méthodes suivantes :

Il existe 3 façons de parcourir un tableau associatif. La plus courante et la plus évidente c'est :

//solution 1
foreach ($maTable as $maCle => $maValeur) {
//mon code
}

mais on peut également faire :

//solution 2
while (list($maCle,$maValeur) = each($maTable)) {
//mon code
}

//et solution 3
while ($monProchainElement = next($maTable)) {
//mon code
}
Répondre à pitxu

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Smoking bird, le vendredi 5 décembre 2008 à 14:12:25
bonjour, et merci de ta réponse^^

Je t'avous ne pas la comprendre, cependant. D'abord parce que ma boucle foreach fonctionne (relativement) dans le while, et ensuite parce que je n'ai aucune idée de comment mettre en pratique les codes que tu proposes, pour le projet qui est le mien.

Est il possible d'utiliser une boucle foreach pour balayer des résultats mysql?
Répondre à Smoking bird

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Smoking bird, le mardi 9 décembre 2008 à 18:53:24
up
Répondre à Smoking bird

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
toto, le mercredi 10 décembre 2008 à 12:16:44
Bonjour

Bien sûr que si on peut imbriquer une boucle foreach à l'intérieur d'un boucle while.
Un foreach ne permet pas de balayer les résultats d'une requête (ils sont fournis sous forme d'une ressource, pas d'un tableau).

Peux-tu préciser si $Image semble vide lors du deuxième passage dans le foreach ou s'il disparaît entre le preg_match('/.jpg|.png|.gif|.jpeg/i',$Image) et le preg_match("/$image/",$Image) ?
Répondre à toto

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 Smoking bird, le vendredi 12 décembre 2008 à 18:23:21
Bonjour toto et désolé de répondre aussi tard^^

J'ai modifié mon projet pour passer au delà de ce problème, mais il m'intrigue et j'aimerais bien trouver une solution^^

Dans mes souvenirs, $Image semble vide après la première regexp^^
Répondre à Smoking bird
Boucle foreach sur un type Object (Résolu) Bonjour, je cherche à extraire les quantités de chaque produits, ainsi que les autres données (nom, prix...). En utilisant foreach de la façon suivante : foreach($produits as produit){ echo $produit['_Quantite']; ... } Ca ne fonctionne pas.... www.commentcamarche.net/forum/affich-3391869-boucle-foreach-sur-un-type-object
[PhP] Test avant de faire une boucle foreach (Résolu) Bonjour, J'ai un petit souci ... J'affiche une liste ... classée par type ... Genre Type1 -Element Liste -Element Liste -Element Liste Type2 Type3 -Element Liste -Element Liste -Element Liste Element liste est stocké dans un array. Ma... www.commentcamarche.net/forum/affich-2098871-php-test-avant-de-faire-une-boucle-foreach
Problème de boucles imbriquées en PHP (Résolu) J'ai crée la fonction suivante en php,mais lors de son execution un problème apparait: Notice: Undefined offset: 1 in c:\documents and settings\...\recherche.php on line 66 Notice: Undefined offset: 2 in c:\documents and... www.commentcamarche.net/forum/affich-2624828-probleme-de-boucles-imbriquees-en-php
[Spyware] Musique incessante en boucle au démarrage de WindowsSi vous entendez une musique en boucle au démarrage de Windows, il s'agit probablement d'un spyware appelé Adware-Spyware/Zydat.A . Pour s'en débarrasser, il suffit de suivre la procédure suivante : - Redémarrer le PC en mode sans échec en tapotant... www.commentcamarche.net/faq/sujet-2708-spyware-musique-incessante-en-boucle-au-demarrage-de-windows
[PERL]-Problème "for if elsif" en menu (Résolu)Bonjour, j'ai créé une petite structure de menu en PERL, mais j'ai un souci lors de la saisie d'un choix avec 2 chiffres, il ne me prend que le dernier et va donc au menu correspondant, pas à celui que je voudrais (ex : je saisis 98, il... www.commentcamarche.net/forum/affich-2516370-perl-probleme-for-if-elsif-en-menu
[PhP]Boucle infinie ??? (Résolu)Bonjour, J'ai écris un code mais j'ai le droit a une fatal error ... J'ai peur d'avoir écrit une boucle infinie ... je voudrais votre avis $SR=''; for($serviceRecept;strlen($serviceRecept)>=3;substr($serviceRecept, 0,... www.commentcamarche.net/forum/affich-2048952-php-boucle-infinie
[VB] Boucle (Résolu)Bonjour, Je débute en VB et j'aimerais savoir s'il est possible de faire une boucle dans une déclaration de variables. En effet, j'ai fait un programme qui va chercher des données dans x feuilles Excel et plutôt que d'effectuer x... www.commentcamarche.net/forum/affich-1480387-vb-boucle
Bouclier fiscal : un simulateur en ligne ouvert pour les particuliers(Paris - Relaxnews) - Le ministère du Budget, des Comptes publics, et de la Fonction publique, annonce dans un communiqué qu'un simulateur, permettant aux particuliers de vérifier s'ils ont droit au bouclier fiscal à 60%, a été mis en ligne sur le... www.commentcamarche.net/actualites/bouclier-fiscal-un-simulateur-en-ligne-ouvert-pour-les-particuliers-3269504-actualite.php3
ADSL - Le dégroupage de la boucle localeIntroduction au dégroupage de la boucle locale On appelle "boucle locale" la partie finale de la ligne téléphonique arrivant à l'abonné. Afin de vous faire profiter de l'internet à haut débit (ADSL), les Fournisseurs d'Accès à Internet (FAI)... www.commentcamarche.net/contents/technologies/adsl-degroupage.php3