Ernestine Posté 24 Juillet 2012 Posté 24 Juillet 2012 Oui INSERT, comme son nom l'indique, c'est pour insérer. SELECT c'est pour sélectionner.
jpdel13 Posté 24 Juillet 2012 Auteur Posté 24 Juillet 2012 Merci, alors quelle serait le code pour pouvoir ajouter les donnees des visiteurs du site sur ma base de donnée. Ecore merci à toi.
Aenoa Posté 24 Juillet 2012 Posté 24 Juillet 2012 (modifié) (Pour compléter ce qui est dit, et un peu répondre aux possibles soucis que j'ai vu dans le code) Bonsoir, apres plusieurs petits changements, je n'ai plus d'erreurs mais je n'ai tjrs pas de resultat dans ma base de donnée quand je ne remplie pas toutes les "cases" de mon formulaire,je n'ai pas de message. voici le code: $prenom = stripslashes (isset($_POST["prenom"])); $resume = stripslashes(isset($_POST["resume"])); merci à vous. Jp Bonjour, c'est tout à fait normal. Tu met dans tes variables $prenom et $resume un booléen (isset retournant true / false). Automatiquement, les variables sont remplies tu doit retirer le isset() de ta déclaration de $prenom et $resume. Si tu veux éviter les erreurs "undefined", il y a une petite astuce, c'est les conditions en déclaration. ça se présente comme tel: $variable = condition ? si vrai : si faux; Par exemple, vérifier que 1 == 2 (ce qui est faut) sera ainsi: $variable = 1 == 2 ? "C'est egal !" : "Ce n'est pas égal !"; et en affichant $variable, tu verra "Ce n'est pas égal !" car 1 est différent de 2 j'espère que c'est compréhensible. Dans ton cas, tu désire vérifier que la variable est définie. Tu peut donc faire comme suit: $prenom = isset($_POST["prenom"]) ? stripslashes($_POST["prenom"]) : NULL;$resume = isset($_POST["resume"]) ? stripslashes($_POST["resume"]) : NULL; "C'est bien beau, mais ça fais quoi?" En fait, et je vais l'expliquer que pour prénom (vu que resume fais exactement pareil): On défini une variable nommée $prenom. Dans cette variable, on met une condition. une "vérification" si tu préfère. On vérifie si $_POST["prenom"] est défini (via isset($_POST["prenom"]) ?) et on dit que si c'est vrai (donc isset retourne true; signifiant que $_POST["prenom"] contient quelque chose) on dit que $prenom contiendra stripslashes($_POST["prenom"]). Toutefois, si jamais $_POST["prenom"] venant à retourner false (et donc qu'il ne serait pas complété par l'utilisateur), on met $prenom avec la valeur NULL. NULL étant en réalité une sorte de "vide". Ainsi, pour ta vérification antérieure, tu aura bien un message si tu fais empty($prenom) ; car la variable est vide ---- Pour ajouter une entrée de ce que l'utilisateur a tapé, après avoir vérifié si tout a été défini par l'utilisateur (les empty), tu doit faire une autre query contenant ceci: // Je créer de nouvelles variables, rien n'empêche de redéfinir $prenom et $resume.// mysql_real_escape_string() va sécuriser tes variables contre les injections sql // (des trucs méchants qui peuvent faire des failles de sécurité)$prenom_i = mysql_real_escape_string($prenom);$resume_i = mysql_real_escape_string($resume);// Cette requête ajoute dans la table commentaire, // les variables $prenom dans la colonne 'prenom' // et $resume dans la colonne 'commentaires'. // Faut adapter selon le nom de tes colonnes / table $requete2 = "INSERT INTO commentaire (prenom, commentaires) VALUES ('$prenom_i', '$resume_i')"$execution = mysql_query($requete2, $connexion);if(!$execution){ $message = 'requête invalide: '. mysql_error() . "\n"; $message.= 'requête: ' . $requete2; die($message);} Modifié 24 Juillet 2012 par Aenoa
jpdel13 Posté 24 Juillet 2012 Auteur Posté 24 Juillet 2012 Merci pour toutes ces explications que j'ai bien compris !!! il ne s'agit que de certaines conditions pour differentes variables,maisen effectuant les morceaux de codes que tu viens de me faire (merci !!!) je me retrouve avec messages d'erreurs. messages : Notice: Undefined variable: prenom in C:\wamp\www\maintenance13 Notice: Undefined variable: resume in C:\wamp\www\maintenance13\ Requête invalide: No database selected Requête effectuee: INSERT INTO commentaire (prenom,resume) VALUES ('', '') je te renvois aussi le morceau de code modifie: mysql_select_db($mabasededonnee,$connexion); $requete="INSERT INTO commentaire (prenom,resume) VALUES ('$prenom', '$resume')"; $resultat=mysql_query($requete,$connexion); if (!$resultat) { $message = 'Requête invalide: ' . mysql_error() . "\n"; $message .= 'Requête effectuee: ' . $requete; die($message); } mysql_close($connexion); while ($row = mysql_fetch_assoc($resultat)) print_r($row); if(isset($_POST["Valider"])) { $prenom = mysql_real_escape_string($prenom); $resume = mysql_real_escape_string($resume); if(empty($prenom)){ echo 'prenom est vide. <br/>'; } else if(empty($resume)){ echo 'resume est vide.<br/>'; } Merci à toi. Cordialement, Jp
Aenoa Posté 24 Juillet 2012 Posté 24 Juillet 2012 mysql_select_db($mabasededonnee,$connexion);$requete="INSERT INTO commentaire (prenom,resume) VALUES ('$prenom', '$resume')"; $resultat=mysql_query($requete,$connexion);if (!$resultat) { $message = 'Requête invalide: ' . mysql_error() . "\n"; $message .= 'Requête effectuee: ' . $requete; die($message);}mysql_close($connexion);while ($row = mysql_fetch_assoc($resultat)) print_r($row);if(isset($_POST["Valider"])){$prenom = mysql_real_escape_string($prenom);$resume = mysql_real_escape_string($resume);if(empty($prenom)){echo 'prenom est vide. <br/>';}else if(empty($resume)){echo 'resume est vide.<br/>';} ton code est mal structuré ici :/ je te retape le tout bien structuré et j'éditerais ce message avec le code... a dans quelques minutes
Aenoa Posté 24 Juillet 2012 Posté 24 Juillet 2012 Je n'ai pas testé mais normalement tout sera bon. <?php// Nom de la base de donnée$mabasededonnee="maintenance13";// Connexion à MySQL$connexion = mysql_connect("localhost","root","");// Vérification de la bonne connexion à MySQLif(!$connexion){ die("Erreur lors de la connexion à MySQL: <br />" .mysql_error());}// Sélection de la Base de donnée $mabasededonneemysql_select_db($mabasededonnee, $connexion);// Requête permettant de lister tout les commentaires$requete="SELECT * FROM commentaire"; // Exécution de la requête ci-dessus$resultat=mysql_query($requete, $connexion);// Vérification de la bonne exécution de la requêteif (!$resultat) { $message = 'Requête invalide: ' . mysql_error() . "\n"; $message .= 'Requête effectuee: ' . $requete; die($message);}// Affichage des commentaireswhile ($row = mysql_fetch_assoc($resultat)) print_r($row);if(isset($_POST["Valider"]));{ $prenom = isset($_POST["prenom"]) ? stripslashes($_POST["prenom"]) : NULL; $resume = isset($_POST["resume"]) ? stripslashes($_POST["resume"]) : NULL; if(!empty($prenom) && !empty($resume)) { // Les deux champs sont correctement remplis. // On peut donc insérer ce qu'ils ont marqué dans la db. $prenom_bis = mysql_real_escape_string($prenom, $connexion); $resume_bis = mysql_real_escape_string($resume, $connexion); // Requête permettant d'insérer un nouveau commentaire $requete_ins = "INSERT INTO commentaire (prenom, commentaires) VALUES ('$prenom_bis', '$resume_bis')"; // Exécution de la requête ci-dessus $resultat_ins = mysql_query($requete_ins, $connexion); // Vérification de la bonne exécution de la requête if (!$resultat_ins) { $message2 = 'Requête invalide: ' . mysql_error() . "\n"; $message2 .= 'Requête effectuee: ' . $requete_ins; die($message2); } } elseif(empty($prenom)) { // $prenom n'a pas été entré ou est vide echo 'prenom est vide. <br/>'; } elseif(empty($resume)) { // $resume n'a pas été entré ou est vide echo 'commentaire est vide.<br/>'; }}// Au final, fermeture de la base de donnéemysql_close($connexion);?> évidement cela requiert que ta table "commentaire" soit structurée avec une colonne se nommant "prenom" et une autre se nommant "commentaires"
jpdel13 Posté 24 Juillet 2012 Auteur Posté 24 Juillet 2012 merci a toi , c'est vraiment tres sympa de ta part, pour eviter toutes embrouilles, j'ai renommé "commentaires" par "resume". Je verifie tout ca et je reviensvers toi si ca te deranges pas pour te dire ce qu'il en est. Merci . Jp
jpdel13 Posté 24 Juillet 2012 Auteur Posté 24 Juillet 2012 (modifié) Waouhhhh quel pied de voir que ca marche !!! mais car il y a tjrs un "mais" je me retrouve avec une page blanche et ce message message: Array ( [id] => 1 [prenom] => Marc [resume] => pas mal ton site ) commentaire est vide. est il possible de rester sur la page d'accueil ? Vraiment un gros MERCIIIII !!! Modifié 24 Juillet 2012 par jpdel13
Aenoa Posté 24 Juillet 2012 Posté 24 Juillet 2012 il te faudra ajouter le code a ta page d'accueil dans ce cas
jpdel13 Posté 24 Juillet 2012 Auteur Posté 24 Juillet 2012 Oui je viens juste de le comprendre mais ce message reste afficher sur ma page d'accueil, aurais-tu une soluce pour ca ? Cordialement. Jp
captain_torche Posté 24 Juillet 2012 Posté 24 Juillet 2012 Tu dois avoir un print_r qui traîne quelque part. Par contre, recopier le code qu'Aenoa te fournit c'est une bonne chose, mais,le comprendre c'est mieux
jpdel13 Posté 24 Juillet 2012 Auteur Posté 24 Juillet 2012 Ok merci encore à vous mais je pense que je reviendrais assez vite. Tres cordialement. Jp
jpdel13 Posté 24 Juillet 2012 Auteur Posté 24 Juillet 2012 (modifié) Me revoilou, j'ai effectivement un print_r mais je l'ai enleve du code mais a chaque fois je retombe sur page blanche avec message d'erreur qui est volontaire d'ailleurs, comment rester sur ma page d'accueil. morceau de code que j'ai enleve par "//" // Affichage des commentaires //while ($row = mysql_fetch_assoc($resultat)) // print_r($row); Et je ne peux faire qu'un seule requete sauf si je change "insertinto" par "replace" Comment je peux regler ce probleme. Merci à vous. Modifié 24 Juillet 2012 par jpdel13
Ernestine Posté 24 Juillet 2012 Posté 24 Juillet 2012 comment rester sur ma page d'accueil. Deux solutions (entre autres) : 1/ Tu mets tout dans le même fichier : le formulaire ET le traitement du formulaire. Cela peut être la page d'accueil. Dans ce cas, elle doit porter l'extension php, et dans la balise du formulaire tu mets action="" (ainsi le formulaire est envoyé sur la même url). 2/ Ou alors tu fais une redirection après le traitement, en ajoutant header('Location: index.php'); à la fin. Où "index.php" est l'url de la page d'accueil. Dans ce cas, il faut également que rien ne soit affiché avant la redirection (donc retirer tout ce qui t'a servi au débug).
jpdel13 Posté 24 Juillet 2012 Auteur Posté 24 Juillet 2012 (modifié) Je tiens encore à vous remercier pour le support que vous m'avez apporté. Il est vrai que plus on avance, plus je vais rencontrer des problemes. Encore merci et certainement a bientot. Cordialement. Jp Modifié 24 Juillet 2012 par jpdel13
jpdel13 Posté 27 Juillet 2012 Auteur Posté 27 Juillet 2012 (modifié) Bonjour à vous touts et toutes, Je viens de refaire un code pour un support d'annuaire (projet perso)mais j'ai une ligne qui s'affiche en permanence "Nom de la société est vide" idem si je ne remplie pas certaines cases, c'est tjrs le meme texte qui s'affiche. Je ne vois pas ou est mon erreur.Merci pour votre aide.Je vous mets le code. code: <?php//connection a la base.$mabasededonnee="ambulanceweb";//connection a mysql.$connexion = mysql_connect("localhost","root","");//verification de la bonne connexion.if(!$connexion){ die("Erreur lors de la connexion à MySQL: <br />" .mysql_error());}//selection de la base de donneemysql_select_db ($mabasededonnee,$connexion);// requetes permettant de lister tous les commentaires.$requete = "SELECT * FROM formulaire";//execution de la requete.$resultat = mysql_query ($requete,$connexion);//on verifie l'excution de la requete.if(!$resultat){ $message = 'Requete invalide:'.mysql_error() . "\n"; $message = 'Requete effectuee:'.$requete; die($message);}if (isset($_POST["Envoyer"]));{ $nomsociete = isset($_POST["nomsociete"]) ? stripslashes($_POST["nomsociete"]) : NULL; $nomgerant = isset($_POST["nomgerant"]) ? stripslashes($_POST["nomgerant"]) : NULL; $prenomgerant = isset($_POST["prenomgerant"]) ? stripslashes($_POST["prenomgerant"]) : NULL; $adressegerant = isset($_POST["adressegerant"]) ? stripslashes($_POST["adressegerant"]) : NULL; $villegerant = isset($_POST["villegerant"]) ? stripslashes($_POST["villegerant"]) : NULL; $telgerant = isset($_POST["telgerant"]) ? stripslashes($_POST["telgerant"]) : NULL; $mailgerant = isset($_POST["mailgerant"]) ? stripslashes($_POST["mailgerant"]) : NULL; $siretgerant = isset($_POST["siretgerant"]) ? stripslashes($_POST["siretgerant"]) : NULL; $resumegerant = isset($_POST["resumegerant"]) ? stripslashes($_POST["resumegerant"]) : NULL; if (!empty($nomsociete)&& !empty($nomgerant)&& !empty($prenomgerant)&& !empty($adressegerant)&& !empty($villegerant) && !empty($telgerant) && !empty ($mailgerant)&& !empty ($siretgerant) && !empty ($resumegerant)) {// tous les champs sont remplis, on peut donc inserer dans la base de donnee. $nomsociete = mysql_real_escape_string($nomsociete, $connexion); $nomgerant = mysql_real_escape_string($nomgerant, $connexion); $prenomgerant = mysql_real_escape_string($prenomgerant, $connexion); $adressegerant = mysql_real_escape_string($adressegerant, $connexion); $villegerant = mysql_real_escape_string($villegerant, $connexion); $telgerant = mysql_real_escape_string($telgerant, $connexion); $mailgerant = mysql_real_escape_string($mailgerant, $connexion); $siretgerant = mysql_real_escape_string($siretgerant, $connexion); $resumegerant = mysql_real_escape_string($resumegerant, $connexion);//requete permettant d'inserer nouvelle requetes. $requete = "insert into formulaire (nomsociete,nomgerant,prenomgerant,adressegerant,villegerant,telgerant,mailgerant,siretgerant,resumegerant) values ($nomsociete,$nomgerant,$prenomgerant,$adressegerant,$villegerant,$telgerant,$mailgerant,$siretgerant,$resumegerant)";//execution de la requete. $resultat = mysql_query ($requete,$connexion);//verification de l'execution. if (! $resultat) { $message = ' requete invalide: '.mysql_error (). "\n"; $message .= 'requete effectue: ' .$requete ; die ($message); } } elseif(empty($nomsociete)) { // $nomsociete n'a pas été entré ou est vide echo 'nom de la société est vide. <br/>'; } elseif(empty($nomgerant)) { // $nomgerant n'a pas été entré ou est vide echo 'nom du gérant est vide. <br/>'; } elseif(empty($prenomgerant)) { // $prenomgerant n'a pas été entré ou est vide echo 'prénom du gérant est vide. <br/>'; } elseif(empty($adressegerant)) { // $prenom n'a pas été entré ou est vide echo 'nom du gérant est vide. <br/>'; } elseif(empty($villegerant)) { // $villegerant n'a pas été entré ou est vide echo 'la ville est vide. <br/>'; } elseif(empty($telgerant)) { // $telgerant n'a pas été entré ou est vide echo 'téléphone est vide. <br/>'; } elseif(empty($mailgerant)) { // $mailgerant n'a pas été entré ou est vide echo 'mail est vide. <br/>'; } elseif(empty($siretgerant)) { // $siretgerant n'a pas été entré ou est vide echo 'numéro de siret est vide. <br/>'; }}// Au final, fermeture de la base de donnéemysql_close($connexion);?> Cordialement, Jp. Modifié 27 Juillet 2012 par Ernestine Merci d'utiliser les balises CODE quand vous insérez du code.
Ernestine Posté 27 Juillet 2012 Posté 27 Juillet 2012 Tout d'abord, merci d'utiliser les balises CODE pour insérer des lignes de code (j'ai dû modifier ton message). A vue d'oeil, ton $_POST["nomsociete"] est vide, tout simplement. Merci de nous donner le code du formulaire car c'est sûrement là qu'est le problème
jpdel13 Posté 27 Juillet 2012 Auteur Posté 27 Juillet 2012 (modifié) merci pour cette reponse voici donc le code formulaire. code: <html><head><body><p align="center"><font size="5"><FORM method = "post" action = "formulaire.php"></FORM><p align="center"><font size="+3">Enregistrer votre entreprise (Gerant) </font></p><p align="center"></p><TABLE BORDER=0><TR> <TD width="350">Nom de votre sociétée</TD> <TD width="900"> <INPUT name="nomsociete" type="text" size="50"> </TD></TR><TR> <TD width="350">Nom</TD> <TD width="900"> <INPUT name="Nomgerant" type=text size="50"> </TD></TR><TR> <TD width="350">Prenom</TD> <TD width="900"> <INPUT type=text name="prenom" size="50"> </TD></TR><TR> <TD width="350">Adresse</TD> <TD width="900"> <INPUT name="Adresse" type=text size="50"> </TD></TR><TR> <td width="150">Ville</td> <td width="700"> <input name="Ville" type="text" size="50" /> </td><TR> <td width="150"> Téléphone </td> <td width="700"> <input name="Téléphone" type="text" size="50" /> </td></TR><TR> <TD width="350">Adresse Mail</TD> <TD width="900"> <INPUT name="Adresse Mail" type=text size="50"> </TD></TR><tr> <td width="150"> Numero de siret </td> <td width="700"> <input name="Numéro de siret" type="text" size="50" /> </td><TR> <TD>Commentaires</TD> <TD> <TEXTAREA name="commentaires" cols="50" rows="5"> </TEXTAREA> </TD></TR><TR> <TD COLSPAN=2> <form method ="post" action = "formulaire.php"> <p align="center"><INPUT type="submit" name ="submit" value="Envoyer"></p> </TD></TR></TABLE></FORM> <p align="center"><font face="Verdana, Geneva, sans-serif" size="3"><a href="index.html"> RETOUR </a></html></head></body> merci encore Modifié 27 Juillet 2012 par jpdel13
jpdel13 Posté 27 Juillet 2012 Auteur Posté 27 Juillet 2012 merci mais ca ne change rien. code que je viens de changer: <TR> <TD width="350">Nom de votre sociétée</TD> <TD width="900"> <form> <INPUT name="nomsociete" type="text" size="50"> </form> </TD></TR>
Ernestine Posté 28 Juillet 2012 Posté 28 Juillet 2012 Je pense que tu n'as pas bien saisi les bases du formulaire Un formulaire est délimité par deux balises : une balise ouvrante <form> et une balise fermante </form>. Et c'est à l'intérieur de ces deux balises que doivent se trouver les <input>. Donc cette ligne : <FORM method = "post" action = "formulaire.php"></FORM> est absurde. Quant à ceci : <form method ="post" action = "formulaire.php"> <p align="center"><INPUT type="submit" name ="submit" value="Envoyer"></p> </TD></TR></TABLE></FORM> C'est encore pire : tu ouvres un nouveau formulaire en plein milieu d'une cellule de tableau pour le refermer après le tableau et en plus il ne contient que le submit... En l'état, ce code est inutilisable. Si j'étais toi je repartirais de zéro : essaie de construire un simple petit formulaire, avec un seul champ, et le faire marcher. Ensuite tu pourras t'attaquer à plus complexe.
jpdel13 Posté 28 Juillet 2012 Auteur Posté 28 Juillet 2012 OK je vais essayer de revoir le probleme, merci pour tes conseils mais je dis quand meme a bientot . Merci, Jp
jpdel13 Posté 30 Juillet 2012 Auteur Posté 30 Juillet 2012 (modifié) Modifié 30 Juillet 2012 par jpdel13
Ernestine Posté 30 Juillet 2012 Posté 30 Juillet 2012 En regardant à nouveau ton code, je vois que tu as tout mis dans le HEAD, c'est même pire, tu as carrément imbriqué le BODY dans le HEAD !!! Et tu as tout un tas de paragraphes ouverts et non fermés... Ton balisage est anarchique, on veut bien t'aider, mais il y a quand même un minimum syndical : si tu ne maîtrises pas les règles élémentaires du balisage html, cette discussion risque de s'étaler sur des dizaines et des dizaines de pages, car tu devras revenir au moindre problème. Je te conseille la lecture de ce tutoriel : http://www.siteduzero.com/tutoriel-3-13666-apprenez-a-creer-votre-site-web-avec-html5-et-css3.html Tu y trouveras notamment un chapitre sur les formulaires
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant