Boucle while

dourlens59 Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   -  
dourlens59 Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   79
 
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   Statut Membre Dernière intervention  
 
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 3004 Date d'inscription   Statut Contributeur Dernière intervention   470
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   79
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
Autant pour moi, il manquait une parenthese ;)
0
dourlens59 Messages postés 65 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   79
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   79
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   79
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   79
 
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   Statut Membre Dernière intervention  
 
C'est ok pour le foreach ! Merci :)
0