antitrust56 | J'ai fais la transformation inverse de nl2br() comme tu le précise sufo. Ça avance car je n'ai plus de <br /> qui sont affichés dans mon textarea mais lorsque je valide mon formulaire celà marche une fois et ensuite j'ai une ligne vide qui s'insère dans ma table et mes champs sont collés.
En fait Siron, je n'utilisais pas $donnees dans ma requête car j'avais essayé d'utiliser nl2br avant d'afficher le contenu dans ma page comme tu me l'as précisé.
Exemple, dans mes 4 textarea je rentre ces informations :
Les insertions dans ma base fonctionne parfaitement, mais lorsque je revalide mon formulaire j'ai des décalages dans ta table.
1.1 -> Titre 1
1.2 -> Titre 2
2.1 -> Description 1
2.2 -> Description 2
3.1 -> Mots-clés 1
3.2 -> Mots-clés 2
4.1 -> URL 1
4.2 -> URL 2
1ère insertion dans ma table : Ligne 1 : Titre 1, Description 1, Mots-clés 1, URL 1
Ligne 2 : Titre 2, Description 2, Mots-clés 2, URL 2
Revalidation du formulaire pour modification : Ligne 1 : Titre 1, Description 1, Mots-clés 1, URL 1
Ligne 2 : Titre 2, Description 2, Mots-clés 2, URL 2
Ligne 3 : '', '', '', ''
Revalidation
Ligne 1 : Titre 1Titre2, Description 1Description2, Mots-clés 1Mots-clés2, URL 1URL2
Ligne 2 : '', '', '', ''
Ligne 3 : '', '', '', ''
Je vous met le code complet pour que vous aide à comprendre mon problème.
Code :
- <?php
- // Validation du formulaire
- if (isset($_GET['valid'])) {
- if ($theme<>"" ) {
- $req = "DELETE FROM description where theme_description='$theme'";
- mysql_query($req);
- $theme = $_POST['theme'];
- $nb = $_POST['nb'];
- $champ_form1 = addslashes($_POST['champ1']);
- $champ_form2 = addslashes($_POST['champ2']);
- $champ_form3 = addslashes($_POST['champ3']);
- $champ_form4 = addslashes($_POST['champ4']);
- $champ_formulaire1 = explode("\n",$champ_form1);
- $champ_formulaire2 = explode("\n",$champ_form2);
- $champ_formulaire3 = explode("\n",$champ_form3);
- $champ_formulaire4 = explode("\n",$champ_form4);
- $requete="INSERT INTO description (id_description, texte1_description, texte2_description, texte3_description, texte4_description, nb_morceaux_description, theme_description) VALUES";
- //on vérifie que les 4 tableaux ont la même dimension pour cela je les mets dans un tableau
- //où j'enlève les doublons : s'il ne me reste que 1 cellule = tous les tableaux ont la même dimension
- $tab_temp = array();
- array_push ($tab_temp,count ($champ_formulaire1),count ($champ_formulaire2),count ($champ_formulaire3),count ($champ_formulaire4));
- $resultat = array_unique ($tab_temp);
- if (count($resultat) == 1) //les tableaux ont la même dimension
- {
- for ($cle =0 ; $cle < count ($champ_formulaire1) ; $cle++)
- {
- $requete .= " ('','$champ_formulaire1[$cle]','$champ_formulaire2[$cle]','$champ_formulaire3[$cle]','$champ_formulaire4[$cle]','$nb','$theme'),";
- }
- //on enlève la , final qu'on ne veut pas
- $requete = substr ($requete,0,-1);
- mysql_query ($requete);
- }
- }
- else {
- echo "Vous n'avez pas sélectionner de thème";
- }
- }
- ?>
- <?php
- $sql_theme = mysql_query("select id_description_theme, nom_description_theme from description_theme order by nom_description_theme" );
- echo "<form action='' method='post'>";
- echo "Sélectionner le thème : ";
- echo "<SELECT name='theme' size='1'>";
- echo "<option value='test_description.php'>-- Sélectionner --</option>";
- while ($donnees = mysql_fetch_array($sql_theme)) {
- echo "<option value='".$donnees['nom_description_theme']."'";
- if($theme==$donnees['nom_description_theme']) echo " selected";
- echo ">".$donnees['nom_description_theme']."</option>";
- }
- echo "</SELECT>";
- echo "<input type='submit' value='Valider'>";
- echo "</form>";
- ?>
- ou ajouter votre thème
- <form action='test_description.php?ajout=1' method='post'>
- <input type="text" name="theme">
- <input type="submit" value="Ajouter">
- </form><br /><br />
- <center>Sélectionner un nombre de morceaux :
- <a href="test_description.php?nb=2">2</a> |
- <a href="test_description.php?nb=3">3</a> |
- <a href="test_description.php?nb=4">4</a> |
- <a href="test_description.php?nb=5">5</a></center>
- <br />
- <form method="post" action="test_description.php?valid=1">
- <input type="hidden" name="nb" value="<?php echo $nb; ?>">
- <?php
- for($i=1;$i<=$nb;$i++) {
- echo '<textarea name="champ'.$i.'" rows="10">';
- $sql_textarea = mysql_query("select id_description, texte$i"."_description from description where theme_description='$theme' and nb_morceaux_description='$nb'" );
- while ($donnees = mysql_fetch_array($sql_textarea)) {
- $content = str_replace(array('<br />'), array("\n" ), $donnees["texte$i"."_description"]);
- echo $content;
- }
- echo "</textarea>";
- }
- ?>
- <input type="submit" />
- </form>
|
Message édité par antitrust56 le 24-03-2009 à 09:10:22
|