Boucle while [Fermé]

Messages postés
65
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
24 janvier 2017
- - Dernière réponse : 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,
Afficher la suite 

16 réponses

Messages postés
1227
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 septembre 2013
67
0
Merci
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.
Messages postés
65
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
24 janvier 2017
0
Merci
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 "
Messages postés
3026
Date d'inscription
mercredi 7 septembre 2005
Statut
Contributeur
Dernière intervention
1 décembre 2013
435
0
Merci
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+
Messages postés
65
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
24 janvier 2017
0
Merci
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.
Messages postés
1227
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 septembre 2013
67
0
Merci
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>

Messages postés
65
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
24 janvier 2017
0
Merci
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']))
Messages postés
65
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
24 janvier 2017
0
Merci
Autant pour moi, il manquait une parenthese ;)
Messages postés
65
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
24 janvier 2017
0
Merci
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;
Messages postés
1227
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 septembre 2013
67
0
Merci
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 :)
Messages postés
65
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
24 janvier 2017
0
Merci
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.
Messages postés
1227
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 septembre 2013
67
0
Merci
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.

Messages postés
65
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
24 janvier 2017
0
Merci
J'ai mis dans mon code les modifs, et cette fois, il ne veut même plus me rajouter un autre paragraphe :/
Messages postés
1227
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 septembre 2013
67
0
Merci
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">';
}


Messages postés
65
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
24 janvier 2017
0
Merci
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
Messages postés
1227
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 septembre 2013
67
0
Merci
Comme je t'ai expliqué avant : un foreach sur $_POST['para'] et le tour est joué ;-)
Messages postés
65
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
24 janvier 2017
0
Merci
C'est ok pour le foreach ! Merci :)