[PHP-MYSQL] Ecriture dans une DB
Résolu
erathia65660
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
Autumn`Tears Messages postés 1054 Date d'inscription Statut Membre Dernière intervention -
Autumn`Tears Messages postés 1054 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un problème sur la partie d'un script qui permet l'écriture dans une base de données d'information contenues dans un formulaire.
Voici le script php:
Voici le code SQL de la DB:
Et voici le formulaire HTML:
L'erreur est que sa n'écrit rien, et que le message d'erreur contenu dans la variable $err est
J'ai un problème sur la partie d'un script qui permet l'écriture dans une base de données d'information contenues dans un formulaire.
Voici le script php:
if(isset($_GET['auteur'])) { // Si le formulaire d'enregistrement d'auteur a été soumis $err = array(); if(!$_POST['nom'] || !$_POST['prenom'] || !$_POST['ville'] || !$_POST['ddn']) $err[] = 'Tout les champs doivent être remplis!'; if(preg_match('^[a-z]*$',$_POST['nom'])) { $err[]="Votre nom contient des caratères invalides!"; } if(preg_match('^[a-z]*$',$_POST['prenom'])) { $err[]="Votre prénom contient des caratères invalides!"; } if(preg_match('^[a-z]*$',$_POST['ville'])) { $err[]="Votre ville contient des caratères invalides!"; } if(preg_match('^[0-9]{2}[/]{1}[0-9]{2}[/]{1}[0-9]{4}$',$_POST['ddn'])) { $err[]='Votre date de naissance est invalide!'; } if(!count($err)) { // S'il n'y a aucune erreur // $_POST['exemple'] = mysql_real_escape_string($_POST['exemple']); // Sécurisattion des inputs mysql_query(" INSERT INTO auteurs(usr,nom,prenom,ville,ddn) VALUES( '".$_SESSION['usr']."' '".$_POST['nom']."', '".$_POST['prenom']."', '".$_POST['ville']."', '".$_POST['ddn']."' )"); if(mysql_affected_rows($link)==1) { send_mail( 'no-reply@neoedition.com', //Envoit du mail avec le Mot de Passe $_SESSION['email'], 'Système de notifications - Votre compte auteur', $_POST['prenom'] . ' ' . $_POST['nom'] . ', votre compte auteur est désormais actif!'); $_SESSION['msg']['auteur-success']='Un mail vous a été envoyé!'; } else $err[]="Vous avez déja un compte auteur existant"; } if(count($err)) { $_SESSION['msg']['auteur-err'] = implode('<br />',$err); } header("Location: index.php?page=auteur"); exit; }
Voici le code SQL de la DB:
CREATE TABLE IF NOT EXISTS 'auteurs' ( 'id' int(11) NOT NULL AUTO_INCREMENT, 'usr' varchar(32) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '', 'nom' varchar(32) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '', 'prenom' varchar(32) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '', 'ville' varchar(32) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '', 'ddn' varchar(32) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '', 'style' int(2) NOT NULL DEFAULT '13', PRIMARY KEY ('id'), UNIQUE KEY 'usr' ('usr') ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
Et voici le formulaire HTML:
<form id="form" action="/?auteur" method="post"> <?php if($_SESSION['msg']['auteur-err']) { echo '<div class="err">'.$_SESSION['msg']['auteur-err'].'</div>'; unset($_SESSION['msg']['auteur-err']); } if($_SESSION['msg']['auteur-success']) { echo '<div class="success">'.$_SESSION['msg']['auteur-success'].'</div>'; unset($_SESSION['msg']['auteur-success']); } ?> <label class="grey" for="nom"><h2>Nom:</h2></label> </br> <input class="field" type="text" name="nom" id="nom" value="" size="23" /> </br></br> <label class="grey" for="prenom"><h2>Prénom:</h2></label> </br> <input class="field" type="text" name="prenom" id="prenom" value="" size="23" /> </br></br> <label class="grey" for="ville"><h2>Ville:</h2></label> </br> <input class="field" type="text" name="ville" id="ville" value="" size="23" /> </br></br> <label class="grey" for="ddn"><h2>Date de naissance (format JJ/MM/AAAA):</h2></label> </br> <input class="field" type="text" name="ddn" id="ddn" value="" size="10" /> </br></br> <label><input name="cgu" id="cgu" type="checkbox" checked="unchecked" /> Accepter les <a href="/display/?cgu" target="_blank">condition générales d'utilisation</a></label> </br></br> <div class="clear"></div> <input type="submit" name="submit" value="Valider" /> </form>
L'erreur est que sa n'écrit rien, et que le message d'erreur contenu dans la variable $err est
Vous avez déja un compte auteur existant
A voir également:
- [PHP-MYSQL] Ecriture dans une DB
- Écriture facebook - Guide
- Ecriture en gras - Guide
- Ecriture instagram - Guide
- Easy php - Télécharger - Divers Web & Internet
- Écriture à l'envers miroir - Guide
2 réponses
Salut,
Essaie comme ça :
$req = mysql_query(" INSERT INTO auteurs(usr,nom,prenom,ville,ddn)
VALUES(
'".$_SESSION['usr']."'
'".$_POST['nom']."',
'".$_POST['prenom']."',
'".$_POST['ville']."',
'".$_POST['ddn']."'
)");
if(mysql_affected_rows($req)==1)
Essaie comme ça :
$req = mysql_query(" INSERT INTO auteurs(usr,nom,prenom,ville,ddn)
VALUES(
'".$_SESSION['usr']."'
'".$_POST['nom']."',
'".$_POST['prenom']."',
'".$_POST['ville']."',
'".$_POST['ddn']."'
)");
if(mysql_affected_rows($req)==1)
erathia65660
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
Merci adrien, j'avait pas pensé a exploiter ma requête de cette manière, sa marche.
Autumn`Tears
Messages postés
1054
Date d'inscription
Statut
Membre
Dernière intervention
145
Impec alors, de rien ! ;)
Bonjour,
c'est votre code? Bizarre que vous ne sachiez pas ce qu'il fait.
Le problème que vous indiquez n'est pas un problème de requête SQL(langage de base de données) mais de validation de formulaire.
Pour la requête vous pouvez tester directement sur la base (depuis la console phpmyadmin si vous utilisez wamp), afficher l'erreur lors de l'envoi de la requête par php(or die( mysql_error()) ) et afficher cette requête avant son envoi pour voir si elle est correctement écrite.
c'est votre code? Bizarre que vous ne sachiez pas ce qu'il fait.
Le problème que vous indiquez n'est pas un problème de requête SQL(langage de base de données) mais de validation de formulaire.
Pour la requête vous pouvez tester directement sur la base (depuis la console phpmyadmin si vous utilisez wamp), afficher l'erreur lors de l'envoi de la requête par php(or die( mysql_error()) ) et afficher cette requête avant son envoi pour voir si elle est correctement écrite.
Justement, la requête est bonne, mais j'ai dut faire une erreur de syntaxe quelque part et vue que je suis novice, je pensait que quelqu'un allait voir l'erreur, dommage...
Le formulaire est transmis et mon if(isset($_GET[auteur])) me le confirme,
Le problème vient surement de mon if(mysql_affected_rows($link)==1)
ps:
$link = mysql_connect($db_host,$db_user,$db_pass) or die('Impossible d'/interagir avec la DB');
Le formulaire est transmis et mon if(isset($_GET[auteur])) me le confirme,
Le problème vient surement de mon if(mysql_affected_rows($link)==1)
ps:
$link = mysql_connect($db_host,$db_user,$db_pass) or die('Impossible d'/interagir avec la DB');