> Tous les forumsForum des Webmasters

 Remplir une 2 ème base lors d'une sessionSujet résolu
Statut du sujet : RESOLU Imprimer
 rené06
  Posté le 02/10/2006 @ 09:24  
 Petit astucien

52 Messages
Bonjour à tous et d'avance merci pour vos réponses. Je veux, lors d'une session remplir différents documents et, ce que je n'arrive pas à faire, renseigner une 2ème base de donnée. Tout ceci en partant d'un formulaire. Voici <?php session_start(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" > <head> <title>Inscription</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> </head> <? if (isset($_POST['nom']) AND isset($_POST['prenom'])) { if ($_POST['nom'] != NULL AND $_POST['prenom'] != NULL) { require("config.inc.php"); mysql_connect($host, $username, $password); mysql_select_db($bdd_name); $prenom = htmlentities ($_POST['prenom'], ENT_QUOTES); $nom = htmlentities ($_POST['nom'], ENT_QUOTES); $_SESSION['nom'] = $nom ; $_SESSION['prenom'] = $prenom ; mysql_query("INSERT INTO base VALUES('$nom', '$prenom')"); mysql_close(); } } ?> <form action="formul.php" method="post"> <p><label for="nom">nom : </label> <input type="varchar" name="nom"></p> <p><label for="prenom">prenom : </label> <input type="varchar" name="prenom"></p> <p><input type="submit" value="Envoyer" /></p> </form> <b><div style="text-align: center"><a href="base1.php">SUITE</a></div></b> </body> </html> Ceci fonctionne, pas de probléme, je rempli ma base "base" et divers documents ensuite avec ma session. Mon probléme ce trouve ci-dessous : <?php session_start(); // On démarre la session AVANT toute chose ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" > <head> <title>confirmation</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> </head> <? if (isset($_session['nom']) AND isset($_session['prenom'])) { if ($_session['nom'] != NULL AND $_session['prenom'] != NULL) { require("config.inc.php"); mysql_connect($host, $username, $password); mysql_select_db($bdd_name); mysql_query("INSERT INTO base1 VALUES('$nom', '$prenom')"); mysql_close(); } } ?> <?php echo $_SESSION['nom']; ?> <?php echo $_SESSION['prenom']; ?> </body> </html> Je voudrai avec cette programmation remplir la base1. La session fonctionne puisque j'arrive à obtenir mon nom et mon prénom avec la ligne <?php echo $_SESSION['nom']; ?> <?php echo $_SESSION['prenom']; ?> mais la base1 ne se rempli pas. L'erreur ne se trouve t'elle pas ici? mysql_query("INSERT INTO base1 VALUES('$nom', '$prenom')"); Je precise que la base1 existe bien. Dans l'attente, cordialement.
 Afficher le profil de rené06Envoyer un message privé à rené06
 
 
Publicité
 olivier7500  Posté le 02/10/2006 à 12:20  
Petit astucien

504 Messages
Salut, C'est ta requète qui déconne: [code]<? $sql = "INSERT INTO base1 (nom,prenom) VALUES "; $sql .= "('".$_SESSION['nom']."','".$_SESSION['nom']."')"; mysql_query($sql); ?>[/code] ou [code]<? mysql_query("INSERT INTO base1 (nom,prenom) VALUES ('".$_SESSION['nom']."','".$_SESSION['nom']."')"); ?>[/code] a++ Oliv
Afficher le profil de olivier7500 Voir la configuration de olivier7500Envoyer un message privé à olivier7500
  Revenir en haut de la page
 koala01  Posté le 02/10/2006 à 12:48  
Astucien

4715 Messages
Salut, Pourrais tu, cela nous faciliterait déjà les choses, utiliser les bons termes STP… Dans une base de données, tu as DES tables dans lesquelles tu peux indiquer des champs à remplir. Chaque "ligne" de la table (chaque fois que id, nom, prenon etc apparait) s'appelle un enregistrement. Que souhaite tu donc faire: Apres avoir travaillé sur une table pour récupérer des informations, tu souhaiterais rajouter un enregistrement dans une autre table de la meme base[question] Où souhaites tu insérer un enregistrement dans une table d'une autre base [question] Astuce: -Tu ne dois fournir les informations de connexion à ta base de données qu'une seule fois (en début de script) et ne fermer la connexion ( mysql_close();) qu'une fois que tu n'as plus besoin de la connexion (en fin de script) -Il est très largement préférable de travailler, quand tu effectue une requete, en plusieurs temps:
  • créer une variable qui contienne la requete
  • exécuter la requete
  • récupérer éventuellement le résultat de la requete dans un tableau
-Quand tu essaie d'insérer un enregistrement, il faut soit fournir la valeur de tous les champs dans l'ordre (id, nom, prenom, adresse…) soit indiquer le nom des champs qui sont fournis ce qui donne [code] $sql="insert into base values('%id','%nom','%prenom','$adresse')"; $cherche=mysql_query($sql,$informations_connexion) or die(mysql_error()); [/code] ou [code] $sql="insert into base set(`nom`,`prenom`) values('%nom','%prenom')"; $cherche=mysql_query($sql,$informations_connexion) or die(mysql_error()); [/code] NOTA: -le or die(mysql_error()) est intéressant lors de la mise au point du script, cela permettra d'obtenir le texte de l'erreur qui se produit si la requete ne fonctionne pas (il faudra cependant penser à supprimer ce terme une fois en production [clindoeil] -la variable $informations_connexion est un argument intéressant à fournir au script, et devrait etre déclaré sous la forme de [code]$informations_connexion= mysql_pconnect($nom_Hote, $nom_USER, $Mot_de_Passe) or trigger_error(mysql_error(),E_USER_ERROR); [/code] -Un test beaucoup plus compréhensible pour toi (mais qui revient au meme) est le fait de tester si une variable vaut (ou non) "" (une chaine vide) plutot que de tester si elle vaut NULL Le code [code] if ($_session['nom'] != NULL AND $_session['prenom'] != NULL)[/code] est plus facilement lisibile sous la forme de [code] if ($_session['nom'] !="" AND $_session['prenom'] !="")[/code]Mais, comme je l'ai dit, ce n'est qu'un détail Sois enfin conscient du fait que, si le champs nom et/ou le champs prénom de base1 est l'identifiant (la "clé primaire"), et que l'identifiant apparait déjà dans la base, il est normal que tu ne puisse pas réinsérer l'enregistrement, vu qu'un identifiant subit par définition une contrainte d'unicité [clindoeil]
Afficher le profil de koala01 Voir la configuration de koala01Envoyer un message privé à koala01
  Revenir en haut de la page
 rené06  Posté le 02/10/2006 à 20:55  
Petit astucien

52 Messages
Merci pour vos réponses olivier7500 et Koala mais j'en suis toujours au même point. J'ai essayé ce que vous me proposez olivier7500 <? mysql_query("INSERT INTO base1 (nom,prenom) VALUES ('".$_SESSION['nom']."','".$_SESSION['prenom']."')"); ?> ça ne va pas. Quant à toi Koala, j'ai tenu compte de certaines remarques, mais pas tout, ça fait beaucoup à digérer. Enfin, voyez, je re-explique tout et j'ai changé le nom des tables et des fichiers et fait q.q modifs. Avec inscription2.php ci-dessous le client alimente par l'intermédiaire d'un formulaire la table inscription2 de la base location. <?php session_start(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" > <head> <title>Inscription2</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> </head> <? if (isset($_POST['nom']) AND isset($_POST['prenom'])) { if ($_POST['nom'] != NULL AND $_POST['prenom'] != NULL) { require("config.inc.php"); mysql_connect($host, $username, $password); mysql_select_db($bdd_name); $prenom = htmlentities ($_POST['prenom'], ENT_QUOTES); $nom = htmlentities ($_POST['nom'], ENT_QUOTES); $_SESSION['nom'] = $nom ; $_SESSION['prenom'] = $prenom ; mysql_query("INSERT INTO inscription2 VALUES('$nom', '$prenom')"); } } ?> <form action="inscription2.php" method="post"> <p><label for="nom">nom : </label> <input type="varchar" name="nom"></p> <p><label for="prenom">prenom : </label> <input type="varchar" name="prenom"></p> <p><input type="submit" value="Envoyer" /></p> </form> <b><div style="text-align: center"><a href="contrat2.php">SUITE</a></div></b> </body></html> Aprés avoir fait: suite, s'ouvre un contrat (contrat2.php ci-dessous)Ceci est ramené à la plus simple expression pour essai. <?php session_start(); ?> <html> <body> <br><br> ceci est un contrat entre moi et Mr <?php echo $_SESSION['nom']; ?> <?php echo $_SESSION['prenom']; ?> <br><br> <b><div style="text-align: center"><a href="confirmation2.php">SUITE</a></div></b> </body></html> POUR L'INSTANT TOUT FONCTIONNE. Aprés avoir fait suite, s'ouvre les données du client (cela fonctionne) et je voudrais par la même occasion enregistrer ces données dans une table (confirmation2) toujours dans la base location (celle-ci me servira par la suite pour la gestion) Voici ce fichier qui me pose probléme. confirmation2.php <?php session_start(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" > <head> <title>confirmation2</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> </head> <? if (isset($_session['nom']) AND isset($_session['prenom'])) { if ($_session['nom'] != NULL AND $_session['prenom'] != NULL) { mysql_query("INSERT INTO confirmation2 (nom,prenom) VALUES ('".$_SESSION['nom']."','".$_SESSION['prenom']."')"); mysql_close(); } } ?> Voici vos données Mr <?php echo $_SESSION['nom']; ?> <?php echo $_SESSION['prenom']; ?> </body> </html> RIEN NE S'ENREGISTRE DANS LA TABLE CONFIRMATION2 Pour voir si j'avais oublié q.q chose dans cette table confirmation2 j'ai remplacé dans inscription2 INSERT INTO inscription2 par INSERT INTO confirmation2 . Les enregistrements se font dans confirmation2 . Modifs faites aprés les recommandations de Koala: Suppression clé primaire. Ouvrir la connexion qu'une fois (inscription2)et la refermer qu'une fois (confirmation2) Dans l'attente, cordialement et merci de vous interesser à mon probléme.
Afficher le profil de rené06Envoyer un message privé à rené06
 Revenir en haut de la page
Haut de la page 
Inscrivez-vous !
- Posez vos questions

- Résolvez vos problèmes

- Aidez les autres

- Participez et créez vos discussions

- Dialoguez en privé avec d'autres membres

- Suivez vos sujets préférés

- Affichez les signatures des membres

TOUT EST GRATUIT !

Je crée mon compte



Vous avez besoin d'aide ?
Des centaines d'experts sont à votre disposition sur les forums PC Astuces pour vous aider gratuitement, 24h/24, 7j/7.

Les derniers sujets résolus !
 

 > Tous les forumsForum des Webmasters

 
Forum PC Astuces© 1997-2008 WebastucesAller en haut de la page