pomme28 Posté 27 Juin 2005 Posté 27 Juin 2005 (modifié) Bonjour à la communauté, J'ai un formulaire qui contient les champs : civilite (select), prenom (input type text), nom (input type text). Ces valeurs doivent être enregistrées dans le champ "Identite" de la base de données MySql. Qui saurait m'aider ou me mettre sur la piste pour concaténer ces valeurs ? D'avance merci Modifié 27 Juin 2005 par pomme28
MarvinLeRouge Posté 27 Juin 2005 Posté 27 Juin 2005 Salut, La concaténation de chaîne de caractères. Donc, si tu récupères tes champs de formulaire dans les variables $civilite, $prenom et $nom, ça donnerait une requète du genre $identite = $civilite . " " . $prenom . " " . $nom;$sql = "insert into matable (identite, ...) values ('$identite', ...);
pomme28 Posté 27 Juin 2005 Auteur Posté 27 Juin 2005 (modifié) Merci beaucoup ! je ne parle pas couramment php... Je prends cette piste... Cordialement, Pomme28 Modifié 27 Juin 2005 par pomme28
enroc Posté 27 Juin 2005 Posté 27 Juin 2005 Salut, ce sont des chaînes de caractères, il faut donc utiliser la méthodes adéquoite. $a = "première chaîne";$b = "deuxième chaîne";$ab = $a.$b; echo "ab = " . $ab . "<br>";$ab2 = $a." ".$b; echo "ab2 = " . $ab2 . "<br>";$identite = $_POST["civilite"] . " " . $_POST["nom"]; Ca répond bien à la question ?
pomme28 Posté 27 Juin 2005 Auteur Posté 27 Juin 2005 Merci enroc, je vais essayer cette option certainement avec des pincettes... Si ça me saute au nez... Je plaisante, mais la syntaxe me fiche le trac... Je m'y colle. Bravo et merci pour la réactivité, j'espère pouvoir aider à mon tour...
Compte supprimé Posté 27 Juin 2005 Posté 27 Juin 2005 et autant prendre tout de suite les bonnes manières (plus rapide): $identite = $civilite.' '.$prenom.' '.$nom;
enroc Posté 28 Juin 2005 Posté 28 Juin 2005 J'ajouterai encore que lorque l'on fait un formulaire post, les variables "courtes" ne sont pas forcément automatiquement créées, d'où l'utilisation de la variable $_POST["nomDeLaVariable"]. _AT_skitour : je ne savais pas qu'on pouvait aussi concaténer des chaînes avec des ","
martin Posté 28 Juin 2005 Posté 28 Juin 2005 maintenant si on se pose des questions sur le format de la base de données, il serait peut être plus judicieux de stocker ces différentes informations dans des champs différents. Pour une modification ultérieure par exemple, si tu veux réafficher dans trois champs différents il faudra que tu découpe ta chaine unique avec un risque d'erreur, et une opération de concaténation/découpage devenue inutile. Le problème se posera ausi pour un tri pour connaitre le nombre d'homme ou de femme...
pomme28 Posté 28 Juin 2005 Auteur Posté 28 Juin 2005 Bonjour, Oui, tout à fait d'accord. La base initiale en ligne est réalisée comme tu le préconises et les champs du formulaire en regard. Mais dans ce cas précis, la demande est faite pour récupérer les données selon le schéma d'une base Sygma exploitée par un service d'abonnements. Le but de cette manoeuvre est de proposer ce formulaire de demande de numéros gratuits d'un magazine (4 n°s) et de transmettres les données dans l'ordre du schéma. Alors, voici ce que j'ai commencé à faire, mais ça coince quelque part : //dans fichier "zconnexionLaVie.php"//dans fichier "zconnexionLaVie.php"//$serveur = "localhost";//$login = "root";//$pwd ="monpass";//$bdd = "mabase";//$conn=mysql_connect($serveur,$login,$pwd) or die("Connexion MySQL Impossible");//mysql_select_db($bdd) or die("Base de donnÈes inaccessible.");//fin fichier include<? include "zconnexionLaVie.php";if ($conn) {$volet1 = $civilite. " " $prenom. " " $nom;$sql_demande_abonnement = "INSERT INTO ad10 values ('".addslashes($site_titre)."','".addslashes($provenance)."','"addslashes($code_mouvement)."','".addslashes($montant)."','".addslashes($duree)."','".addslashes($volet1)."','".addslashes($volet2)."', '".addslashes($volet3)."','".addslashes($volet4)."','".addslashes($volet5)."','".addslashes($codepostal)."','".addslashes($ville)."','".addslashes($tel)."')";$result = mysql_query($sql_demande_abonnement) or die ("Impossible d'enregistrer votre demande.");mysql_close($conn);}if (!$volet1 || !$codepostal || !$ville){echo "vous devez renseigner tous les champs obligatoires.<br>"."retournez a la page precedente et reessayez.";exit;}?> <html> <head> <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1"> <title>Recevoir 4 numéros gratuits</title> </head> <body bgcolor="#ffffff"> <p>Formulaire de saisie</p> <p> </p> <form action="lavie_abonnement4.php" method="post" name="formul"> <input type="hidden" name="site_titre" value="MP02"><input type="hidden" name="provenance" value="5G01"><input type="hidden" name="code_mouvement" value="INS"><input type="hidden" name="montant" value="0"><input type="hidden" name="duree" value="4"><br> <INPUT type="hidden" id="civilite" name="civilite" value="<? echo $civilite; ?>"> <SELECT name="civilite" id="civilite"> <OPTION value="Mme">Mme</OPTION> <OPTION value="Mlle">Mlle</OPTION> <OPTION value="M">M</OPTION> <OPTION value="MMme">MMme</OPTION> </select> Nom : <input type="text" name="nom" value="<? echo $nom; ?>" size="24"> Prénom : <input type="text" name="prenom" value="<? echo $prenom; ?>" size="24"> <br> N°Apt., ent., étage :<input type="text" name="volet2" value="<? echo $volet2; ?>" size="24"> rés., bât. : <input type="text" name="volet3" value="<? echo $volet3; ?>" size="24"><br> Voie, rue, Bd : <input type="text" name="volet4" value="<? echo $volet4; ?>" size="24"><br> Complément d'adresse : <input type="text" name="volet5" value="<? echo $volet5; ?>" size="24"> <br> <br> Code postal : <input type="text" name="codepostal" value="<? echo $codepostal; ?>" size="6"> Bureau distributeur, ville : <input type="text" name="ville" value="<? echo $ville; ?>" size="24"> <p>Téléphone : <input type="text" name="tel" value="<? echo $tel; ?>" size="11" maxlength="10" ></p> <div align="center"><p><input type="submit" name="soumettre" id="soumettre" value="Valider" ><input type="reset"></p> </div> </form> </body></html> Encore merci, Corinne paumier PS. Pour ce qui est du $identite = $_POST["civilite"] . " " . $_POST["nom"]; , j'ai encore le trac....
gaofi Posté 28 Juin 2005 Posté 28 Juin 2005 Bonjour à la communauté, J'ai un formulaire qui contient les champs : civilite (select), prenom (input type text), nom (input type text). Ces valeurs doivent être enregistrées dans le champ "Identite" de la base de données MySql. Qui saurait m'aider ou me mettre sur la piste pour concaténer ces valeurs ? D'avance merci <{POST_SNAPBACK}> Alors en deux mots : 1. stocke les données dans des champs séparés (insert into matable values (civilite, nom, prenom) values ('$quoted_civilité','$quoted_nom','quoted_prenom') ; ajoute un index unique sur (civilite,nom,prenom) 2. retrouve identité avec la requête : select CONCAT(civilite," ",prenom,' ',nom) as identite from matable et voila le travail : pas de perte d'information, et une belle identité toute jolie ++ Gael
pomme28 Posté 28 Juin 2005 Auteur Posté 28 Juin 2005 Merci, mais j'ai une question qui va paraître aussi sotte que grenue... Pourquoi écrire : ('$quoted_civilité','$quoted_nom','quoted_prenom'); ? Merci, je retourne à mon ouvrage... Cordialement, Corinne
Anonymus Posté 28 Juin 2005 Posté 28 Juin 2005 parce qu'il fait une opération sur les chaines, consistant à mettre un slash devant les guillemets. Imagines par exemple ton script avec le nom O'Hara, et tu verras que ca ne marche pas. Pourquoi ? Simplement parce que c'est un nom composé (entre autre) d'un quote, qui fera bugger ta base. Pour info, ca te rajoute une ligne (pour chaque valeur) : $quoted_nom = addslashes($nom); etc.. Anonymus.
gaofi Posté 28 Juin 2005 Posté 28 Juin 2005 il y a une function spéciale pour quoter mysql. : mysql_real_escape_string par ailleurs, il faut savoir : 1. qu'un dispositif de quote automatique peut être activé avec php (magic_quote_gpc), auquel cas, il n'est pas bon de quoter à nouveau 2. qu'il faut penser à déquoter avant d'afficher (stripslashes) Gael
pomme28 Posté 29 Juin 2005 Auteur Posté 29 Juin 2005 Encore merci, ça éclaire ma lanterne... Je ne vais peut-être pas sortir un beau formulaire tout fini avec les contrôles de saisies aujourd'hui, mais vous me permettez d'avancer mon chmilblik... Cordialement à tous Corinne
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant