Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/06/2006, 09h31   #1
Membre confirmé
 
Avatar de griese
 
Inscription : juin 2006
Messages : 646
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juin 2006
Messages : 646
Points : 243
Points : 243
Par défaut Insérer des données dans ma BDD

Bonjour à tous,
Je vous expose mon problème, dans un formulaire d'une page php, j'affiche des données en fonction du résultat de ma requête SQL. En voici le code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
$res = mysql_query("SELECT * FROM correspondre, intervenant WHERE correspondre.nom_inter=intervenant.nom AND Num_projet='".$_SESSION['code_projet']."';");
while($row=mysql_fetch_object($res)){
echo"
		  <td><p class='Style20'>Intervenant n°".$i."</p></td>
		  <td><p class='Style20'><select name='inter'>
		  <option value=''>Aucun</option>";
echo "<option value='".$row->Nom."' selected>".$row->Nom." ".$row->Prenom."</option>
</select>
<br>
		  TR1
		  <input type='text' name='aj_tr1' size='3' value='".$row->jour_TR1."'>
		  TR2
		  <input type='text' name='aj_tr2' size='3' value='".$row->jour_TR2."'><br>
		  TR3
		  <input type='text' name='aj_tr3' size='3'value='".$row->jour_TR3."'>
		  TR4
		  <input type='text' name='aj_tr4' size='3' value='".$row->jour_TR4."'></p>
		  </td>
		  </tr>";
$i++;	  }
Maintenant, je voudrais pouvori insérer ses données dans ma BDD, mais le problème, c'est que je ne sais pas comment faire, car si j'utilise les variables de sessions, le problème qui va se poser c'est que si la requete me retourne plusieurs résultats, comment les distinguer comme ils auront les même noms de variables. Par exemple si j'ai deux lignes retourné par ma requête, j'aurai deux listes déroulante qui auront le même nom, alors puis-je les différencier afin de pouvoir insérer dans ma BDD.
Merci pour votre aide.
__________________
(\ _ /)
(='.'=) Voici Lapinou. Aidez le à conquérir le monde
(")-(") en le reproduisant.

http://mosfootball.over-blog.com
griese est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2006, 09h46   #2
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Salut,

Une solution pourrait être d'utiliser des tableaux pour récupérer les valeurs de tes champs. Dans le champ NAME de tes INPUT, tu mets par exemple aj_tr1[] au lieu de aj_tr1, les valeurs seront ensuite mises dans un tableau que tu pourras parcourir dans la page de traitement (je suppose que tes balises FORM sont à l'extérieur du code que tu fournis...).

Ou alors autre solution tu peux faire un formulaire pour chaque tour de ta boucle, avec un champ caché tu identifies chacun d'eux, mais je pense que ton idée c'est plutôt de valider toute ta page d'un coup non ?
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2006, 10h13   #3
Membre confirmé
 
Avatar de griese
 
Inscription : juin 2006
Messages : 646
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juin 2006
Messages : 646
Points : 243
Points : 243
Exact en fait il est possible de modifier les infos et ensuite de les enregistrées toutes d'un coup. Peux tu m'expliquer le système de tableau, je ne connais pas ce mécanisme. Merci pour ton aide.
__________________
(\ _ /)
(='.'=) Voici Lapinou. Aidez le à conquérir le monde
(")-(") en le reproduisant.

http://mosfootball.over-blog.com
griese est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2006, 10h26   #4
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Il faut que tu renommes tes champs comme je te l'ai dit en ajoutant des crochets.

Ensuite dans ta page de traitement tu récupères les données en parcourant les variables avec un foreach par exemple, ou mieux encore dans ton cas, tu ajoutes un champ de type HIDDEN qui a pour valeur le nombre de réponses du SELECT qui te sers à construire ton formulaire. Dans la page de traitement, tu récupères ce nombre, et ensuite tu fais une boucle pour parcourir tes tableaux de résultats.

Tu vas t'en sortir ou il te faut aussi un peu de code ?
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2006, 10h31   #5
Membre confirmé
 
Avatar de griese
 
Inscription : juin 2006
Messages : 646
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juin 2006
Messages : 646
Points : 243
Points : 243
Merci de ton aide, mais pour récupérer les valeurs du tableau, pas besoin de passer par les variables de sessions ?
__________________
(\ _ /)
(='.'=) Voici Lapinou. Aidez le à conquérir le monde
(")-(") en le reproduisant.

http://mosfootball.over-blog.com
griese est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2006, 10h51   #6
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Citation:
Envoyé par griese
Merci de ton aide, mais pour récupérer les valeurs du tableau, pas besoin de passer par les variables de sessions ?
Non, tu les récupères comme une variable classique, sauf que c'est un tableau.

Au final ça doit te faire un truc dans le genre :

Code :
1
2
3
$tab = $_POST['tableau1'];
for($i = 0 ; $i < $_POST['nbval'] ; $i++)
   $val = $tab[$i];
Pas testé, mais ça doit ressembler à ça je pense.

Bon courage.
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2006, 11h14   #7
Membre confirmé
 
Avatar de griese
 
Inscription : juin 2006
Messages : 646
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juin 2006
Messages : 646
Points : 243
Points : 243
Merci pour l'exemple, mais je vois pas comment faire pour récupérer toutes mes données et les insérer dans ma table. Car avec ton systeme, il n'y a qu'une seule valeur, $val.
__________________
(\ _ /)
(='.'=) Voici Lapinou. Aidez le à conquérir le monde
(")-(") en le reproduisant.

http://mosfootball.over-blog.com
griese est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2006, 11h23   #8
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Je t'ai montré comment récupérer les valeurs saisies dans le formulaire, c'est le point sensible, après le reste c'est du traitement classique de base de données, il y a les tutos et autre FAQ pour ça
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2006, 11h55   #9
Membre confirmé
 
Avatar de griese
 
Inscription : juin 2006
Messages : 646
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juin 2006
Messages : 646
Points : 243
Points : 243
Par contre, je ne comprends l'histoire du hidden, tu peux être plus précis, j'essai de le mettre en place mais ça ne marche pas. je le déclare dans mon formulaire :
Code :
1
2
 
<input type='hidden' id='tableau'>
et dans l'autre page je fais :
Code :
1
2
 
$_SESSION['tableau']=$_POST['tableau'];
Il me dit que l'index tableau est indéfini. Je dois me tromper dans sa déclaration.
__________________
(\ _ /)
(='.'=) Voici Lapinou. Aidez le à conquérir le monde
(")-(") en le reproduisant.

http://mosfootball.over-blog.com
griese est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2006, 12h03   #10
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
C'est pas id c'est name.

Le champ caché dont je te parles sert à transmettre le nombre de résultats de ta requête SELECT qui sert à afficher le formulaire.

Mets en place un compteur (ou utilises mysql_num_rows ou un truc dans le genre si tu préfères) pour récupérer ce nombre.

Et à la fin avant ton bouton SUBMIT tu mets

Code :
echo "<INPUT TYPE='HIDDEN' NAME='compteur' VALUE='" . $compteur . "'/>";
Au final ce nombre vaudra en fait le nombre d'éléments qu'il y a dans chacun des tableaux de valeurs de tes champs. D'où une gestion de ces tableaux plus facile dans ton fichier de traitement.
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2006, 09h34   #11
Membre confirmé
 
Avatar de griese
 
Inscription : juin 2006
Messages : 646
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juin 2006
Messages : 646
Points : 243
Points : 243
Bon j'ai des petits soucis avec l'insertion des données dans ma BDD.
quand je liste les valeurs contenu dans mon tableau, voila ce que j'obtiens :
TOTO
1
2
3
4
TITI
5
6
7
8
TATA
9
10
11
12
Jusque là, pas de porblème, par contre quand je les inserts dans ma BDD, voilà ce que je retrouve dans ma BDD :
TATA|9|12|11|4
TATA|9|12|11|8

Et moi, ce que je veux c'est ça :
TOTO|1|2|3|4
TITI|5|6|7|8
TATA|9|10|11|12

Voici le code que j'utilise :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
$compteur=$_SESSION['tableau']*5;
for ($i=0; $i<$compteur; $i++){
echo $_SESSION['inter'][$i];
}
for ($i=0; $i<$compteur; $i=$i+5){
if ($_SESSION['inter'][$i]<> "") {
echo "<br>".$i;
$req="UPDATE correspondre SET Nom_inter='".$_SESSION['inter'][$i]."', Num_projet='".$_SESSION['code_projet']."', jour_TR1='".$_SESSION['inter'][$i+1]."', jour_TR2='".$_SESSION['inter'][$i+2]."', jour_TR3='".$_SESSION['inter'][$i+3]."', jour_TR2='".$_SESSION['inter'][$i+4]."' WHERE Num_projet='".$_SESSION['code_projet']."';";
$insert=mysql_query($req);
}
}
Quelqu'un voit-il d'où viens le problème ?
Merci d'avance
__________________
(\ _ /)
(='.'=) Voici Lapinou. Aidez le à conquérir le monde
(")-(") en le reproduisant.

http://mosfootball.over-blog.com
griese est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h37.


 
 
 
 
Partenaires

Hébergement Web