Boucle while

Fermé
dourlens59 Messages postés 65 Date d'inscription vendredi 24 mai 2013 Statut Membre Dernière intervention 24 janvier 2017 - 27 mai 2013 à 16:15
dourlens59 Messages postés 65 Date d'inscription vendredi 24 mai 2013 Statut Membre Dernière intervention 24 janvier 2017 - 27 mai 2013 à 18:08
Bonjour, je suis débutant en PHP

J'aimerais ajouter une boucle pour avoir N paragraphe, or ma boucle reste toujours indéfini.

Que quand je clique sur le bouton'Ajouter', j'ai un paragraphe qui s'ajoute à chaque fois .

<?php if(isset ($_POST['Ajouter']))

{

echo " <label class=\"label\" for=\"para_titre\"> Paragraphe : </label><textarea name=\"para_titre\" rows=\"8\" cols=\"45\" > $para_titre </textarea>";

}

?>

Si quelqu'un pourrait m'indiquer comment m'y prendre avec la boucle.

Cordialement,

16 réponses

jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
27 mai 2013 à 16:19
Salut !

"Que quand je clique sur le bouton'Ajouter', j'ai un paragraphe qui s'ajoute"
Un clique = un paragraphe, où veux tu mettre une boucle ? Tu n'en a pas besoin.

Moi je ne le ferais pas en PHP, mais en javascript, ce que tu veux faire.
0
dourlens59 Messages postés 65 Date d'inscription vendredi 24 mai 2013 Statut Membre Dernière intervention 24 janvier 2017
27 mai 2013 à 16:23
Je suis stagiaire, et mon projet est a faire en PHP, je n'ai aucune notion en JAVASCRIPT.
En gros je voudrais rajouter un paragraphe à chaque fois que j'appuie sur le bouton "Ajouter "
0
dcanl Messages postés 2999 Date d'inscription mercredi 7 septembre 2005 Statut Contributeur Dernière intervention 3 juin 2013 470
27 mai 2013 à 16:28
Salut,

Je ne vois pas l'intérêt de ce genre de fonctionnalité... Peux-tu nous en dire plus ?

Avec plus d'explications, nous pourrons peut-être mieux t'aider.

A+
0
dourlens59 Messages postés 65 Date d'inscription vendredi 24 mai 2013 Statut Membre Dernière intervention 24 janvier 2017
27 mai 2013 à 16:34
J'ai un formulaire qui permet de créer des actualités.
J'ai des champs Titre, Date ...
Puis pour chaque actus il y'aura plusieurs paragraphes à insérer dans la base de données.
Quand je créer mon 1er paragraphe, j'ai un bouton "ajouter", qui permetra d'ajouter un autre paragraphe .. ainsi de suite jusqu'a que je n'ai plus de paragraphe à inserer.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
27 mai 2013 à 16:38
C'est écrit noir sur blanc dans un document que c'est à faire EXCLUSIVEMENT en PHP ? Mmh ca m'étonnerait, si tu dois faire une appli web ou un site, tu ne dois pas avoir que le PHP à disposition. Et ne pas avoir de notion en javascript ne veut pas dire que tu n'as pas le droit de l'utiliser ;-)

Bref, si tu veux vraiment le faire en php, tu as une solution qui parrait plutot simple :

page.php :
<code>
<html>
<head>.....</head>
<body>

<h1>Ma page</h1>

<form method='post' action='page.php'>
<label class="label">Paragraphe : </label>
<textarea name="para_1" rows="8" cols="45" ></textarea>
<?php
if(isset($_POST['Ajouter') && !empty($_POST['Ajouter']))
{
if($_POST['Ajouter'] == 'Ajouter')
{
$nbP = $_POST['nb_para'] + 1;
echo '<label class="label">Paragraphe : </label>
<textarea name="para_'.$nbP.'" rows="8" cols="45" ></textarea>';
echo '<input type="hidden'" name="nb_para" value="'.$nbP.'">
}
else echo '<input type="hidden" name="nb_para" value="1">';
}
?>
<input type="submit" name="Ajouter" value="Ajouter">
</form>

</body>
</html>

0
dourlens59 Messages postés 65 Date d'inscription vendredi 24 mai 2013 Statut Membre Dernière intervention 24 janvier 2017
27 mai 2013 à 16:51
Merci pour ton aide.
J'ai donc placer le code :
<?php
if(isset($_POST['Ajouter'] && !empty($_POST['Ajouter']))
{
if($_POST['Ajouter'] == 'Ajouter')
{
$nbP = $_POST['nb_para'] + 1;
echo '<label class="label">Paragraphe : </label>
<textarea name="para_'.$nbP.'" rows="8" cols="45" ></textarea>';
echo '<input type="hidden" name="nb_para" value="'.$nbP.'">';
}
else echo '<input type="hidden" name="nb_para" value="1">';
}
?>

Or, il me met ce message d'erreur :
Parse error: syntax error, unexpected '&&' (T_BOOLEAN_AND), expecting ',' or ')
Pour la ligne : if(isset($_POST['Ajouter'] && !empty($_POST['Ajouter']))
0
dourlens59 Messages postés 65 Date d'inscription vendredi 24 mai 2013 Statut Membre Dernière intervention 24 janvier 2017
27 mai 2013 à 16:53
Autant pour moi, il manquait une parenthese ;)
0
dourlens59 Messages postés 65 Date d'inscription vendredi 24 mai 2013 Statut Membre Dernière intervention 24 janvier 2017
27 mai 2013 à 16:56
Le code fonctionne, quand j'appuie sur ajouter, il me met bien un autre paragraphe à inserer, or il me met quand meme un message d'erreur
:Undefined index: nb_para
pour la ligne
$nbP = $_POST['nb_para'] + 1;
0
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
27 mai 2013 à 16:57
C'était pas vraiment du copier coller qu'il fallait faire ! Mais disons que c'était plus pour te montrer le systeme. Pcq je pense que le contenu de tes textarea tu veux les récupéré. Enfin c'est à toi de voir !
Si tu as compris le principe, ca devrait être bon pour la suite :)
0
dourlens59 Messages postés 65 Date d'inscription vendredi 24 mai 2013 Statut Membre Dernière intervention 24 janvier 2017
27 mai 2013 à 17:15
J'ai plus ou moins compris le principe,
le contenu des textarea doit se retrouver dois s'insérer dans la base de données.
Par contre sa n'ajoute qu'un seul paragraphe, sa ne veut pas en mettre plus que 2.
0
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
27 mai 2013 à 17:23
Petite erreur de ma part : Il faut bouclé juska $nbP.

if(isset($_POST['Ajouter']) && !empty($_POST['Ajouter']))
{
if($_POST['Ajouter'] == 'Ajouter')
{
$nbP = $_POST['nb_para'] + 1;
for($i = 1; $i <= $nbP ; $i++){
echo '<label class="label">Paragraphe : </label>
<textarea name="para[]" rows="8" cols="45" ></textarea>';
echo '<input type="hidden" name="nb_para" value="'.$nbP.'">'; }
}
else echo '<input type="hidden" name="nb_para" value="1">';
}


Une petite explication du name="para[]" :
Cela te permet de récupérer en $_POST['para'] un tableau contenant tous tes textarea. Il te suffit alors de faire un foreach($_POST['para'] as $p) où $p sera le contenu du textarea.

0
dourlens59 Messages postés 65 Date d'inscription vendredi 24 mai 2013 Statut Membre Dernière intervention 24 janvier 2017
27 mai 2013 à 17:33
J'ai mis dans mon code les modifs, et cette fois, il ne veut même plus me rajouter un autre paragraphe :/
0
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
27 mai 2013 à 17:45
if(isset($_POST['Ajouter']) && !empty($_POST['Ajouter']))
{
if($_POST['Ajouter'] == 'Ajouter')
{
$nbP = $_POST['nb_para'] + 1;
for($i = 1; $i <= $nbP ; $i++){
echo '<label class="label">Paragraphe : </label>
<textarea name="para[]" rows="8" cols="45" ></textarea>'; }
echo '<input type="hidden" name="nb_para" value="'.$nbP.'">';
}
else echo '<input type="hidden" name="nb_para" value="1">';
}


0
dourlens59 Messages postés 65 Date d'inscription vendredi 24 mai 2013 Statut Membre Dernière intervention 24 janvier 2017
27 mai 2013 à 17:53
C'est tous de suite mieu, je te remercie !
J'essaye donc maintenant d'intégrer les données de mes paragraphes dans ma base de données. Je vais essayer tous seul car tu m'as déjà bien aider. Si je n'y arrive pas je reviendrai t'embêter :).
Encore merci
0
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
27 mai 2013 à 17:58
Comme je t'ai expliqué avant : un foreach sur $_POST['para'] et le tour est joué ;-)
0
dourlens59 Messages postés 65 Date d'inscription vendredi 24 mai 2013 Statut Membre Dernière intervention 24 janvier 2017
Modifié par dourlens59 le 27/05/2013 à 18:13
C'est ok pour le foreach ! Merci :)
0