boucle sur date

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : boucle sur date

par ciocciu » 04 oct. 2008, 09:52

ok merci furiouslolo :lol:
justement mon pb est que mes tchats ne sont pas différenciés :oops: je voudrais bien en avoir plusieurs (un pour chaque match)

mes tables ont cette structure

table tchat ID, pseudo , message

ensuite le tableau (fond rose sur le creen) est crée par une table datematchs (qui contient les dates des matchs ) sous la forme ID, date , lieu


je me disais que peut être on pouvait lier ces tables par la date donc ajouter un champ à la table tchat soit ID, pseudo , message, date dans le quel date sera rempli par la variable $date qui rempli le champ de la table datematchs
ensuite on pourrait peut être faire un tri et afficher dans chaque ligne de mon tableau rose les message de la date correspondante ....
non?


j'espère être clair :lol:



merci aussi à aureus mais un Group by pseudo pour faire quoi exactement ?

par furiouslol » 01 oct. 2008, 00:53

ok je crois que je commence a voir ... En fait j'aimerais que tu me donne la structure de tes tables de tchat s'il te plait, car un truc me chiffonne, si tu a plusieurs chat comme tu dis, comment sont ils différencié les uns des autres ?

Pour moi il faut deux tables pour gérer un système comme celui la, une table tchat(ou topic pour un forum) et une table réponse au tchat (ou post pour un forum)

En tout cas tu n'as pas besoin d'une table par chat, deux au maximum

par Aureusms » 30 sept. 2008, 22:59

Et si tu utilisais un GROUP BY pseudo ?

par ciocciu » 30 sept. 2008, 22:11

ok merci de ta réponse
le truc c'est que je n'ai jamais à aucun moement rafraichi la page :cry:

je tape un message dans le 1er tchat exemple pseudo: lolo message: salut
il apparait une fois dans le 1er tchat
2 fois dans le second
3 fois dans le 3ème
etc etc ...
6 fois dans le 6ème et dernier


(comme si il était incrémenté)
et dans ma table il y est 6 fois

en fait il me semble que ma table va recueillir tous les pseudos/message que j'aurais tapé dans les 6 mini tchats
donc forcément quand je lui demande d'afficher les 10 derniers ....bin ils concernent tous les minichats

je t'explique ce tableau (cf sreen)
dans ma colonne date y'a plusieurs lignes (très large puisqu'elle contient un minitchat)
dans le screen elles s'appellent 06-10-2008& CRNA et 13-10-2008&CRNA ce sont des dates de matchs de volley & le lieu
je voudrais simplement que l'on puisse discuter tranquille de chaque match dans chaque minitchat

en fait moi je voudrais que dans la 1ère ligne ( donc dans le 1er tchat) soit afficher les 10 derniers messages concernant cette date là de match


donc il me faut bien plusieurs tables non ?
:roll:

merci de m'aider c'est sympa :wink:

par furiouslol » 29 sept. 2008, 11:22

Je te suis bien mais j'avoue avoir du mal a voir ton problème, la ligne "tom:j'en suis" est bien présente 6 fois dans ta base, et six fois a l'écran, ce qui est tout a fait normal ...
Pourquoi est il la plusieurs fois ? je dirais que tu as fait des tests en appuyant sur F5, ce qui renvoie l'url avec tes variables POST, et qui donc insère une ligne en plus dans ta base de donnée ...

Cependant ton affichage est faux si et seulement si il t'affiche autre chose que ce que contient ta base de donnée, si tu as 15 fois la même chose dans ta base, le code t'affichera 15 ligne identique, c'est pas son problème, a ce moment la le problème est plutôt dans l'insertion ....

En tout cas plusieurs tables je ne vois pas du tout pourquoi au vu de ce que j'ai compris de ton probleme

par ciocciu » 29 sept. 2008, 08:52

:cry: :cry:
plus ça va et plus je me dis qu'il me faut créer plusieurs tables....une pour chaque ligne du tableau
car s'i y'en a qu'une seule forcément ça va afficher les 10 derniers messages sans tenir compte de la ligne du tableau à laquelle ils appartiennent.....

perconne ne pourrait me confirmer ça...svp ?

par ciocciu. » 27 sept. 2008, 21:07

personne pour m'aider?? :cry: :cry:

par ciocciu » 26 sept. 2008, 08:11

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:

par furiouslol » 25 sept. 2008, 19:30

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 ?

par ciocciu » 25 sept. 2008, 15:40

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]

par furiouslol » 25 sept. 2008, 12:57

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

par ciocciu » 25 sept. 2008, 07:58

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.....

par furiouslol » 25 sept. 2008, 00:41

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

par ciocciu » 24 sept. 2008, 22:40

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

par furiouslol » 24 sept. 2008, 22:30

Va dans phpmyadmin voir le contenu de ta table