distinguer des variables de formulaire

Eléphanteau du PHP | 35 Messages

12 oct. 2008, 13:57

bonjour
j'ai plusieurs formulaires sur une même page
en fait ils sont tout simples : un champ pseudo et un autre champ message et un bouton "envoyer"
ils sont dans un tableau ,un formulaire par ligne (chaque ligne corespondant à une date)

les données pseudo et message peuvent être envoyées dans une table mysql
mon pb est que je souhaiterais trier ces données en fonction de la ligne (donc de la date) sur laquelle la personne a tapé son pseudo et son message
voilà un screen pour vous donner une idée
http://imageshack-france.com/out.php/i2 ... ensite.JPG

c'est à dire que si on tape sur la ligne du 06-10-2008 je voudrais que ça ne s'affiche que sur cette ligne et pas sur les autres bien sur
donc en gros est il possible de paramétrer par une variable une récupération de données
par exemple
un truc du genre $_POST['message[.$­timestamp_date]'] vous voyez?

je vous mets le code du tableau rose
chaque ligne est crée automatiquement grace à un fichier /data
<?php
//**************initialisation du tableau a partir du contenu de ./data";**
 $dh = opendir("./data");
 while ($fichier = readdir($dh)){
     if(substr($fichier,-5)=="+.txt"){
     $listeDates[strtok("$fichier","+")]= strtok("+");    
     }
 }
 closedir($dh);
 ksort($listeDates);
  
 //affichage du tableau
 echo '<table bgcolor="mistyrose" width="100%" border="1">';
 // 1ligne: titre
 echo '	<tr>	<th rowspan="2"><H3>Date Mercredi</h3></th>
		<th colspan="2"><H3>Joueurs</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>';
	 
	 //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
    {
        
 
        // 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="page3.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", "");
mysql_select_db("volleycrna");
 
// On utilise la requête suivante pour récupérer les 10 derniers messages :
$reponse = mysql_query("SELECT ID, pseudo, message 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>";
     

tout ceci afin de pouvoir les trier et les faire afficher où l'on veut
:wink:

merci par avance

Eléphant du PHP | 254 Messages

12 oct. 2008, 23:08

Salut,

Tu pourrais définir dynamiquement le nom de ton INPUT en concatenant la date apres le NAME ... Bien qu'un chiffre unique dans ta page soit préférable pour identifier quel formulaire a été validé
$message = "message".$date
echo "<input type='text' name='$message' />";
Tu peux aussi avoir un champ caché dans ton formulaire qui te servira a identifier tes formulaires, et a agir en conséquence
echo "<input type='hidden' name='form' value='1' />";
Ainsi suivant la valeur de $_POST["form"] tu sauras quel formulaire a été validé

ViPHP
ViPHP | 1996 Messages

13 oct. 2008, 21:02

Tu peux aussi créer plusieurs formulaire qui pointent tous vers

Code : Tout sélectionner

action="page3.php"
.
Ensuite dans la donnée value de

Code : Tout sélectionner

<input type="submit" value="Envoyer" />
Tu peux distinguer :

Code : Tout sélectionner

<input type="submit" name="bouton_envoyer" value="Envoyer_1" />

Code : Tout sélectionner

<input type="submit" name="bouton_envoyer" value="Envoyer_2" />
...

Ensuite tu cherches la valeur :
if ($_POST["bouton_envoyer"] == Envoyer_1) //premier formulaire
if ($_POST["bouton_envoyer"] == Envoyer_2) //deuxième formulaire
if ($_POST["bouton_envoyer"] == Envoyer_3) //troisième formulaire
Cela reviens à peu près à la réponse de furiouslol...
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr