IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Insérer des données dans ma BDD


Sujet :

PHP & Base de données

  1. #1
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    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)

  3. #3
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut
    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

  4. #4
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    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)

  5. #5
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut
    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

  6. #6
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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)

  7. #7
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut
    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

  8. #8
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    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)

  9. #9
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type='hidden' id='tableau'>
    et dans l'autre page je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  10. #10
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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)

  11. #11
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

Discussions similaires

  1. Insérer des Jpeg dans une BDD
    Par KRis dans le forum Bases de données
    Réponses: 8
    Dernier message: 19/03/2009, 19h16
  2. insérer des données dans un tableau lors d'une boucle
    Par sissi25 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 31/05/2007, 09h19
  3. Insérer des données dans une BD depuis un fichier .bat
    Par kurkaine dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 24/11/2006, 08h31
  4. [VB.Net] Comment insérer des données dans des tables ?
    Par shakoulé dans le forum Accès aux données
    Réponses: 2
    Dernier message: 23/09/2006, 21h46
  5. Réponses: 26
    Dernier message: 01/07/2006, 13h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo