Récupération de plusieurs textarea

Récupération de plusieurs textarea - PHP - Programmation

Marsh Posté le 09-03-2009 à 23:31:29    

Bonjour,
 
 
Je souhaite récupérer 4 textarea exactement et insérer chaque ligne saisit de chaque textarea dans une table SQL.
 
Je récupère mes variables définit dans mon formulaire pour ensuite utiliser la fonction explode pour détecter les retours à la ligne.
 
Mon problème est que je n'arrive pas à grouper mes tableaux en un seul pour l'insérer ligne par ligne dans ma table.  
 
J'essaye de développer un outil qui prend un chiffre au hasard de 1 à 50 pour afficher une valeur saisie par l'utilisateur au hasard dans chaque textarea.
 
 

Code :
  1. if (isset($_GET['valid'])) {
  2. $champ_form1 = $_POST['champ1'];
  3. $champ_form2 = $_POST['champ2'];
  4. $champ_form3 = $_POST['champ3'];
  5. $champ_form4 = $_POST['champ4'];
  6. $champ_formulaire1 = explode("\n",$champ_form1);
  7. $champ_formulaire2 = explode("\n",$champ_form2);
  8. $champ_formulaire3 = explode("\n",$champ_form3);
  9. $champ_formulaire4 = explode("\n",$champ_form4);
  10. foreach ($champ_formulaire1 as $value) {
  11. $req="INSERT INTO description(id_description, texte1_description, id_site) Values('','$value','$site')";
  12. mysql_query ($req);
  13. }
  14. foreach ($champ_formulaire2 as $value) {
  15. $req="INSERT INTO description(id_description, texte2_description, id_site) Values('','$value','$site')";
  16. mysql_query ($req);
  17. }
  18. }
  19. ....


 
 
Merci pour votre aide,
 
José

Reply

Marsh Posté le 09-03-2009 à 23:31:29   

Reply

Marsh Posté le 09-03-2009 à 23:37:07    

Salut,
 
Tu veux nous donner ce que ça t'affiches si tu rajoutes print_r($champ_formulaire1); (et pareil pour le 2,3 4) avant tes foreach?  
Et éventuellement changer le mysql_query($req) par mysql_query($req) or die(mysql_error());  


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 09-03-2009 à 23:50:04    

Voici ce que les print_r($champ_formulaire1) m'affiche pour chaque formulaire.
 
Array ( [0] => Titre de page 1 [1] => Titre de page 2 [2] => Titre de page 3 ) Array ( [0] => Description 1 [1] => Description 2 [2] => Description 3 ) Array ( [0] => ) Array ( [0] => )
 
Pour l'erreur SQL, j'ai "Duplicate entry '0' for key 1".
 
En fait, récupérer un tableau n'est pas en soit très compliqué mais lorsqu'il s'agit d'en regrouper plusieurs pour insérer des saisies sur chaque ligne d'une table sql, c'est autre chose. :)


Message édité par antitrust56 le 09-03-2009 à 23:54:48
Reply

Marsh Posté le 09-03-2009 à 23:54:16    

Bein l'erreur SQL t'explique pourquoi,
Tu essaies d'entrer 2 fois une ligne qui contient une donnée identique sur un champs que tu as défini comme étant unique


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 09-03-2009 à 23:55:33    

Il faudrait que j'enlève la clé primaire sur mon 1er champs ?

Reply

Marsh Posté le 10-03-2009 à 00:03:01    

Oui, nikel esox_ch.
 
Sauf que j'ai encore un soucis,
 
Il y a un décalage lors de l'insertion des données.
 
Par exemple, titre de page 1, 2 et 3 s'affiche sur les 3 premières lignes de ma table et le reste suis en dessous.
 
Ce que je voudrais, c'est insérer mes données sur une seule et même ligne dans ma table.


Message édité par antitrust56 le 10-03-2009 à 00:03:20
Reply

Marsh Posté le 10-03-2009 à 00:36:16    

Voici le code modifié afin que vous y voyez plus clair.
 
J'utilise la fonction array_merge pour grouper mes tableaux mais je voudrais savoir comment les décomposer une fois qu'ils sont assemblés.
 
 

Code :
  1. if (isset($_GET['valid'])) {
  2. $champ_form1 = $_POST['champ1'];
  3. $champ_form2 = $_POST['champ2'];
  4. $champ_form3 = $_POST['champ3'];
  5. $champ_form4 = $_POST['champ4'];
  6. $champ_formulaire1 = explode("\n",$champ_form1);
  7. $champ_formulaire2 = explode("\n",$champ_form2);
  8. $champ_formulaire3 = explode("\n",$champ_form3);
  9. $champ_formulaire4 = explode("\n",$champ_form4);
  10. $array3 = array_merge($champ_formulaire1, $champ_formulaire2, $champ_formulaire3, $champ_formulaire4);
  11. foreach ($array3 as $value) {
  12. $req="INSERT INTO description(id_description, texte1_description, texte2_description, texte3_description, texte4_description, id_site) Values('','$value','$value','$value','$value','$site')";
  13. mysql_query($req) or die(mysql_error()); 
  14. }
  15. }

Reply

Marsh Posté le 10-03-2009 à 13:26:55    

Bonjour.
 
Est-ce que tu peux donner un exemple, avec le contenu de 4 textarea et ce que tu veux avoir dans la base ?
Parce que là, je ne comprends pas trop...

antitrust56 a écrit :


J'essaye de développer un outil qui prend un chiffre au hasard de 1 à 50 pour afficher une valeur saisie par l'utilisateur au hasard dans chaque textarea.

Et après, si tu peux m'expliquer le rapport entre les deux  :??:

Reply

Marsh Posté le 10-03-2009 à 18:28:07    

Merci pour ta réponse, je vais essayer de m'expliquer plus clairement.
J'ai une table "description" qui est composé de 4 champs : id_description, texte1_description, texte2_description, texte3_description, texte4_description et id_site.
 
L'utilisateur saisit x mots dans 4 textarea exactement et valide le formulaire.
 
Ce que je souhaite, c'est récupérer ces valeurs sous forme de tableau (c'est déjà fait) et mon problème vient de l'insertion des données dans ma table.
 
J'ai un décalage lors de l'insertion des données dans ma table sql.
 
Exemple :
Trois lignes distincts pour titre 1, titre 2, titre 3, c'est ce que je veux.
Et en dessous trois autre ligne pour description 1, description 2, description 3.
 
Je voudrais qu'il n'y ai pas de décalage lors de l'insertion.

Reply

Marsh Posté le 11-03-2009 à 11:09:18    

antitrust56 a écrit :

Merci pour ta réponse, je vais essayer de m'expliquer plus clairement.
J'ai une table "description" qui est composé de 4 champs : id_description, texte1_description, texte2_description, texte3_description, texte4_description et id_site.

Ca commence mal  :pfff:  
Le jour où tu veux/on te demande de rajouter un champ, tu fais comment ?
Ou, le jour où tu veux chercher les enregistrements de ta tables pour lesquels un des champs "texte#_description" contient "toto" ?
A priori une table de ce genre irait mieux :

[u]Description :[/u]
Id_description (PK)
Id_ligne (PK)
texte_description


Au lieu d'avoir

1,"toto", "tata", "tutu", "titi"

tu mets

1,1,"toto"
1,2,"tata"
1,3,"tutu"
1,4,"titi"


 

Citation :

L'utilisateur saisit x mots dans 4 textarea exactement et valide le formulaire.
Ce que je souhaite, c'est récupérer ces valeurs sous forme de tableau (c'est déjà fait) et mon problème vient de l'insertion des données dans ma table.
J'ai un décalage lors de l'insertion des données dans ma table sql.
Exemple :
Trois lignes distincts pour titre 1, titre 2, titre 3, c'est ce que je veux.
Et en dessous trois autre ligne pour description 1, description 2, description 3.
Je voudrais qu'il n'y ai pas de décalage lors de l'insertion.


Et là, c'est peut-être que je suis bouché, mais je ne comprends plus  :sweat:  
Quand je parle d'exemple, c'est plus de ce genre :
Textarea1

ligne1.1
ligne1.2
ligne1.3
ligne1.4

Textarea2

ligne2.1
ligne2.2
ligne2.3
ligne2.4

...
Résultat souhaité dans la table  :

1, "ligne1.1", "ligne1.2", "ligne1.3", ligne1.4"

etc.

Reply

Marsh Posté le 11-03-2009 à 11:09:18   

Reply

Marsh Posté le 11-03-2009 à 13:23:12    

C'est noté Macgawel, je modifierais ma table.
 
Je débute encore en php et j'apprends tous les jours.
 
Le résultat que je souhaite obtenir dans ma table est du type :

Code :
  1. ligne1.1, ligne2.1, ligne3.1, ligne4.1


et ainsi de suite.


Message édité par antitrust56 le 11-03-2009 à 19:15:42
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed