Problème boucle PHP
Résolu/Fermé
pekwy
Messages postés
11
Date d'inscription
jeudi 13 mai 2010
Statut
Membre
Dernière intervention
4 juin 2012
-
Modifié par pekwy le 13/05/2010 à 19:16
pekwy Messages postés 11 Date d'inscription jeudi 13 mai 2010 Statut Membre Dernière intervention 4 juin 2012 - 13 mai 2010 à 20:04
pekwy Messages postés 11 Date d'inscription jeudi 13 mai 2010 Statut Membre Dernière intervention 4 juin 2012 - 13 mai 2010 à 20:04
A voir également:
- Problème boucle PHP
- Easy php - Télécharger - Divers Web & Internet
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
- Redmi redémarre en boucle - Fastboost impossible - Forum Xiaomi
21 réponses
mrgeek
Messages postés
23
Date d'inscription
jeudi 13 mai 2010
Statut
Membre
Dernière intervention
11 juillet 2010
5
Modifié par mrgeek le 13/05/2010 à 19:31
Modifié par mrgeek le 13/05/2010 à 19:31
hum ... étant donné que je ne sais pas a quoi sert ta fonction tep_db_fetch_array, mais qu'au nom il doit bien y avoir une correspondance à mysql_num_rows ... en faisant ca et en limitant ta requête SQL avec une condition au select du type "where visible='1'"...
Sinon tel quel (enfin en cleanant un peu ton code) dans un array:
Sinon tel quel (enfin en cleanant un peu ton code) dans un array:
<? $visibilite = 0; $rst = array(); while ($document = tep_db_fetch_array($document)){ if ($document[visible] == '1') { array_push($rst, date("d/m/Y", strtotime($document[date_de_creation])).' - '.$document[nom].'<br/>'); $visibilite ++; } } foreach($rst as $line){ echo 'Documents visibles :'.$visibilité.' '.$line; } ?>
allyson77
Messages postés
20
Date d'inscription
jeudi 13 mai 2010
Statut
Membre
Dernière intervention
17 mai 2010
2
13 mai 2010 à 19:31
13 mai 2010 à 19:31
Quel format souhaites tu pour tes données?
Pour le moment ca doit être quelque chose du genre :
date1 - nom1
date2 - nom2
date3 - nom3
Documents visibles : 3
Pour le moment ca doit être quelque chose du genre :
date1 - nom1
date2 - nom2
date3 - nom3
Documents visibles : 3
pekwy
Messages postés
11
Date d'inscription
jeudi 13 mai 2010
Statut
Membre
Dernière intervention
4 juin 2012
Modifié par pekwy le 13/05/2010 à 19:35
Modifié par pekwy le 13/05/2010 à 19:35
@allyson77
Pour l'instant c'est le format qui s'affiche.
Moi je souhaiterais ce format :
Documents visibles : 3
date1 - nom1
date2 - nom2
date3 - nom3
Merci !
Pour l'instant c'est le format qui s'affiche.
Moi je souhaiterais ce format :
Documents visibles : 3
date1 - nom1
date2 - nom2
date3 - nom3
Merci !
mrgeek
Messages postés
23
Date d'inscription
jeudi 13 mai 2010
Statut
Membre
Dernière intervention
11 juillet 2010
5
Modifié par mrgeek le 13/05/2010 à 19:36
Modifié par mrgeek le 13/05/2010 à 19:36
Bah reprends le même principe que ma première réponse en sortant le Documents visible du foreach:
$visibilite = 0; $rst = array(); while ($document = tep_db_fetch_array($document)){ if ($document[visible] == '1') { array_push($rst, date("d/m/Y", strtotime($document[date_de_creation])).' - '.$document[nom].'<br/>'); $visibilite ++; } } echo 'Documents visibles :'.$visibilité.'<br />'; foreach($rst as $line){ echo $line.'<br />'; } ?>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
pekwy
Messages postés
11
Date d'inscription
jeudi 13 mai 2010
Statut
Membre
Dernière intervention
4 juin 2012
13 mai 2010 à 19:37
13 mai 2010 à 19:37
@mrgeek
Je ne peux pas restreindre ma requête avec visibilite ='1' car cette requête est source de plusieurs traitements dont certains avec visibilite ='0'
Merci !
Je ne peux pas restreindre ma requête avec visibilite ='1' car cette requête est source de plusieurs traitements dont certains avec visibilite ='0'
Merci !
allyson77
Messages postés
20
Date d'inscription
jeudi 13 mai 2010
Statut
Membre
Dernière intervention
17 mai 2010
2
13 mai 2010 à 19:38
13 mai 2010 à 19:38
Remplace
Par
<? $visibilite = 0 ?> <? while ($document = tep_db_fetch_array($document)) { if ($document[visible] == '1') { echo date("d/m/Y", strtotime($document[date_de_creation])); ?> - <? echo $document[nom].'<br/>'; $visibilite = $visibilite + 1; } } ?> Documents visibles : <? echo $visibilite; ?>
Par
<? $visibilite = 0 ?> <? while ($document = tep_db_fetch_array($document)) { if ($document[visible] == '1') { $visibilite = $visibilite + 1; } } ?> Documents visibles : <? echo $visibilite; ?> <? while ($document = tep_db_fetch_array($document)) { if ($document[visible] == '1') { echo date("d/m/Y", strtotime($document[date_de_creation])); ?> - <? echo $document[nom].'<br/>'; } } ?>
mrgeek
Messages postés
23
Date d'inscription
jeudi 13 mai 2010
Statut
Membre
Dernière intervention
11 juillet 2010
5
13 mai 2010 à 19:38
13 mai 2010 à 19:38
Utilise le code donné 8-) y'a aucune restriction c'est le même code que celui que tu as fourni mais corrigé
allyson77
Messages postés
20
Date d'inscription
jeudi 13 mai 2010
Statut
Membre
Dernière intervention
17 mai 2010
2
13 mai 2010 à 19:40
13 mai 2010 à 19:40
A part si tu as une méthode du genre rep_db_nb_rows($document);
Tu devra faire deux boucles, la première qui compte puis affiche le total, la deuxième qui affiche les lignes.
Tu devra faire deux boucles, la première qui compte puis affiche le total, la deuxième qui affiche les lignes.
pekwy
Messages postés
11
Date d'inscription
jeudi 13 mai 2010
Statut
Membre
Dernière intervention
4 juin 2012
13 mai 2010 à 19:43
13 mai 2010 à 19:43
J'ai remplacé le code par celui donné par allyson77 mais ça ne fonctionne pas, ça ne m'affiche que le nombre de documents visibles
pekwy
Messages postés
11
Date d'inscription
jeudi 13 mai 2010
Statut
Membre
Dernière intervention
4 juin 2012
13 mai 2010 à 19:44
13 mai 2010 à 19:44
effectivement j'ai une méthode du genre rep_db_nb_rows($document);
allyson77
Messages postés
20
Date d'inscription
jeudi 13 mai 2010
Statut
Membre
Dernière intervention
17 mai 2010
2
13 mai 2010 à 19:45
13 mai 2010 à 19:45
A cause des noms de variable dupliqués, essaye par ca plutot :
<? $visibilite = 0 ?> <? while ($documentA = tep_db_fetch_array($document)) { if ($documentA[visible] == '1') { $visibilite = $visibilite + 1; } } ?> Documents visibles : <? echo $visibilite; ?> <? while ($documentB = tep_db_fetch_array($document)) { if ($documentB[visible] == '1') { echo date("d/m/Y", strtotime($documentB[date_de_creation])); ?> - <? echo $documentB[nom].'<br/>'; } } ?>
allyson77
Messages postés
20
Date d'inscription
jeudi 13 mai 2010
Statut
Membre
Dernière intervention
17 mai 2010
2
13 mai 2010 à 19:46
13 mai 2010 à 19:46
Si tu as une as cette méthode, ton code sera le suivant :
Documents visibles : <? echo tep_db_nb_rows($document) ?>
<? while ($documentB = tep_db_fetch_array($document))
{
if ($documentB[visible] == '1')
{
echo date("d/m/Y", strtotime($documentB[date_de_creation]));
?> - <?
echo $documentB[nom].'<br/>';
}
}
?>
Documents visibles : <? echo tep_db_nb_rows($document) ?>
<? while ($documentB = tep_db_fetch_array($document))
{
if ($documentB[visible] == '1')
{
echo date("d/m/Y", strtotime($documentB[date_de_creation]));
?> - <?
echo $documentB[nom].'<br/>';
}
}
?>
mrgeek
Messages postés
23
Date d'inscription
jeudi 13 mai 2010
Statut
Membre
Dernière intervention
11 juillet 2010
5
13 mai 2010 à 19:48
13 mai 2010 à 19:48
@allyson77 : Il ne limite pas sa requête ca affichera le nombre de lignes sortantes de la requête.
@pekwy : Encore une fois essaye la solution donnée 8-) Ca sert à quoi que Ducros se décarcasse
@pekwy : Encore une fois essaye la solution donnée 8-) Ca sert à quoi que Ducros se décarcasse
allyson77
Messages postés
20
Date d'inscription
jeudi 13 mai 2010
Statut
Membre
Dernière intervention
17 mai 2010
2
13 mai 2010 à 19:51
13 mai 2010 à 19:51
Oui le nb_rows donnera le nombre total de document, que 'visible' soit à 1 ou 0, tu as raison mister geek ;-)
pekwy
Messages postés
11
Date d'inscription
jeudi 13 mai 2010
Statut
Membre
Dernière intervention
4 juin 2012
13 mai 2010 à 19:52
13 mai 2010 à 19:52
J'ai essayé toutes les solutions proposées mais ça ne m'affiche que le nombre de documents visibles. Je n'ai pas le nom et la date de chaque document
mrgeek
Messages postés
23
Date d'inscription
jeudi 13 mai 2010
Statut
Membre
Dernière intervention
11 juillet 2010
5
13 mai 2010 à 19:54
13 mai 2010 à 19:54
Faut savoir ce qu'on veut des fois ...
Tu as dit:
Moi je souhaiterais ce format :
Documents visibles : 3
date1 - nom1
date2 - nom2
date3 - nom3
...
On te donne les solutions selon ce que tu nous demande :)
Peux-tu donner littéralement ce que tu recherche?
Tu as dit:
Moi je souhaiterais ce format :
Documents visibles : 3
date1 - nom1
date2 - nom2
date3 - nom3
...
On te donne les solutions selon ce que tu nous demande :)
Peux-tu donner littéralement ce que tu recherche?
pekwy
Messages postés
11
Date d'inscription
jeudi 13 mai 2010
Statut
Membre
Dernière intervention
4 juin 2012
13 mai 2010 à 19:55
13 mai 2010 à 19:55
effectivement je souhaite le format :
Documents visibles : 3
date1 - nom1
date2 - nom2
date3 - nom3
Mais en testant vos solutions j'ai juste :
Documents visibles : 3
Documents visibles : 3
date1 - nom1
date2 - nom2
date3 - nom3
Mais en testant vos solutions j'ai juste :
Documents visibles : 3
allyson77
Messages postés
20
Date d'inscription
jeudi 13 mai 2010
Statut
Membre
Dernière intervention
17 mai 2010
2
13 mai 2010 à 19:56
13 mai 2010 à 19:56
Si cette solution là ne fonctionne pas (donné un peu plus haut), j'ai épuisé mais ressource...
Faudrait chercher alors a savoir ce que fait ton tep_db_fetch_array...
Essaye de voir ce qu'est contenu dans la variable $document après le passage de la première boucle => var_dump($document);
<? $visibilite = 0 ?> <? while ($documentA = tep_db_fetch_array($document)) { if ($documentA[visible] == '1') { $visibilite = $visibilite + 1; } } ?> Documents visibles : <? echo $visibilite; ?> <? while ($documentB = tep_db_fetch_array($document)) { if ($documentB[visible] == '1') { echo date("d/m/Y", strtotime($documentB[date_de_creation])); ?> - <? echo $documentB[nom].'<br/>'; } } ?>
Faudrait chercher alors a savoir ce que fait ton tep_db_fetch_array...
Essaye de voir ce qu'est contenu dans la variable $document après le passage de la première boucle => var_dump($document);
mrgeek
Messages postés
23
Date d'inscription
jeudi 13 mai 2010
Statut
Membre
Dernière intervention
11 juillet 2010
5
13 mai 2010 à 19:57
13 mai 2010 à 19:57
$visibilite = 0; // Créé un array $rst = array(); // Boucle sur ton résultat while ($document = tep_db_fetch_array($document)){ // Si le document est visible if ($document[visible] == '1') { // On ajoute a l'array Date - nom du document array_push($rst, date("d/m/Y", strtotime($document[date_de_creation])).' - '.$document[nom].'<br/>'); // On ajoute 1 au compteur visibilité $visibilite ++; } } // On affiche le nombre de documents visibles echo 'Documents visibles :'.$visibilité.'<br />'; // Pour chaque element de l'array foreach($rst as $line){ // On afficher Date - nom du document echo $line.'<br />'; } ?>
Ca donne exactement ta demande :|
allyson77
Messages postés
20
Date d'inscription
jeudi 13 mai 2010
Statut
Membre
Dernière intervention
17 mai 2010
2
13 mai 2010 à 19:59
13 mai 2010 à 19:59
La solution de mrgeek devrait fonctionner aussi.
Tu n'as pas d'erreur PHP je suppose?
Tu n'as pas d'erreur PHP je suppose?