[PHP] utilisation du foreach
okuni
Messages postés
1221
Date d'inscription
Statut
Membre
Dernière intervention
-
okuni Messages postés 1221 Date d'inscription Statut Membre Dernière intervention -
okuni Messages postés 1221 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je me suis dis que ce serai pratique d'utiliser foreach pour passer au regex toutes mes variables avant de les afficher.
Dans cette exemple, il s'agit d'un chat.
je récupère les données de ma table puis le foreach.
la page regex.php contient toutes les regex (elles fonctionnent)
Mais voila, sa ne fonctionne pas :p
Quelqu'un pourrait m'aider?
Je me suis dis que ce serai pratique d'utiliser foreach pour passer au regex toutes mes variables avant de les afficher.
Dans cette exemple, il s'agit d'un chat.
je récupère les données de ma table puis le foreach.
la page regex.php contient toutes les regex (elles fonctionnent)
$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) { include ('../includes/regex.php'); } [affichage des données]
Mais voila, sa ne fonctionne pas :p
Quelqu'un pourrait m'aider?
A voir également:
- [PHP] utilisation du foreach
- Utilisation chromecast - Guide
- Télécharger gratuitement notice d'utilisation - Guide
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Family link temps d'utilisation ne fonctionne pas - Forum Contrôle parental
29 réponses
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...
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
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; }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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.
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
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
}
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.
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.
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é ;)
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 }
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>