Insérer 3 noms différents d'un formulaire sur 3 lignes différen [Résolu]

Signaler
-
jordane45
Messages postés
27304
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 janvier 2020
-
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

Messages postés
27304
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 janvier 2020
322
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
Messages postés
27304
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 janvier 2020
322
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);
}


Messages postés
14620
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
19 janvier 2020
138
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"
Messages postés
61
Date d'inscription
samedi 5 avril 2014
Statut
Membre
Dernière intervention
7 septembre 2018

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>
keunene
Messages postés
61
Date d'inscription
samedi 5 avril 2014
Statut
Membre
Dernière intervention
7 septembre 2018

il n'y a pas d'erreur, mais je ne vois pas d'insertion dans la base de données
Messages postés
27304
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 janvier 2020
322
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
Messages postés
61
Date d'inscription
samedi 5 avril 2014
Statut
Membre
Dernière intervention
7 septembre 2018

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
jordane45
Messages postés
27304
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 janvier 2020
322
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;
}
Messages postés
61
Date d'inscription
samedi 5 avril 2014
Statut
Membre
Dernière intervention
7 septembre 2018

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
Messages postés
61
Date d'inscription
samedi 5 avril 2014
Statut
Membre
Dernière intervention
7 septembre 2018

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
keunene
Messages postés
61
Date d'inscription
samedi 5 avril 2014
Statut
Membre
Dernière intervention
7 septembre 2018

merci jordane45. TU ES WONDERFULL
jordane45
Messages postés
27304
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 janvier 2020
322
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