Insérer 3 noms différents d'un formulaire sur 3 lignes différen

Résolu
keunene - Modifié par jordane45 le 17/09/2014 à 18:58
jordane45 Messages postés 36384 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 octobre 2022 - 18 sept. 2014 à 12:11
Bonjour,
jai un formulaire où on on peut mettre 3 noms et 3 prénoms.je voudrais les insérer dans une table.Mais je voudrais que ces noms et prénoms s'insèrent comme si c'était 3 enregistrements différents.je suis coincé.
<form method="post" action="traitement.php"
<label for="nom[1]">nom 1</label>
<input type="text" name="nom[1]" id="nom1"/>
 <label for="nom[2]">Nom 2</label>
<input type="text" name=nom[2]" id="nom2"/>
 <label for="nom[3]">Nom 3</label>
<input type="text" name=nom[3]" id="nom3"/>
<hr>

<label for="pnom[1]">prénom 1</label>
<input type="text" name="pnom[1]" id="nom1"/>
 <label for="pnom[2]">prénom 2</label>
<input type="text" name=pnom[2]" id="nom2"/>
 <label for="pnom[3]">prénom 3</label>
<input type="text" name=pnom[3]" id="nom3"/>

<input type="submit" value="enregistrer"/>
</form>

code php pour traitement
foreach ($_POST['nom'] as $nom) {
  $sql = 'INSERT INTO liste_proprietaire (nom) VALUES ("' . mysql_real_escape_string($nom) .'")';
   mysql_query ($sql);
}

je voudrais que ce code traite aussi le prénom
car il ne traite que le nom. J'ai essayé ce code mais il ne marche pas:
<?php
$sa=$_POST['nom'];
$sai=$_POST['pnom'];
$arr = array($sa,$sai);
foreach ($arr as  $value) {
  $sql = 'INSERT INTO liste (nom,pnom) VALUES ("' . $value .'")';
   mysql_query ($sql);
}
?>


EDIT : Ajout des balises de code( jordane)

8 réponses

jordane45 Messages postés 36384 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 octobre 2022 347
17 sept. 2014 à 18:57
Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
http://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
0
jordane45 Messages postés 36384 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 octobre 2022 347
17 sept. 2014 à 19:14
Là.. actuellement... tu as des tableaux de la forme :


sa :
Array
(
[1] => az
[2] => rt
[3] => ui
)

sai :
Array
(
[1] => dd
[2] => cc
[3] => gg
)

Arr :
Array
(
[0] => Array
(
[1] => az
[2] => rt
[3] => ui
)

[1] => Array
(
[1] => dd
[2] => cc
[3] => gg
)

)


DOnc... il te faut modifier ton tableau d'arrivé...

pour obtenir quelque chose du genre:

Array
(
[1] => Array
(
[nom] => aa
[prenom] => vv
)

[2] => Array
(
[nom] => zz
[prenom] => bb
)

[3] => Array
(
[nom] => ee
[prenom] => nn
)



Tu peux faire ceci :
for ($i=1;$i<=3;$i++){
	$arrTmp[$i]['nom'] = $sa[$i];
	$arrTmp[$i]['prenom'] = $sai[$i];
}

foreach ($arrTmp as  $value) {
  $sql = 'INSERT INTO liste (nom,pnom) VALUES ("' . $value['nom']."','".$value['prenom'] .'")';
 mysql_query ($sql);
}


0
NHenry Messages postés 15001 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 6 octobre 2022 158
Modifié par NHenry le 17/09/2014 à 19:27
La solution la plus accessible à mon avis serait de nommer tes champs Nom1, Nom2, Nom3, Prenom1, Prenom2, ...

$Post["Nom".$i]
$Post["Prenom".$i]

If a Dalek is a being of pure hate...what happens when Cadence uses her love spell on one?
En VB.NET pensez à activer "Option Explicit" et "Option Strict"
0
keunene Messages postés 68 Date d'inscription samedi 5 avril 2014 Statut Membre Dernière intervention 16 mars 2022
18 sept. 2014 à 11:13
j'ai essayé ce code mais ça ne marche pas:
<?php
// on se connecte à notre base
$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('forum', $base) ;
?>
<?php
$sa=$_POST['nom'];
$sai=$_POST['prenom'];

for ($i=1;$i<=3;$i++){
$arrTmp[$i]['nom'] = $sa[$i];
$arrTmp[$i]['prenom'] = $sai[$i];
}

foreach ($arrTmp as $value) {
$sql = 'INSERT INTO liste (nom,pnom) VALUES ("' . $value['nom']."','".$value['prenom'] .'")';
mysql_query ($sql);
}?>


code html
<form method="post" action="traitement.php"
<label for="nom[1]">nom 1</label>
<input type="text" name="nom[1]" id="nom1"/>
<label for="nom[2]">Nom 2</label>
<input type="text" name=nom[2]" id="nom2"/>
<label for="nom[3]">Nom 3</label>
<input type="text" name=nom[3]" id="nom3"/>
<hr>

<label for="prenom[1]">prénom 1</label>
<input type="text" name="prenom[1]" id="nom1"/>
<label for="prenom[2]">prénom 2</label>
<input type="text" name=prenom[2]" id="nom2"/>
<label for="prenom[3]">prénom 3</label>
<input type="text" name=prenom[3]" id="nom3"/>

<input type="submit" value="enregistrer"/>
</form>
0
keunene Messages postés 68 Date d'inscription samedi 5 avril 2014 Statut Membre Dernière intervention 16 mars 2022
18 sept. 2014 à 11:18
il n'y a pas d'erreur, mais je ne vois pas d'insertion dans la base de données
0

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

Posez votre question
jordane45 Messages postés 36384 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 octobre 2022 347
Modifié par jordane45 le 18/09/2014 à 11:28
s ça ne marche pas:
C'est à dire .... ??? tu as un message d'erreur ????
Il faut que tu sois plus explicite...


As-tu essayé d'afficher tes variables pour savoir ce qu'elles valent ?? Si elles ont bien les bonnes valeurs ???


Je te propose de faire ceci et de nous dire ce que ça donne :
<?php
// on se connecte à notre base
$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('forum', $base) ;
?>
<?php
$sa=$_POST['nom'];
$sai=$_POST['prenom'];

for ($i=1;$i<=3;$i++){
 $arrTmp[$i]['nom'] = $sa[$i];
 $arrTmp[$i]['prenom'] = $sai[$i];
}

// Affichage de la variable Tableau :
echo "<br><b> arrTMP = </b><br> ";
print_r($arrTmp);
echo "<br>";

foreach ($arrTmp as  $value) {
  $sql = 'INSERT INTO liste (nom,pnom) VALUES ("' . $value['nom']."','".$value['prenom'] .'")';
  // Affichage des requêtes :
 Echo "<br><b> Requête ".$i." </b><br> ".$sql;
  $result = mysql_query ($sql);
 echo "<br> Resultat de la requête :".$result;
}?>



Donc tu nous colles le résultat du code ici pour qu'on essaye de comprendre ce qui se passe...

Tu pourras aussi prendre les requêtes ainsi générées par ce code... et les tester DIRECTEMENT dans ta BDD.. pour voir si elles n'auraient pas un souci.


Avant de poser une question, merci de lire la charte du site.
Cordialement, Jordane
0
keunene Messages postés 68 Date d'inscription samedi 5 avril 2014 Statut Membre Dernière intervention 16 mars 2022
18 sept. 2014 à 11:55
voici les résultats:
arrTMP =
Array ( [1] => Array ( [nom] => ROBERT [prenom] => richard ) [2] => Array ( [nom] => DIET [prenom] => beatrice ) [3] => Array ( [nom] => FRANCOIS [prenom] => gué ) )

Requête 4
INSERT INTO liste (nom,pnom) VALUES ("ROBERT','richard")
Resultat de la requête :
Requête 4
INSERT INTO liste (nom,pnom) VALUES ("DIET','beatrice")
Resultat de la requête :
Requête 4
INSERT INTO liste (nom,pnom) VALUES ("FRANCOIS','gué")
Resultat de la requête :

le seul souci est qu'il ne s'insère pas dans la BDD
0
jordane45 Messages postés 36384 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 octobre 2022 347
18 sept. 2014 à 12:01
Tu as remarqué que tu avais des apostrophes en trop ??
INSERT INTO liste (nom,pnom) VALUES ("ROBERT','richard") 

modifie comme ça :
foreach ($arrTmp as  $value) {
$nom = $value['nom'];
$prenom = $value['prenom'];
  $sql = "INSERT INTO liste (nom,pnom) VALUES ('$nom','$prenom')";
  // Affichage des requêtes :
 Echo "<br><b> Requête => </b><br> ".$sql;
  $result = mysql_query ($sql);
 echo "<br> Resultat de la requête :".$result;
}
0
keunene Messages postés 68 Date d'inscription samedi 5 avril 2014 Statut Membre Dernière intervention 16 mars 2022
18 sept. 2014 à 12:03
INSERT INTO liste (nom,pnom) VALUES ("ROBERT','richard")
je remarque lorsque je fais des tests sur la BDD,il n'y a pas d'insertion sauf quand j'enlève les doubles quotes(") entre robert et richard pour les remplacer par(')
merci pour vos assistance
0
keunene Messages postés 68 Date d'inscription samedi 5 avril 2014 Statut Membre Dernière intervention 16 mars 2022
18 sept. 2014 à 12:09
merci infiniment, j'ai enfin trouvéc la solution grâce à vous
en remplaçant les " par ' comme ceci:
$sql = 'INSERT INTO liste (nom,pnom) VALUES ("' . $value['nom'].'","'.$value['prenom'] .'")';
vous n'êtes pas des hommes vous êtes des esprits, vous êtes forts
0
keunene Messages postés 68 Date d'inscription samedi 5 avril 2014 Statut Membre Dernière intervention 16 mars 2022
18 sept. 2014 à 12:11
merci jordane45. TU ES WONDERFULL
0
jordane45 Messages postés 36384 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 octobre 2022 347
18 sept. 2014 à 12:11
Bonjour,
Si la question est résolue..
Merci de ne pas oublier de clôturer le sujet
(en cliquant sur le lien "Marquer comme résolu" qui se trouve sous le titre de la question)

Cordialement,
Jordane
0