Ajout de ligne a partir d'un formulaire

dam_s
Invité n'ayant pas de compte PHPfrance

23 déc. 2005, 01:59

Bonjour,

(je pense que le titre est a revoir mais je ne trouve pas le bon lol )

je souhaite pouvoir ajouter des lignes a partir d'un formulaire comme dans l'ajout de reponse a sondage dans le forum phpbb, je sais que ca s'apuis sur un t
ableau mais chez moi kan je veux rentrer une nouvelle valeur et bien la derniere est effacer du coup je n'ai toujour qu'une seulle valur dans le tableau
<form name="form2" action="ajcoursv1_0.php" method="post">
<?php
$tableaudate= array();
$tableaudate[]=$add_date;
$compteur=0;
while (each($tableaudate) <> null);
{
    echo "$tableaudate[$compteur] <br>
    <input name='add_date' type='text' value='$tableaudate[$compteur]' /><input name='ajout_date' type='submit' id='ajout_date' value='Ajouter'>";
    $compteur ++;
}
?>
</form>

quelqu'un a-t-il la solution qui permet de le faire j'aie beau chercher dans le code du forum lui meme et je n'y arrive pas...

ViPHP
ViPHP | 649 Messages

23 déc. 2005, 05:21

Tu veux faire un sondage? Parce que faudrait dire ce que tu veux faire, pour moi, ton problème demeure étrange, je comprends pas trop où tu veux en venir... Tu veux ajouter à la valeur d'une variable sans formater?
Image

Mammouth du PHP | 19672 Messages

23 déc. 2005, 09:44

Je note deux erreurs dans ce code :
- La première, c'est qu'en PHP, "différent" s'écrit "!=" et non "<>" qui s'utilise en SQL;
- La seconde : Tu crées des champs de saisie dans ton formulaire avec une boucle : tous ces champs ont la même valeur d'attribut name : pour distinguer les résultats, il faudrait que ce soit un tableau et donc la valeur devrait être "add_date[]" et non simplement "add_date"

Ensuite, comme pour alexbad, je n'ai pas vraiment bien compris ton problème... :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

dam-s
Invité n'ayant pas de compte PHPfrance

23 déc. 2005, 10:13

je cherche a ajouter des valeurs dans une variable tableau a l'aide d'un formulaire et de les afficher au fur et a mesure que je valide une nouvelle entrée dans la variable tableau

add_date[] ne marche pas et retourne une erreur
merci pour !=

dam-s

Mammouth du PHP | 19672 Messages

23 déc. 2005, 10:30

Bon, admettons, mais ce code ne fait strictement rien d'autre que créer un formulaire : je ne saisis pas trop quelle procédure tu veux utiliser au juste.

Si tu recharges à chaque fois la page, comme tu redéclare ton tableau en début de code, ça écrase de toutes façons les éventuelles valeurs qui s'y trouvaient. Ensuite, d'où sort la valeur $add_date que tu assignes à $tableaudate ?[/php]
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

23 déc. 2005, 10:44

je ne sais pas si tu connais phpbb mais losque l'on veut ajouter un sondage il demande un titre et demande de rentré les reponses et c'est le principe d'ajout de reponses que je voudrai retrouver:

Image

voila ce que ca donne...

Eléphanteau du PHP | 36 Messages

23 déc. 2005, 17:17

Pu personne ???? lol

ViPHP
ViPHP | 649 Messages

23 déc. 2005, 18:32

Tu veux faire un sondage oui ou non?

Sur les phpbb, le nombre d'options est limité je crois non? sinon, il te suffit de faire une boucle qui ajoute une ligne au tableau pour chaque option.
Image

Eléphanteau du PHP | 36 Messages

23 déc. 2005, 18:49

non ce n'est pas un sondage mais c'est base sur le meme principe,
et je ne suis pas sur que ce soit limiter,

cepandant j'ai trouver un truc:

Code : Tout sélectionner

<? if(!isset($_POST['nbform'])) $nbform=""; else $nbform=$_POST['nbform']; if($nbform) { echo"<form action=\"ajcoursv1_0.php\" method=\"post\">"; $i = 0; while($i != $nbform) { echo"<input type=\"text\" name=\"champ$i\"> <b>Date $i </b><BR>"; $i++; } echo"</form>"; } else { echo"<form action=\"$PHP_SELF\" method=\"post\"> <input type=\"text\" name=\"nbform\" size=\"2\"> <input type=\"submit\" value=\"Générer\"> </form>"; } ?>
Mais je rencontre un probleme comment fait-on pour remplir une base SQL avec ca ensuite ???? ( c'est a dire plusieur ligne d'un coup)

ViPHP
ViPHP | 649 Messages

23 déc. 2005, 18:56

Une fois que les trucs sont postés, tu exécutes une requête en boucle (avec un for) qui répète le INSERT INTO. Je ferais bien la requête mais je connais pas la structure de la table et encore une fois:
non ce n'est pas un sondage mais c'est base sur le meme principe,
et je ne suis pas sur que ce soit limiter,
tu es gêné de répondre à la question? Que veux-tu faire!! bien sûr, on peut essayer d'imaginer où tu veux en venir mais si ta question est obscur, mes réponses seront obscures et ce, contre mon gré.
Image

Eléphanteau du PHP | 36 Messages

23 déc. 2005, 19:08

bah ouais
alors
j'aide au devellopement d'un site qui permet a un club de danse sportive de gerer des inscriptions a des cours (de danse).seulement les proff de viennet pas toujour le meme nombre de jour, donc je voulais que on aie un champ ajouter une date de venue et lorque 'lon ajoute cette derniere elle soit repeter et que le "formulaire" soit reaficher pour pouvoir ajouter une nouvelle date pour avoir ensuite plusieur date

la structure de ma table ou plustot mes table est :

Code : Tout sélectionner

CREATE TABLE `chds_cours_desc` ( `ID` tinyint(11) NOT NULL auto_increment, `nom_prof` varchar(50) NOT NULL default '', `nationnalite_prof` varchar(50) NOT NULL default '', `commentaire_prof` text NOT NULL, `DateFR` datetime NOT NULL default '0000-00-00 00:00:00', PRIMARY KEY (`ID`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=73 ; -- -------------------------------------------------------- -- -- Structure de la table `chds_cours_horraire` -- CREATE TABLE `chds_cours_horraire` ( `ID` tinyint(11) NOT NULL default '0', `ID_date` tinyint(11) NOT NULL auto_increment, `cours_date` date NOT NULL default '0000-00-00', PRIMARY KEY (`ID_date`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
et donc dans la table ...horraire on a une ID qui est egal a l'ID (autoincrementer) d la table ...dsc

pour le moment j'essaye ca :

Code : Tout sélectionner

<?php if(!isset($_POST['ajcours'])) $ajcours=""; else $ajcours=$_POST['ajcours']; if(!isset($_POST['nom_prof'])) $nom_prof=""; else $nom_prof=$_POST['nom_prof']; if(!isset($_POST['nationnalite_prof'])) $nationnalite_prof=""; else $nationnalite_prof=$_POST['nationnalite_prof']; if(!isset($_POST['commentaire_prof'])) $commentaire_prof=""; else $commentaire_prof=$_POST['commentaire_prof']; if(!isset($_POST['jour'])) $jour=""; else $jour=$_POST['jour']; $tableauprof=array(); if (empty($tableauprof)) { $tableauprof[0]=$nom_prof; $tableauprof[1]=$commentaire_prof; $tableauprof[2]=$nationnalite_prof; } else { $tableauprof=null; } ?> <?php if ($ajcours=="ok") { // Insertion dans la base de donner chds_fichiers mysql_select_db($database_phpconnexion, $phpconnexion); $insertcomp = "INSERT INTO chds_cours_desc (nom_prof, nationnalite_prof, commentaire_prof, DateFR) VALUES ('$nom_prof', '$nationnalite_prof', '$commentaire_prof', NOW())"; mysql_query($insertcomp, $phpconnexion) or die(mysql_error()); //redirection vers la page gsfichier.php exit; } ?> <form name="form1" method="post" action="ajcoursv1_0.php"> <table width="534" border="1" align="center"> <tr> <td width="154">Nom du prof : </td> <td width="364"><input name="nom_prof" type="text" id="nom_prof" value="<? echo $tableauprof[0]; ?>"> </td> </tr> <tr> <td>Nationalit&eacute; : </td> <td><select name="nationnalite_prof" id="comp"> <option value="Francaise" id="comp">Francaise</option> <option value="Anglaise" id="comp">Anglaise</option> <option value="Su&eacute;doise">Su&eacute;doise</option> <option id="comp" value="Belge">Belge</option> <option id="comp" value="Italienne">Italienne</option> <option id="comp" value="Espagnole">Espagnole</option> <option id="comp" value="Allemande">Allemande</option> <option value="Autre">Autres (&aacute; d&eacute;finir en commentaire)</option> <option value="<?php echo $tableauprof[2]; ?> " selected><?php echo $tableauprof[2]; ?></option> </select></td> </tr> <tr> <td>Commentaires : </td> <td><textarea name="commentaire_prof" id="commentaire_prof"><? echo $tableauprof[1]; ?> </textarea></td> </tr> <tr><td colspan="2" align="center"> <? if(!isset($_POST['nbform'])) $nbform=""; else $nbform=$_POST['nbform']; if($nbform) { echo"<form action=\"ajcoursv1_0.php\" method=\"post\">"; $i = 0; while($i != $nbform) { echo"<input type=\"text\" name=\"champ$i\"> <b>Date $i </b><BR>"; $i++; } echo"</form>"; } else { echo"<form action=\"$PHP_SELF\" method=\"post\"> <input type=\"text\" name=\"nbform\" size=\"2\"> <input type=\"submit\" value=\"Générer\"> </form>"; } ?> </td></tr> <tr> <td colspan="2"><div align="center"> <input name="ajout_prof" type="submit" id="ajout_prof" value="Ajouter"> <input name="ajcours" type="hidden" id="ajcours" value="ok"> </div></td> </tr> </table> </table>
mais j'aie des probleme pour remplir ma base....

ViPHP
ViPHP | 649 Messages

23 déc. 2005, 19:29

Désolé si je suis lent, cette fois tu as tout bien détaillé, ce que je crois comprendre: Tu veux que chaque fois que le prof vient, qu'on augmente son nombre de dates de 1. Solution => Tu fais un UPDATE nbre_de_date + 1

OU

Tu veux que l'on remplissent leurs horaires à l'avance, en définissant les dates auxquelles ils seront présents et ça te pose problème car tu crois qu'il faut ajouter un champs pour chaque date à laquelle il vient. Ce que tu peux faire, c'est insérer le timestamp entre guillemets pour chaque date à laquelle il vient: "102942095238"1033958835"34953405920" etc.

Ensuite, pour récupérer ces dates, tu fais un explode('"', $donnees['date']); et pour chaque, tu récupères la date avec la fonction date() mais là, je vais attendre que tu me dises que je suis sur la bonne voie avant de te donner un méga exemple...
Image

Eléphanteau du PHP | 36 Messages

23 déc. 2005, 19:45

oui je voi ce que tu veux dire avec le timestamp mais c'est que la gestion se fait par des gent qui n'y connaisse rien... alors leur demander de taper ca tel quel ca crain un peu

je sais pas si tu as regarder le code que j'ai mis precedement mais c'est a peu pres ce que je veux on definie dans le cas presents le nombre de date qu'il vient par exemple 3 jours

et il sort 3 champs, qui sont remplis a leur tours mais la j'aie un problème j'arrive pas a le traiter pour qu'il incremente mes tables

je crois que c'est du compiquer tous ca lol

pour le moment je suis arriver a ca mais j'aie plein d'erreur et ca marche pas :

Code : Tout sélectionner

<?php require_once('../Connections/phpconnexion.php'); ?><?php if(!isset($_POST['ajcours'])) $ajcours=""; else $ajcours=$_POST['ajcours']; if(!isset($_POST['nom_prof'])) $nom_prof=""; else $nom_prof=$_POST['nom_prof']; if(!isset($_POST['nationnalite_prof'])) $nationnalite_prof=""; else $nationnalite_prof=$_POST['nationnalite_prof']; if(!isset($_POST['commentaire_prof'])) $commentaire_prof=""; else $commentaire_prof=$_POST['commentaire_prof']; if(!isset($_POST['jour'])) $jour=""; else $jour=$_POST['jour']; if ($nbform !=0 ) { $j=0; while ($nbform > $j ) { if(!isset($_POST['champ$i'])) $champ[$j]=""; else $champ[$j]=$_POST['champ$i']; $j ++; }} $tableauprof=array(); if (empty($tableauprof)) { $tableauprof[0]=$nom_prof; $tableauprof[1]=$commentaire_prof; $tableauprof[2]=$nationnalite_prof; } else { $tableauprof=null; } ?> <?php if ($ajcours=="ok") { // Insertion dans la base de donner desc mysql_select_db($database_phpconnexion, $phpconnexion); $insertcomp = "INSERT INTO chds_cours_desc (nom_prof, nationnalite_prof, commentaire_prof, DateFR) VALUES ('$tableauprof[0]', '$tableauprof[2]', '$tableauprof[1]', NOW())"; mysql_query($insertcomp, $phpconnexion) or die(mysql_error()); // recup ID du cours mysql_select_db($database_phpconnexion, $phpconnexion); $query_rsidcours = "SELECT * FROM chds_cours_desc WHERE DateFR = 'NOW()'"; $rsidcours = mysql_query($query_rsidcours, $phpconnexion) or die(mysql_error()); $row_rsidcours = mysql_fetch_assoc($rsidcours); $totalRows_rsidcours = mysql_num_rows($rsidcours); // Insertion dans la base de donner horraire mysql_select_db($database_phpconnexion, $phpconnexion); $insertcomp = "INSERT INTO chds_cours_horraire (ID_date, cours_date) VALUES ('', '$champ[$j]')"; mysql_query($insertcomp, $phpconnexion) or die(mysql_error()); exit; } ?> <form name="form1" method="post" action="ajcoursv1_0.php"> <table width="534" border="1" align="center"> <tr> <td width="154">Nom du prof : </td> <td width="364"><input name="nom_prof" type="text" id="nom_prof" value="<? echo $tableauprof[0]; ?>"> </td> </tr> <tr> <td>Nationalit&eacute; : </td> <td><select name="nationnalite_prof" id="comp"> <option value="Francaise" id="comp">Francaise</option> <option value="Anglaise" id="comp">Anglaise</option> <option value="Su&eacute;doise">Su&eacute;doise</option> <option id="comp" value="Belge">Belge</option> <option id="comp" value="Italienne">Italienne</option> <option id="comp" value="Espagnole">Espagnole</option> <option id="comp" value="Allemande">Allemande</option> <option value="Autre">Autres (&aacute; d&eacute;finir en commentaire)</option> <option value="<?php echo $tableauprof[2]; ?> " selected><?php echo $tableauprof[2]; ?></option> </select></td> </tr> <tr> <td>Commentaires : </td> <td><textarea name="commentaire_prof" id="commentaire_prof"><? echo $tableauprof[1]; ?> </textarea></td> </tr> <tr><td colspan="2" align="center"> <? if(!isset($_POST['nbform'])) $nbform=""; else $nbform=$_POST['nbform']; if($nbform) { echo"<form action=\"ajcoursv1_0.php\" method=\"post\">"; $i = 0; while($i != $nbform) { echo"<input type=\"text\" name=\"champ$i\"> <b>Date $i </b><BR>"; $i++; } } else { echo"<form action=\"$PHP_SELF\" method=\"post\"> <input type=\"text\" name=\"nbform\" size=\"2\"> <input type=\"submit\" value=\"Générer\"> </form>"; } ?> </td></tr> <tr> <td colspan="2"><div align="center"> <input name="ajcours" type="hidden" id="ajcours" value="ok"> <input name="ajout_prof" type="submit" id="ajout_prof" value="Ajouter"> </div></td> </tr> </table> </table> <?php mysql_free_result($rsidcours); ?>

ViPHP
ViPHP | 649 Messages

23 déc. 2005, 19:46

Désolé si je suis lent, cette fois tu as tout bien détaillé, ce que je crois comprendre: Tu veux que chaque fois que le prof vient, qu'on augmente son nombre de dates de 1. Solution => Tu fais un UPDATE nbre_de_date + 1

OU

Tu veux que l'on remplissent leurs horaires à l'avance, en définissant les dates auxquelles ils seront présents et ça te pose problème car tu crois qu'il faut ajouter un champs pour chaque date à laquelle il vient. Ce que tu peux faire, c'est insérer le timestamp entre guillemets pour chaque date à laquelle il vient: "102942095238"1033958835"34953405920" etc.

Ensuite, pour récupérer ces dates, tu fais un explode('"', $donnees['date']); et pour chaque, tu récupères la date avec la fonction date() mais là, je vais attendre que tu me dises que je suis sur la bonne voie avant de te donner un méga exemple...
Image

Eléphanteau du PHP | 36 Messages

23 déc. 2005, 20:54

Pourquoi tu a remis ton message precedent ????