[PHP] utilisation du foreach
Fermé
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
-
4 oct. 2008 à 16:01
okuni Messages postés 1221 Date d'inscription jeudi 4 septembre 2008 Statut Membre Dernière intervention 2 janvier 2014 - 10 oct. 2008 à 19:47
okuni Messages postés 1221 Date d'inscription jeudi 4 septembre 2008 Statut Membre Dernière intervention 2 janvier 2014 - 10 oct. 2008 à 19:47
A voir également:
- [PHP] utilisation du foreach
- Notice d'utilisation - Guide
- Utilisation chromecast - Guide
- Easy php - Télécharger - Divers Web & Internet
- Votre compte a été désactivé pour violation de nos conditions d’utilisation - Guide
- La ressource demandée est en cours d'utilisation ✓ - Forum Logiciels
29 réponses
donuts08
Messages postés
519
Date d'inscription
dimanche 13 novembre 2005
Statut
Membre
Dernière intervention
15 octobre 2008
39
6 oct. 2008 à 23:24
6 oct. 2008 à 23:24
bonjour,
faire des tests, des tests et encore des tests, ya que ce moyen qui est efficace pour trouver des bugs quand aucun message n'apparait! Mets des echos un peu partout pour voir au fur et à mesure de ton programme où sont les problèmes...
faire des tests, des tests et encore des tests, ya que ce moyen qui est efficace pour trouver des bugs quand aucun message n'apparait! Mets des echos un peu partout pour voir au fur et à mesure de ton programme où sont les problèmes...
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
126
7 oct. 2008 à 08:36
7 oct. 2008 à 08:36
On avance :p
sa marche mais seulement avec les echo :/
si j'enlève les 3 echo, le script ne fonctionne plus :s
Je comprend pas du tout
EDIT : J'ai réfléchi et en fait, il y a une confusion car dans le for j'utilise la numérotation mais dans mon code pour afficher les données, c'est avec les mot clef.
Y a-t-il un moyen de revenir au mot clef, c'est quand même plus pratique que les numéros :p
sa marche mais seulement avec les echo :/
for ($i = 0; $i <= 1; $i++ ) { $element = $donnees[$i]; echo 'element 1 :'.$element.'<br/>'; include ('../includes/regex.php'); echo 'element 2 :'.$element.'<br/>'; $donnees[$i] = $element; echo 'donnees :'.$donnees[$i].'<br/>'; }
si j'enlève les 3 echo, le script ne fonctionne plus :s
Je comprend pas du tout
EDIT : J'ai réfléchi et en fait, il y a une confusion car dans le for j'utilise la numérotation mais dans mon code pour afficher les données, c'est avec les mot clef.
Y a-t-il un moyen de revenir au mot clef, c'est quand même plus pratique que les numéros :p
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
126
7 oct. 2008 à 18:01
7 oct. 2008 à 18:01
Merci beaucoup pour ta réponse mais sa ne marche pas.
J'ai peut-être oublié quelque chose alors voila le code dans son intégrale.
J'ai mis des écho pour voir les données mais il n'y a rien qui s'affiche.
En testant, j'ai vu que $donnees.length ne fonctionne pas car j'ai remplacé par 1 (j'ai 2 donnée différente, le pseudo et le message) et les regex marchaient. avec ce code :
J'ai peut-être oublié quelque chose alors voila le code dans son intégrale.
<?php //Pagination des pages include ('../includes/pagination.php'); $query = "SELECT pseudo,comment FROM raynal_chat ORDER BY id DESC LIMIT $premier_message, $nombre_entree_par_page"; $result = mysql_query($query)or die (mysql_error()); $css = 'clair'; // Puis on fait une boucle pour afficher tous les résultats : while ($donnees = mysql_fetch_array($result) ) { if ($css == 'clair') { $css = 'fonce'; } else { $css = 'clair'; } for ($i = 0; $i <= $donnees.length - 1; $i++ ) { echo 'donnees 1 : '.$donnees[$i].'<br/>'; $element = $donnees[$i]; echo 'element 1 : '.$element.'<br/>'; include ('../includes/regex.php'); echo 'element 2 : '.$element.'<br/>'; $donnees[$i] = $element; echo 'donnees 2 : '.$donnees[$i].'<br/>'; } ?> <table width="100%" style="text-align:left;"> <tr> <td class="<?php echo $css;?>"><b><?php echo $donnees['pseudo']; ?></b> : <?php echo $donnees['comment']; ?></td> </tr> </table> <?php } ?>
J'ai mis des écho pour voir les données mais il n'y a rien qui s'affiche.
En testant, j'ai vu que $donnees.length ne fonctionne pas car j'ai remplacé par 1 (j'ai 2 donnée différente, le pseudo et le message) et les regex marchaient. avec ce code :
for ($i = 0; $i <= 1; $i++ ) { $element = $donnees[$i]; include ('../includes/regex.php'); $donnees[$i] = $element; }
Stef60
Messages postés
251
Date d'inscription
jeudi 31 mai 2007
Statut
Membre
Dernière intervention
22 avril 2009
41
8 oct. 2008 à 19:45
8 oct. 2008 à 19:45
Salut,
meme question que ton poste 8:
$donnees.length est égal a quoi?
C'est un chiffre?
meme question que ton poste 8:
$donnees.length est égal a quoi?
C'est un chiffre?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
126
8 oct. 2008 à 20:38
8 oct. 2008 à 20:38
Je ne sais pas, quand je fais un echo, il ne me met rien
et les autre echo ne me donne rien non plus.
for ($i = 0; $i <= $donnees.length - 1; $i++ ) { echo '$donnees.length : '.($donnees.length).'<br/>'; echo 'donnees 1 : '.$donnees[$i].'<br/>'; $element = $donnees[$i]; echo 'element 1 : '.$element.'<br/>'; include ('../includes/regex.php'); echo 'element 2 : '.$element.'<br/>'; $donnees[$i] = $element; echo 'donnees 2 : '.$donnees[$i].'<br/>'; }
et les autre echo ne me donne rien non plus.
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
9 oct. 2008 à 11:30
9 oct. 2008 à 11:30
Salut,
tu fais une boucle
et à chaque passage de la boucle tu fais un include du même fichier
Utilité ????
tu connais les fonctions en php alors essayes comme ça en metant ta preReplace dans une fonction que tu vas appeler à chaque passage de la boucle:
@lain
tu fais une boucle
et à chaque passage de la boucle tu fais un include du même fichier
Utilité ????
tu connais les fonctions en php alors essayes comme ça en metant ta preReplace dans une fonction que tu vas appeler à chaque passage de la boucle:
// la fonction function remplacement($chaine){ $chaine = preg_replace('#\[b\](.+)\/b\#isU', '<strong>$1</strong>', $chaine);//gras $chaine = preg_replace('#\[i\](.+)\/i\#isU', '<em>$1</em>', $chaine);//italique $chaine = preg_replace('#\[u\](.+)\/u\#isU', '<u>$1</u>', $chaine);//souligné $chaine = preg_replace('#\[q\](.+)\/q\#isU', '<q>$1</q>', $chaine);//citation $chaine = preg_replace('#\[center\](.+)\/center\#isU', '<div style="text-align:center">$1</div>', $chaine);//centré $chaine = preg_replace('#\[color=(red|green|blue|yellow|purple|olive)\](.+)\/color\#isU', '<span style="color:$1">$2</span>', $chaine);//couleur $chaine = preg_replace('#\[url=http://(.+)\](.+)\/url\+#isU', '<a href="http://$1">$2</a>', $chaine);//lien $chaine = preg_replace('#\[url\]http://(.+)\/url\+#isU', '<a href="http://$1">$1</a>', $chaine);//lien $chaine = preg_replace('#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#isU', '<a href="mailto:$0">$0</a>', $chaine);//mail $chaine = preg_replace('#\[img\](.+)\/img\#isU', '<img src="$1" alt="$1" />', $chaine);//image //regex des smileys $chaine = preg_replace('#:D#isU', ' <img src="../images/smileys/biggrin.gif" alt=":D" /> ', $chaine); $chaine = preg_replace('#XD#isU', ' <img src="../images/smileys/XD.png" alt="XD" /> ', $chaine); $chaine = preg_replace('#:\)#isU', ' <img src="../images/smileys/smile.gif" alt=":)" /> ', $chaine); $chaine = preg_replace('#:\(#isU', ' <img src="../images/smileys/sad.gif" alt=":(" /> ', $chaine); $chaine = preg_replace('#:cool:#isU', ' <img src="../images/smileys/cool.gif" alt=":cool:" /> ', $chaine); $chaine = preg_replace('#:o#isU', ' <img src="../images/smileys/ohmy.gif" alt=":o" /> ', $chaine); $chaine = preg_replace('#Zz#isU', ' <img src="../images/smileys/sleep.gif" alt="Zz" /> ', $chaine); $chaine = preg_replace('#:p#isU', ' <img src="../images/smileys/tongue.gif" alt=":p" /> ', $chaine); $chaine = preg_replace('#;\)#isU', ' <img src="../images/smileys/wink.gif" alt=";)" /> ', $chaine); $chaine = preg_replace('#\^\^#isU', ' <img src="../images/smileys/happy.gif" alt="^^" /> ', $chaine); return $chaine; } //ton code de départ oui la fonction foreach existait et fonctionnait en php4 !! $query = "SELECT pseudo,comment FROM raynal_chat ORDER BY id DESC LIMIT $premier_message, $nombre_entree_par_page"; $result = mysql_query($query)or die (mysql_error()); $css = 'clair'; // Puis on fait une boucle pour afficher tous les résultats : while ($donnees = mysql_fetch_array($result) ) { foreach ($donnees as $element) { // un petit appel de la fonction $element=remplacement($element); //affichage des données echo "Element: ".$element."<br />"; } }
@lain
Stef60
Messages postés
251
Date d'inscription
jeudi 31 mai 2007
Statut
Membre
Dernière intervention
22 avril 2009
41
8 oct. 2008 à 21:45
8 oct. 2008 à 21:45
Et un truc comme ca ne marcherait pas ?
A condition bien sur de transformer regex en fonction.
while ($donnees = mysql_fetch_array($result) )
{
if ($css == 'clair')
{
$css = 'fonce';
}
else
{
$css = 'clair';
}
$pseudo = function_regex($donnees['pseudo']);
$comment = function_regex($donnees['comment']);
?>
<table width="100%" style="text-align:left;">
<tr>
<td class="<?php echo $css;?>"><b><?php echo $donnees['pseudo']; ?></b> : <?php echo $donnees['comment']; ?></td>
</tr>
</table>
<?php
}
A condition bien sur de transformer regex en fonction.
while ($donnees = mysql_fetch_array($result) )
{
if ($css == 'clair')
{
$css = 'fonce';
}
else
{
$css = 'clair';
}
$pseudo = function_regex($donnees['pseudo']);
$comment = function_regex($donnees['comment']);
?>
<table width="100%" style="text-align:left;">
<tr>
<td class="<?php echo $css;?>"><b><?php echo $donnees['pseudo']; ?></b> : <?php echo $donnees['comment']; ?></td>
</tr>
</table>
<?php
}
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
126
8 oct. 2008 à 22:00
8 oct. 2008 à 22:00
Si bien sur mais c'est pas du tout mon but.
Ce que je recherche c'est de faire un code adaptaptable n'importe ou car dans d'autre cas, j'ai alors beaucoup plus de lignes a écrire.
Ce que je recherche c'est de faire un code adaptaptable n'importe ou car dans d'autre cas, j'ai alors beaucoup plus de lignes a écrire.
Groarh
Messages postés
682
Date d'inscription
vendredi 1 août 2008
Statut
Membre
Dernière intervention
28 juin 2015
185
9 oct. 2008 à 12:47
9 oct. 2008 à 12:47
Mais pas en php, puisque tout le monde se casse le nez dessus dans ce topic :D
D'ailleurs je ne vois pas comment ça se pourrait dans la mesure où l'opérateur point, en php, ne sert qu'à concaténer.
D'ailleurs je ne vois pas comment ça se pourrait dans la mesure où l'opérateur point, en php, ne sert qu'à concaténer.
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
126
9 oct. 2008 à 17:14
9 oct. 2008 à 17:14
Désolé Alain_42, Je n'avais pas vu ton message, quand j'ai cliqué sur le lien pour voir les nouveau message, j'ai été directement au dernier, j'ai pas pensé qu'il y avait une autre page.
Je n'ai pas tout compris.
l'include de mes regexp, je dois le faire avant le while ou dedans?
si dehors, les regexp ne fonctionne pas, si dedans, j'ai un message d'erreur :
Fatal error: Cannot redeclare remplacement()
(erreur sur la page des regexp)
encore désolé ;)
Je n'ai pas tout compris.
l'include de mes regexp, je dois le faire avant le while ou dedans?
si dehors, les regexp ne fonctionne pas, si dedans, j'ai un message d'erreur :
Fatal error: Cannot redeclare remplacement()
(erreur sur la page des regexp)
encore désolé ;)
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
9 oct. 2008 à 17:24
9 oct. 2008 à 17:24
Tout d'abord tu modifies ton fichier qui contient le REGEX pour que ce soit une fonction telle que je te l'ai donnée
et tu fais juste un include de ce fichier avant la boucle
dans la boucle il y a juste un appel de la fonction
@lain
et tu fais juste un include de ce fichier avant la boucle
dans la boucle il y a juste un appel de la fonction
@lain
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
126
>
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
9 oct. 2008 à 18:13
9 oct. 2008 à 18:13
Ok, c'est bien ce que j'avais essayé.
Mes données s'affichent mais elle ne sont pas transformée par les regex.
Mes données s'affichent mais elle ne sont pas transformée par les regex.
include ('../includes/regex.php'); // Puis on fait une boucle pour afficher tous les résultats : while ($donnees = mysql_fetch_array($result) ) { foreach ($donnees as $element) { $element = remplacement($element); } ?> <table width="100%" style="text-align:left;"> <tr> <td class="<?php echo $css;?>"><b><?php echo $donnees['pseudo']; ?></b> : <?php echo $donnees['1']; ?></td> </tr> </table> <?php }
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
>
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
9 oct. 2008 à 18:25
9 oct. 2008 à 18:25
C'est normal, tu transforme
$element = remplacement($element);
par tes regex et tu affiches qd même les données lues dans la base
echo $donnees['pseudo'];
fais comme ça:
$element = remplacement($element);
par tes regex et tu affiches qd même les données lues dans la base
echo $donnees['pseudo'];
fais comme ça:
<?php include ('../includes/regex.php'); ?> <table width="100%" style="text-align:left;"> <?php // Puis on fait une boucle pour afficher tous les résultats : while ($donnees = mysql_fetch_array($result) ){ echo "<tr><td class=".$css.">"; foreach ($donnees as $cle=>$element){ //la j'ai change un peu pour avoir le nom de la cle de l'array pour tester pseudo et le mettre en gras $element = remplacement($element); if($cle=='pseudo'){ echo "<b>".$element."</b>"; }else{ echo $element; } } } ?> </td></tr></table>