rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

Comment eviter des donnees duplique/PHPSQL ?

squid3570, le mardi 18 décembre 2007 à 12:00:09
Bonjour,

Je suis nouven en dev!
J ai un site d inscription qui fonctionne tres bien !
il utilise PHP/MYSQL.Mon problem est que les meme donnees peuvent etre enregistree sans message d erreur!!
Par exemple si "alexandre " a ete deja enregistre,il n y a pas de message d error pour un nouveau enregistrement " alexandre".
Quelqu un peut il m aider ? Voici mon code:


<?php
$con = mysql_connect("localhost","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("identity", $con);
$name=mysql_real_escape_string($_POST['name']);
$email=mysql_real_escape_string($_POST['email']);
$sql="INSERT INTO form_data (name,email) VALUES ('$name','$email')";

name and email are the respective table fields*/
if (!mysql_query($sql,$con)) {
die('Error: ' . mysql_error());
}
echo "The form data was successfully added to your database.";
mysql_close($con);
?>
Configuration: Windows 2003 server/XP
Internet Explorer 7.0
Répondre à squid3570  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
le père, le mardi 18 décembre 2007 à 12:07:54
Bonjour

Et pourquoi y aurait-il un message d'erreur ? Si tu n'as pas imposé de contrainte particulière sur le champ 'nom', comme le déclarer 'primary', mysql n'a aucune raison de refuser.
C'est à toi de tester si un utilisateur existe déjà
Répondre à le père

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Polux31, le mardi 18 décembre 2007 à 12:13:05
bonjour,

Fait un test pour voir si le nom et l'adresse mail ne sont pas déjà dans ta base en faisant :
Select * from form_data where name = '$name' And email = '$email'

;o)

Polux
Répondre à Polux31

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
squid3570, le mardi 18 décembre 2007 à 13:14:03
Merci , je vais essayer .a bientot ,
Répondre à squid3570

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Polux31, le mardi 18 décembre 2007 à 13:19:47
de rien
Répondre à Polux31

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
squid3570, le mardi 18 décembre 2007 à 14:08:35
Voici le message d erreur :

Parse error: syntax error, unexpected T_STRING avec ce code :

<?php
$con = mysql_connect("localhost","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("identity", $con);
$name=mysql_real_escape_string($_POST['name']);
$email=mysql_real_escape_string($_POST['email']);
$sql="INSERT INTO form_data (name,email) VALUES ('$name','$email')";

if (!mysql_query($sql,$con)) {
die('Error: ' . mysql_error());
}
echo "The form data was successfully added to your database.";
Select * from form_data where name = '$name' And email = '$email'

mysql_close($con);
?>3 message(s) posté(s) depuis le mardi 18 décembre 2007
Répondre à squid3570

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
squid3570, le mardi 18 décembre 2007 à 13:38:34
Voici le message d erreur :

Parse error: syntax error, unexpected T_STRING avec ce code :

<?php
$con = mysql_connect("localhost","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("identity", $con);
$name=mysql_real_escape_string($_POST['name']);
$email=mysql_real_escape_string($_POST['email']);
$sql="INSERT INTO form_data (name,email) VALUES ('$name','$email')";

if (!mysql_query($sql,$con)) {
die('Error: ' . mysql_error());
}
echo "The form data was successfully added to your database.";
Select * from form_data where name = '$name' And email = '$email'

mysql_close($con);
?>
Répondre à squid3570

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Polux31, le mardi 18 décembre 2007 à 15:32:54
oulala .... ça fait bien longtemps que je n'ai pas fait de PHP, je n'ai plus la syntaxe en tête.

De mémoire mysql_query retourne un booléen (vrai ou faux) donc ce qu'il faut faire c'est faire la vérification avant de faire l'insert en testant le retour du recordset, du genre :

$sql="Select * from form_data where name = '$name' And email = '$email'"
if (mysql_query($sql,$con)=false){
$sql="INSERT INTO form_data (name,email) VALUES ('$name','$email')";
else
if (!mysql_query($sql,$con)) {
'message' ....
die('Error: ' . mysql_error());
}


Je fais ça de tête sans tester, à toi d'arranger ça, mais le principe est le suivant : je teste l'existance dans la base (Select * from form_data where name = '$name' And email = '$email') si je ne trouve pas alors je fais l'insert (INSERT INTO form_data (name,email) VALUES ('$name','$email')) sinon j'envoie un message d'avertissement à l'utilisateur ...
Répondre à Polux31

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
squid3570, le mardi 18 décembre 2007 à 15:52:14
Merci d avance !!


ok voici le message d erreur :

Fatal error: Can't use function return value in write context ligne 15

et le code :

<?php
$con = mysql_connect("localhost","root",""); //Replace with your actual MySQL DB Username and Password
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("identity", $con); //Replace with your MySQL DB Name
$name=mysql_real_escape_string($_POST['name']); //This value has to be the same as in the HTML form file
$email=mysql_real_escape_string($_POST['email']); //This value has to be the same as in the HTML form file

$sql="Select * from form_data where name = '$name' And email = '$email'";
if (mysql_query($sql,$con)=false){
$sql="INSERT INTO form_data (name,email) VALUES ('$name','$email')";
else
if (!mysql_query($sql,$con)) {
'message' ....
die('Error: ' . mysql_error());
}

echo "The form data was successfully added to your database.";
mysql_close($con);
?>
Répondre à squid3570

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 Polux31, le mardi 18 décembre 2007 à 18:33:23
lol .... si tu fais juste un copier/coller de mon code c'est sûr que ça ne peut pas marcher ... je te l'ai dit, je n'ai plus en tête la syntaxe de PHP que je ne pratique plus depuis longtemps maintenant ... je t'ai juste donné la marche à suivre, à toi de remettre ça dans la bonne syntaxe en cherchant dans tes cours ou sur le net ... ce n'est pas à moi de faire cette démarche

bon courage

;o)

Polux
Répondre à Polux31
Logiciels pertinents trouvés dans les téléchargements
Télécharger IsoBuster 2.4IsoBuster - IsoBuster est un outil de récupération de CD, DVD, HD-DVD et BD prenant en charge tous les formats et tous leurs système de...Catégorie: Gravure
Licence: Freeware/gratuit
Télécharger Restoration 2.5.14Restoration - Restoration est un outil gratuit, en anglais seulement, permettant de récupérer les données effacées, même après avoir vidé...Catégorie: Sauvegarde
Licence: Freeware/gratuit
Télécharger WAMP Server 2.0cWAMP Server - WAMP5 (WAMP signifiant Windows Apache Mysql PHP) est une plateforme de développement Web sous Windows. Il vous permet de...Catégorie: Serveurs
Licence: Freeware/gratuit
Télécharger MySQL 5.0.67MySQL - MySQL est une des systèmes de gestion de bases de données le plus répandu au monde. Catégorie: Bases de données
Licence: Open Source
Plus de logiciels gratuits sur « Comment eviter des donnees duplique/PHPSQL ? »