Problème boucle PHP
Résolu
pekwy
Messages postés
11
Date d'inscription
Statut
Membre
Dernière intervention
-
pekwy Messages postés 11 Date d'inscription Statut Membre Dernière intervention -
pekwy Messages postés 11 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
J'ai un problème dans une boucle PHP.
La boucle est la suivante :
<? $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; ?>
Pour le moment le nombre de documents visible s'inscrit en dessous du nom et date de création de chaque document visible et je voudrais que ce soit l'inverse.
En effet, je souhaiterais afficher le nombre de documents visibles ($visibilité) avant le nom ($document[nom]) et la date de création ($document[date_de_creation]) de chaque document visible.
Comment puis-je faire ?
D'avance merci,
Cordialement...
J'ai un problème dans une boucle PHP.
La boucle est la suivante :
<? $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; ?>
Pour le moment le nombre de documents visible s'inscrit en dessous du nom et date de création de chaque document visible et je voudrais que ce soit l'inverse.
En effet, je souhaiterais afficher le nombre de documents visibles ($visibilité) avant le nom ($document[nom]) et la date de création ($document[date_de_creation]) de chaque document visible.
Comment puis-je faire ?
D'avance merci,
Cordialement...
A voir également:
- Problème boucle PHP
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Php alert ✓ - Forum PHP
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Mise à disposition de boucle locale dédiée ✓ - Forum Freebox
21 réponses
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; } ?>
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
@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 !
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
@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 !
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/>'; } } ?>
Utilise le code donné 8-) y'a aucune restriction c'est le même code que celui que tu as fourni mais corrigé
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.
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
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/>'; } } ?>
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/>';
}
}
?>
@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
Oui le nb_rows donnera le nombre total de document, que 'visible' soit à 1 ou 0, tu as raison mister geek ;-)
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
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?
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
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);
$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 :|