Foreach php4 vs php5

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 php4 vs php5

Re: Foreach php4 vs php5

par moogli » 06 nov. 2012, 22:01

Null, c'est pas forcément bon ça ? XD
Nan pas trop, comme déjà indiqué, par Ryle il faut que tu revois le fonctionnement de ta méthode loadObjectList, ou alors bien prévoir ce cas ;)


@+

Re: Foreach php4 vs php5

par m76 » 05 nov. 2012, 19:31

merci pour tes efforts dix2 Image
malheureusement on a le même résultat

Ryle,
Null, c'est pas forcément bon ça ? XD

Re: Foreach php4 vs php5

par Ryle » 05 nov. 2012, 17:05

Si le problème se situe au niveau du foreach(), c'est que c'est le tableau que tu lui passes en argument qui n'en est pas un. Probablement le même problème que celui signalé par dix2, mais sur le résultat de ta méthode loadObjectList() qui ne te retourne pas (plus ?) un tableau.

Tu peux faire un var_dump($rows) pour vérifier ce que celui-ci contient, mais à priori il faudrait regarder le traitement de cette méthode pour voir ce qui ne va pas :)

Re: Foreach php4 vs php5

par dix2 » 05 nov. 2012, 16:59

et avec ça :
$db->setQuery($q);
$rows = $db->loadObjectList();

$res = array();
if(is_array($rows)){
    foreach($rows as $row){
        $row_copie = clone $row;
        $row_copie->dep = $this->getDep($row_copie->id);
        $res[] = $row_copie;
    }
}
return $res;

Re: Foreach php4 vs php5

par m76 » 05 nov. 2012, 16:25

(désolé un peu trop assisté sur ce genre de bug :'()

il manquait un ) à la fin de "if(is_array($rows)"

là je n'ai plus le parse error ni le message d'erreur, mais je n'ai plus le résultat d'avant (sous php4)

Re: Foreach php4 vs php5

par m76 » 05 nov. 2012, 16:09

là, il me met un parse error sur le premier crochet

Re: Foreach php4 vs php5

par dix2 » 05 nov. 2012, 16:02

avec ce code là:
$db->setQuery($q);
$rows = $db->loadObjectList();

$res = array();
if(is_array($rows){
    foreach($rows as $row){
        $row->dep = $this->getDep($row->id);
        $res[] = $row;
    }
}
return $res;
}
as-tu tjs l'erreur ?

Re: Foreach php4 vs php5

par m76 » 05 nov. 2012, 15:48

toujours le même :
Warning: Invalid argument supplied for foreach()
avec en référence la ligne du foreach

Re: Foreach php4 vs php5

par dix2 » 05 nov. 2012, 15:04

quel est le message d'erreur ?

Re: Foreach php4 vs php5

par m76 » 05 nov. 2012, 15:02

... heu non en fait ça ne marche pas ou plus (c'est possible ?)

:cry:

Re: Foreach php4 vs php5

par m76 » 05 nov. 2012, 13:36

Ah ! ça marche

milles mercis =D>

Re: Foreach php4 vs php5

par dix2 » 05 nov. 2012, 13:26

salut,

avec PHP5, le objets sont passés par référence alors qu'en PHP4, c'est par valeur
donc il faut forcer la copie de l'objet :
$db->setQuery($q);
$rows = $db->loadObjectList();

$res = array();
foreach($rows as $row){
    $row_copie = clone $row;
    $row_copie->dep = $this->getDep($row_copie->id);
    $res[] = $row_copie;
}
return $res;
@+
dix2

Foreach php4 vs php5

par m76 » 05 nov. 2012, 13:06

Bonjour à tous,
je fais parti de la majorité silencieuse du forum mais là, en noob que je suis, je suis bloqué avec un script pour un CMS qui ne passe pas suite à une "migration" en php5 et qui me donne :"Invalid argument supplied for foreach()"...

un morceau du code :
		$db->setQuery($q);
		$rows = $db->loadObjectList();
		
		$res = array();
		foreach($rows as $row){
			$row->dep = $this->getDep($row->id);
			$res[] = $row;
		}
		return $res;
	}
j'ai essayé différents trucs (vus ici ou ailleurs), mais au mieux j'ai juste le message d'erreur qui disparait.

En fait, il semblerait que la valeur soit nulle.

Comment faire pour que cela fonctionne comme avant ?
Merci d'avance :priere: