Aller au contenu

Sujets conseillés

Posté (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é par pomme28
Posté

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', ...);

Posté (modifié)

Merci beaucoup ! je ne parle pas couramment php... Je prends cette piste...

Cordialement,

Pomme28

Modifié par pomme28
Posté

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 ?

Posté

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...

Posté

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 "," :)

Posté

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...

Posté

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....
Posté
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

Posté

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

Posté

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.

Posté

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

Posté

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

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...