Page 1 sur 2

boucle sur date

Posté : 22 sept. 2008, 13:16
par ciocciu
Bonjour,
je débute en php

j'ai un petit souci pour créer une boucle en partant d'une variable
ma variable est $date et se présente sous la forme 31-07-2008 (peut être dèjà faudrait il la repasser au format date...mais ça je pourrais faire ...je crois :oops: )

voici ma boucle
je souhaiterais que

pour cette date on affiche 1
pour le lendemain on affiche 2
le lendemain 3
le lendemain 4
le lendemain 5
et le lendemain 1
et on recommence

merci de m'éclairer
cordialement
lolo

Posté : 22 sept. 2008, 18:51
par dogmongo
sur quelle base est faite ta boucle début et fin !?

Posté : 24 sept. 2008, 21:53
par ciocciu
merci bcp j'ai réglé ce pb là en fouillant bien sur le net
toutefois il m'en est sorti pleins d'autres
:lol:
je souhaite intégrer dans un tableau de mon site un mini tchat c'est à dire 2 champ texte pseudo et message et l'affichage des 10 derniers messages
il apparaitrait à chaque ligne du tableau et, bien sur, le tchat de chaque ligne devrait être indépendant l'un de l'autre
les champs texte apparaissent bien ça c'est ok
mais par contre plusieurs pb se posent
-tout d'abord seul le pseudo s'affiche pas le message
-ensuite il s'affiche 1 fois dans la 1ère ligne , 2 fois dans la seconde
3fois dans la 3ème ...etc etc
-enfin les tchats ne sont pas indépendants donc quand je tape sur la 1ère ligne ça apparait partout

voilà le code du la colonne du tableau contenant le minitchat
<?php
foreach($listeDates as $cle=>$date){
     echo "<tr>";
     //premiere colone date
     echo '<td align="center"><DIV class="dateclass">'.$date.'</DIV><br>';
	 //minitchat
	 if (isset($_POST['pseudo']) AND isset($_POST['message'])) // Si les variables existent
{
    if ($_POST['pseudo'] != NULL AND $_POST['message'] != NULL) // Si on a quelque chose à enregistrer
    {
        // D'abord, on se connecte à MySQL
        mysql_connect("localhost", "id", "pswd");
        mysql_select_db("test");
 
        // On utilise les fonctions PHP mysql_real_escape_string et htmlspecialchars pour la sécurité
        $message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
        $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
 
        // Ensuite on enregistre le message
        mysql_query("INSERT INTO minitchatvolley VALUES('', '$pseudo', '$message')");
 
        // On se déconnecte de MySQL
        mysql_close();
    }
}
 
 
// Que l'on ait enregistré des données ou pas...
// On affiche le formulaire puis les 10 derniers messages
 
// Tout d'abord le formulaire :


 ?>
 
 
<form action="page2.php" method="post">
 
<p>
Pseudo : <input type="text" name="pseudo" /><br />
Message :  <input type="text" name="message" /><br />
 
<input type="submit" value="Envoyer" />
</p>
 
</form>
 
 
 
<?php
 
// Maintenant on doit récupérer les 10 dernières entrées de la table
// On se connecte d'abord à MySQL :
mysql_connect("localhost", "id", "pswd");
mysql_select_db("test");
 
// On utilise la requête suivante pour récupérer les 10 derniers messages :
$reponse = mysql_query("SELECT * FROM minitchatvolley ORDER BY ID DESC LIMIT 0,10")or exit(mysql_error());

 
// On se déconnecte de MySQL
mysql_close();
 
// Puis on fait une boucle pour afficher tous les résultats :
while ($donnees = mysql_fetch_array($reponse) )
{
?>

<p><strong><?php echo $donnees['pseudo']; ?></strong> :  <?php echo $donnees['message']; ?></p>

 
 
<?php
}
// Fin de la boucle, le script est terminé !


	echo "</td>";
?>
j'ai pris ce code sur un site php et je l'ai "arrangé" pour mon site mais manifestement mon bricolage est foireux
merci en tous cas
:P

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Posté : 24 sept. 2008, 22:05
par Aureusms
Ca mysql_close(); cela se met à la fin du script pas au milieu...

As tu des données dans ta colonne message ?

essaye cela et montre moi le résultat :
$k=0;
while ($donnees = mysql_fetch_assoc($reponse) )
{
$tab_temp[$k] = array ($donnees['pseudo'],$donnees['message']);
$k++;
}
echo '<pre>';
print_r ($tab_temp);
echo '</pre>';

Posté : 24 sept. 2008, 22:09
par furiouslol
Oué regarde si le contenu de ta table contient bien ce que tu veux, si c'est pas le cas, ton insertion est incorrecte, dans ce ca sfaut que tu check ta première boucle

Tu peux coller un

Code : Tout sélectionner

print_r($listeDates);
Au début de ton script et poster ici ce que ça t'affiche

Posté : 24 sept. 2008, 22:25
par ciocciu
comment savoir si j'ai des données dans message ?....j'ai tapé des textes à chaque fois dans mes essais et voilà ce que ça donne
[/img]http://imageshack-france.com/out.php/i217021_pbsite.JPG[/img]

et le code que tu m'as donné tu veux que je l'insère où exactement?
merci mille fois de te pencher sur mon pb
:P

Posté : 24 sept. 2008, 22:30
par furiouslol
Va dans phpmyadmin voir le contenu de ta table

Posté : 24 sept. 2008, 22:40
par ciocciu
ah oui pas idiot ça
j'essaie
:oops:

oulà je suis largué ....
qd je vais dans phpMyAdmin sur cette table en question que je coche pseudo et clique sur afficher
....MySQL n'a retourné aucun enregistrement.

alors que des pseudos sont enregistrés sur le tchat (nous, moi ..etc)
où alors je me mélange grave les pinceaux.... :oops: :oops:
merci encore

Posté : 25 sept. 2008, 00:41
par furiouslol
où alors je me mélange grave les pinceaux
lol oué y a des chances :) Pseudo c'est pas une table c'est un champs, selectionne la table a gauche (minitchatvolley ) et clique sur l'onglet afficher


Mais plus sérieusement, assure toi de te familiariser un tant soit peu avec le sql, phpmyadmin, sans quoi on aura beau faire ce qu'on veut on pourra pas t'aider, y a de bons tuto un peu partout

Posté : 25 sept. 2008, 07:58
par ciocciu
bonjour
après avoir relu le tuto de mateo je pense que tout est clair dans ma tête ...merci :lol:
je m'y suis donc remis ce matin
j'ai changé le nom(un peu trop compliqué ) de ma table et c'est bon je l'ai retrouvé sur phpMyAdmin
elle contient bien les pseudos et les messages
le pb (qui lui n'a pas changé) doit plus se situer au niveau de la relecture de la base.....mais je sèche un peu

Code : Tout sélectionner

<?php //affichage du tableau echo '<table bgcolor="mistyrose" width="100%" border="1">'; // 1ligne: titre echo ' <tr> <th rowspan="2"><H3>Date</h3></th> <th colspan="2"><H3>Joueurs</h3></th> <th rowspan="2"><H3>Eq S1 et N </h3></th> <th rowspan="2"><H3>Participation</h3></th> </tr> <tr> <th>Dispo</th> <th>Pas dispo</th> </tr>'; foreach($listeDates as $cle=>$date){ echo "<tr>"; //premiere colone date echo '<td align="center"><DIV class="dateclass">'.$date.'</DIV><br>'; //minitchat if (isset($_POST['pseudo']) AND isset($_POST['message'])) // Si les variables existent { if ($_POST['pseudo'] != NULL AND $_POST['message'] != NULL) // Si on a quelque chose à enregistrer { // D'abord, on se connecte à MySQL mysql_connect("localhost", "ID", "pswd"); mysql_select_db("test"); // On utilise les fonctions PHP mysql_real_escape_string et htmlspecialchars pour la sécurité $message = mysql_real_escape_string(htmlspecialchars($_POST['message'])); $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo'])); // Ensuite on enregistre le message mysql_query("INSERT INTO tchat VALUES('', '$pseudo', '$message')")or die(mysql_error()); // On se déconnecte de MySQL mysql_close(); } } // Que l'on ait enregistré des données ou pas... // On affiche le formulaire puis les 10 derniers messages // Tout d'abord le formulaire : ?> <form action="page2.php" method="post"> <p> Pseudo : <input type="text" name="pseudo" /><br /> Message : <input type="text" name="message" /><br /> <input type="submit" value="Envoyer" /> </p> </form> <?php // Maintenant on doit récupérer les 10 dernières entrées de la table // On se connecte d'abord à MySQL : mysql_connect("localhost", "ID", "pswd"); mysql_select_db("test"); // On utilise la requête suivante pour récupérer les 10 derniers messages : $reponse = mysql_query("SELECT * FROM tchat ORDER BY ID DESC LIMIT 0,10") or die(mysql_error()) ; // Puis on fait une boucle pour afficher tous les résultats : while ($donnees = mysql_fetch_array($reponse) ) { ?> <p><strong><?php echo $donnees['pseudo']; ?></strong> : <?php echo $donnees['message']; ?></p> <?php } // Fin de la boucle, le script est terminé ! // On se déconnecte de MySQL mysql_close(); echo "</td>"; ?> <?php
voilà je m'y replonge (enfin j'essaie :roll: )

les pseudos et messages s'affichent bien mais les lignes ne sont pas indépendantes les une des autres je me demande s'il ne faudrait pas créer un nouvelle table pour chaque ligne ?
voilà ce que ça donne actuellement
Image
merci encore par avance.....

Posté : 25 sept. 2008, 12:57
par furiouslol
Non pas de nouvelle table, surtout pas, reste dans un exemple simple au début
Sinon je vois pas bien ton image elle s'affiche en trop petit

Écoute a ce stade la, ce que tu peux faire c'est vérifier le contenu de tes tableau avant de les passer dans tes boucles, et pour ça tu as la fonction print_r() qui est faite pour ça

Donc colle un print_r($listeDates); avant ton foreach et un print_r($_POST); au début de ton script

Ca va te permettre de contrôler ce qui passe dan ton insertion avant meme de faire la boucle

Posté : 25 sept. 2008, 15:40
par ciocciu
ok merci
j'ai édité le lien de l'image pour que tu vois mieux :P

sinon j'ai placé les codes que tu m'as donné comme suis

Code : Tout sélectionner

<?php print_r($_POST); //affichage du tableau echo '<table bgcolor="mistyrose" width="100%" border="1">'; // 1ligne: titre echo ' <tr> <th rowspan="2"><H3>Date</h3></th> <th colspan="2"><H3>Joueurs</h3></th> <th rowspan="2"><H3>Eq S1 et N </h3></th> <th rowspan="2"><H3>Participation</h3></th> </tr> <tr> <th>Dispo</th> <th>Pas dispo</th> </tr>'; print_r($listeDates); foreach($listeDates as $cle=>$date){ echo "<tr>"; //premiere colone date echo '<td align="center"><DIV class="dateclass">'.$date.'</DIV><br>'; //minitchat if (isset($_POST['pseudo']) AND isset($_POST['message'])) // Si les variables existent { if ($_POST['pseudo'] != NULL AND $_POST['message'] != NULL) // Si on a quelque chose à enregistrer {.....etc etc
et voilà ce qui m'est sorti

Array ( ) Array ( [5] => 06-10-2008 & CRNA [6] => 13-10-2008 & CRNA [3] => 18-05-2008 & coupe [2] => 16-05-2008 & connantre [4] => 29-05-2008 & crna [1] => 05-05-2008 & crna )

c'est à dire la liste des dates de mes lignes du tableau (normal ça doit être le print_r($listeDates) )

par contre l'autre print-r n'a rien donné ...
et pas de nouvelle de mon mini tchat.... :? :?

voilà
c'est sympa de m'aider :wink:

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Posté : 25 sept. 2008, 19:30
par furiouslol
le Array ( ) qui est affiché correspond effectivement a la tentative d'affichage des variables de POST, qui sont donc vide dans l'exemple que tu donnes, donc d'après ton code, si pas de variables POST, pas d'INSERT dans la base ce qui est logique évidement

Le deuxième te sort bien un tableau, bine que je vois mal pourquoi boucler sur un tableau de date pour insérer les posts

J'avoue avoir du mal a cerner le problème au niveau de la lecture et affichage de la base, pourrait tu poster un screen de ta table et un screen de l'affichage que ça te sort stp ?

Posté : 26 sept. 2008, 08:11
par ciocciu
bonjour
alors voici les 2 screen du site et de la table
je voulais juste te dire que le array() qui sort sur le site n'est pas toujours le mm ....dans celui que je t'ai mis les champs sont pleins mais j'ai fais réactualisé la page et du coup il me ressort un " array()" et sur le site 6 fois le message "yas :itou"


Image


Image




edit : j'ai essayé de remanier ma boucle car je suppute un pb à ce niveau j'ai donc remplacé par
un truc plus simple juste pour tester ....
<?php
// On utilise la requête suivante pour récupérer les 10 derniers messages :
$reponse = mysql_query("SELECT * FROM tchat ORDER BY ID DESC LIMIT 0,10") or die(mysql_error()) ; 

 

 while ($donnees = mysql_fetch_array($reponse) )
{

   echo $donnees['nom'];
    echo "<br />";
}
?>
et ça m'affiche ....bin pareil c'est çà dire 1 fois le pseudo sur le tchat de la 1ère ligne du tableau, 2 fois sur le second , 3 fois sur le 3ème.....


plus ça va plus je me dis que mes tables doivent être indépendantes et donc une table crée par tchat souhaité...non?



voilà
merci encore :wink:

Posté : 27 sept. 2008, 21:07
par ciocciu.
personne pour m'aider?? :cry: :cry: