Précédent   Forum des professionnels en informatique > PHP > Outils > Zend
Zend Le forum sur les solutions et la certification Zend. Avant de poster : FAQ Zend, toutes les FAQ PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/05/2011, 09h39   #1
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
Par défaut Zend studio erreur sur while

Bonjours,

Voila a quoi ressemble ma condition :
Code :
1
2
3
4
 
while ($row = $conn->tableauAssoc()) { 
 //............//
}
Donc zend studio me retourne cette avertissement :
Code :
1
2
 
Asignment in condition

Pour pallier a ce problème, je fais sa :
Code :
1
2
3
4
5
6
7
 
$row = $conn->tableauAssoc();
 
while ($row) {
$row = $conn->tableauAssoc();
 //............//
}
Maintenant le probleme, c'est que ma boucle enleve un resultat a retourné, donc a la place d'avoir sa :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
############
#  ID  #  valeur   # 
############
#   1   #  test 1   #
#   2   #  test 2   #
#   3   #  test 3   #
#   4   #  test 4   #
#   5   #  test 5   #
#   6   #  test 6   #
#   7   #  test 7   #
#   8   #  test 8   #
#   9   #  test 9   #
#   10 #  test 10 #
############

J'ai sa :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
############
#  ID  #  valeur   # 
############
#   1   #  test 1   #
#   2   #  test 2   #
#   3   #  test 3   #
#   4   #  test 4   #
#   5   #  test 5   #
#   6   #  test 6   #
#   7   #  test 7   #
#   8   #  test 8   #
#   9   #  test 9   #
#   10 #             #
############
Donc comme on peut le voir, la valeur du 10eme index (test 10) ne s'affiche plus.

Pourquoi ?

J'utilise ODBC, mais le resultat est le meme sur PDO.

Merci
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/05/2011, 09h52   #2
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 823
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 823
Points : 3 449
Points : 3 449
Woww tu vas devoir utiliser un do/while pour ne pas perdre le premier $row ;-)

Code :
1
2
3
4
5
6
do {
    $row = $conn->tableauAssoc();
    if ( $row ) {
 
    }
} while ( $row ) ;
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2011, 09h53   #3
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 823
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 823
Points : 3 449
Points : 3 449
Citation:
Envoyé par thebarbarius Voir le message
Voila a quoi ressemble ma condition :
Code :
1
2
3
4
 
while ($row = $conn->tableauAssoc()) { 
 //............//
}
Donc zend studio me retourne cette avertissement :
Code :
1
2
 
Asignment in condition
Et sinon si tu fais :

Code :
while (($row = $conn->tableauAssoc()) != FALSE) {
Il aime toujours pas ?
(remplace FALSE pas ce qui convient)
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/05/2011, 10h18   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
c'est soit disant parce que tu pourrais faire une erreur de condition
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2011, 12h28   #5
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
Merci,

Oui en effet c'est a cause des erreur trop frequente du genre :
Code :
1
2
 
if (1 = 1):  endif;
seb.

Je perds peut etre le while mais je le recupere ici :
Code :
1
2
3
4
5
6
7
 
$row = $conn->tableauAssoc();
 
while ($row) {
$row = $conn->tableauAssoc();
 //............//
}
Sa marche quand ou pas ?
Ou sa requiert tous de meme un do while.

Code :
1
2
 
while (($row = $conn->tableauAssoc()) != FALSE) {
c'est pas plutot :
Code :
1
2
 
while (($row = $conn->tableauAssoc()) !== FALSE) {
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/05/2011, 12h44   #6
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 823
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 823
Points : 3 449
Points : 3 449
Citation:
Sa marche quand ou pas ?
Ben tu ne traites pas le 1er $row

Citation:
c'est pas plutot :
Code :
while (($row = $conn->tableauAssoc()) !== FALSE) {
Pourquoi pas si $conn->tableauAssoc( ) retourne strictement FALSE à la fin de son itération.
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/05/2011, 13h28   #7
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
apres si t'es sur PDOp as besoin de while pour le statement est un Traversable un foreach dessus suffis
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2011, 13h38   #8
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
Si j'ai besoin du while.

Bon je vais essayer le do while pour voir.
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/05/2011, 13h44   #9
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
Citation:
Envoyé par thebarbarius Voir le message
Si j'ai besoin du while.

Bon je vais essayer le do while pour voir.
oublie pas que c'est juste un avertissement de zend studio mais en aucun cas une erreur de php

la syntaxe a adopter (pour zend studio) est :

Code :
1
2
while (($row = $conn->tableauAssoc()) != false)
// pas de comp strict ici
ou
Code :
1
2
3
 
$row = $conn->tableauAssoc();
while ($row)
pour le do...while le probleme sera le meme
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2011, 19h22   #10
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
Je sais bien que la zyntax est exact, mais c'est assez penible de voir cette partout, surtout quand tu debug.

Merci stealth c'est resolue.
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 02
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h48.


 
 
 
 
Partenaires

Hébergement Web