2 pièce(s) jointe(s)
Requête UPDATE depuis un formulaire
Bonjour à tous et bonnes fêtes de fin d'année
j'ai un probleme quand je lance une requete UPDATE depuis mon formulaire. Voila le texte qui s'affiche :
"problème avec la requète UPDATE inscr SET inscr_nomprenom='PALISSON ALAIN', inscr_adresse='13 rue isabey', inscr_codepostal='54425', inscr_ville='NANCY',inscr_naissance='28/06/1947',inscr_mail='alain@gmail.com',inscr_mp='474875' WHERE inscr_num=73;"
Tous les champs sont au format texte dans ma table MYSQL ainsi que dans mon formulaire
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| if(isset($_POST["nomprenom"]))
{
$le_nomprenom = addslashes($_POST["nomprenom"]);
$l_adresse = addslashes($_POST["adresse"]);
$le_codepostal = addslashes($_POST["codepostal"]);
$la_ville = addslashes($_POST["ville"]);
$la_naissance = $_POST["date_n"];
$le_mail = $_POST["mail_inscr"];
$le_mp = addslashes($_POST["mp_inscr"]);
$requete = "UPDATE inscr SET inscr_nomprenom='".$le_nomprenom."', inscr_adresse='".$l_adresse."', inscr_codepostal='".$le_codepostal."',
inscr_ville='".$la_ville."',inscr_naissance='".$la_naissance."',inscr_mail='".$le_mail."',inscr_mp='".$le_mp."' WHERE inscr_num=".$_SESSION["utilisateur"].";";
$retours = mysqli_query($liaison, $requete) or die ("problème avec la requète ".$requete);
$modif = mysqli_affected_rows($liaison);
} |
et mon formulaire:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| <div id="message" style="width: 620px; height: 36px;"></div>
<form id="compte" name="compte" method="post" action="compte.php">
<table id="compte" name="compte" method="post" action="compte.php" style="width: 120%;margin-left:20px;" text-align="center">
<tr>
<td style="width: 350px; height: 5px;"><strong>Nom et prénom de l'adhérent</strong></td>
<td class="input" style="height: 5px">
<input type="text" name="nomprenom" id="nomprenom" maxlength="50" class="input_form" value='<?php echo $le_nomprenom; ?>' onClick="saisie('Nom et prénom de l'adhérent',this.id)"
onMouseOut="retablir('Nom et prénom de l'adhérent',this.id)" onblur="mev('Nom et prénom de l adhérent',this.id)" onChange="javascript:this.value=this.value.toUpperCase();etat();" style="height: 25px" />
</td>
</tr>
<tr>
<td style="width: 350px; height: 5px;"><strong>Adresse</strong></td>
<td class="input" style="height: 5px">
<input type="text" name="adresse" id="adresse" maxlength="100" class="input_form" value='<?php echo $l_adresse; ?>' onClick="saisie('Votre adresse',this.id)"
onMouseOut="retablir('Votre adresse',this.id)" onblur="mev('Votre adresse',this.id)" onChange="etat();" style="height: 25px" />
</td>
</tr>
<tr>
<td style="width: 350px; height: 5px;"><strong>Code postal</strong></td>
<td class="input" style="height: 5px">
<input type="text" name="codepostal" id="codepostal" maxlength="5" class="input_form" value='<?php echo $le_codepostal; ?>' onClick="saisie('Votre code postal',this.id)"
onMouseOut="retablir('Votre code postal',this.id)" onblur="mev('Votre code postal',this.id)" onChange="etat();" style="height: 25px" />
</td>
</tr>
<tr>
<td style="width: 350px; height: 5px;"><strong>Ville<strong></td>
<td class="input" style="height: 5px">
<input type="text" name="ville" id="ville" maxlength="50" class="input_form" value='<?php echo $la_ville; ?>' onClick="saisie('Votre ville',this.id)"
onMouseOut="retablir('Votre ville',this.id)" onblur="mev('Votre ville',this.id)" onChange="javascript:this.value=this.value.toUpperCase(); etat();" style="height: 25px" />
</td>
</tr>
<tr>
<td style="width: 350px; height: 5px;"><strong>Date naissance (Ex: 28/01/2000)</strong></td>
<td class="input" style="height: 5px">
<input type="text" name="date_n" id="date_n" maxlength="10" class="input_form" value='<?php echo $la_naissance; ?>' onClick="saisie('date de naissance',this.id)"
onMouseOut="retablir('date de naissance',this.id)" onblur="mev('date de naissance',this.id)" onChange="etat();" style="height: 25px" />
</td>
</tr>
<tr>
<td style="width: 350px; height: 5px;"><strong>L'Email</strong></td>
<td class="input" style="height: 5px">
<input type="text" name="mail_inscr" id="mail" maxlength="50" class="input_form" value='<?php echo $le_mail; ?>' onClick="saisie('Votre mail',this.id)"
onMouseOut="retablir('Votre mail',this.id)" onblur="mev('Votre mail',this.id)" onChange="etat();" style="height: 25px" />
</td>
</tr>
<tr>
<td style="width: 350px; height: 5px;"><strong>Nouveau mot de passe si besoin</strong></td>
<td class="input" style="height: 5px">
<input type="password" name="mp_inscr" id="mp_inscr" maxlength="10" class="input_form" value="<?php echo $le_mp; ?>" onClick="saisie('Nouveau MP',this.id)" onChange="etat();"
onMouseOut="retablir('Nouveau MP',this.id)" onblur="mev('Nouveaur MP',this.id)" style="height: 25px" />
</td>
</tr>
</table> |
voila ma table MYSQL
Pièce jointe 631312
Pièce jointe 631314
merci pour votre aide
Pour en finir avec le varchar systématique...
Je ne sais pas si la faute en incombe aux écoles d'informatique, mais je constate que de plus en plus souvent, les développeurs utilisent systématiquement du varchar, là ou du char fixe serait requis.
Par exemple, le code postal, en France c'est toujours 5 caractères.
Donc utiliser du caractère variable a non seulement aucun intérêt, mais en plus il présente les inconvénients inhérents au varchar
- octets supplémentaires (1 à 3 selon le SGBD et la longueur maximale de la donnée)
- nécessité d'alignement des données sur une longueur fixe avant certaines opérations (order by, distinct, group by, partition by)
- déplacement des lignes dans les pages data et index en cas de modification de la longueur effective (ce qui ne sera pas le cas ici, puisque c'est toujours 5 caractères). Ce déplacement prend du temps et provoque une fragmentation des pages au détriment des performances bien sûr
Bref, ce n'est pas pour rien qu'il existe deux types, le char fixe et le varchar.
Il ne faut pas choisir le varchar systématiquement, mais le type adapté au contenu.
D'une façon générale, du varchar sur une donnée très courte (10 ou 20 caractères) n'a guère d'intérêt.
Par ailleurs, le sexe en varchar(6) serait avantageusement remplacé soit par un char(1) associé à une contrainte CHECK avec une liste de valeurs, soit par une FK faisant référence à une table des codes sexes.
Egalement, une ville en varchar(28) c'est insuffisant, certaines villes nécessitent une longueur plus grande. La norme de la poste prévoit 38 caractères.
Bien évidemment, j'abonde dans le sens de ce qui précède concernant les dates : toute date doit être stockée dans un type date !