Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1145 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [php/sql] Vérifier si une entrée à insérer existe déjà dans la base

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[php/sql] Vérifier si une entrée à insérer existe déjà dans la base

n°1100336
pouzy
Ne signe pas d'autographes..
Posté le 28-05-2005 à 14:34:27  profilanswer
 

Bonjour à tous !  
J'ai un petit script avec deux champs : un "mot1" et un "mot2"
 
J'ai fait un formulaire pour que les visiteurs puissent envoyer "mot1" et "mot2" via $_POST['mot1'] et $_POST['mot2']
 
Maintenant, j'ai un problème :
 
Comment puis-je faire pour savoir si le mot1 entré est déjà dans la base ? ( pas besoin de savoir pour le mot2, il peut y avoir des duplicatas, ce n'est pa^s un problème ) mais pour le mot1 c'est important :)
 
Merci !


---------------
Hello hello super jello
mood
Publicité
Posté le 28-05-2005 à 14:34:27  profilanswer
 

n°1100344
plainsofpa​in
Pingouino's lover
Posté le 28-05-2005 à 14:54:50  profilanswer
 

ben un select ou le champ ou tu mets mot1 est égal à mot1.
 
Mais juste pour info, t'es dans la rubrique php, c'est un problème sql que tu as :D

n°1100365
pouzy
Ne signe pas d'autographes..
Posté le 28-05-2005 à 15:17:59  profilanswer
 

Pas forcément problème SQL c'est couplé à du PHP :)
Merci pour ta réponse, mais j'ai déjà essayé ..  
 
J'ai essayé ceci aussi :  
 

Code :
  1. $res = mysql_query ($req, $idConnexion);
  2.   $nb = mysql_num_row ($res);
  3.  
  4.   if($nb != 0)


 
En faisant une requete de select ou mot1 = $_POST['mot1'] mais il n'y a pas de réaction du script, les données sont quand même entrées :/
 
Quelqu'un a une idée ? :)
 
Merci


---------------
Hello hello super jello
n°1100380
yoyo354
Yoyo, le roi du ...
Posté le 28-05-2005 à 15:28:36  profilanswer
 

Montre nous la requête et le résultat de celle-ci.

n°1100390
GaSPaRD77
Posté le 28-05-2005 à 15:38:24  profilanswer
 

Bah dans ta table, tu mets ton champs contenant 'mot1' en unique

n°1100391
Berceker U​nited
PSN : berceker_united
Posté le 28-05-2005 à 15:39:49  profilanswer
 

Je vois pas d'autre moyen de faire une requete identique à ce que tu veux insérer.

n°1100422
pouzy
Ne signe pas d'autographes..
Posté le 28-05-2005 à 16:10:22  profilanswer
 

yoyo354 a écrit :

Montre nous la requête et le résultat de celle-ci.


 
 

Code :
  1. $req = "SELECT sms FROM aido_traduc WHERE sms = ".$_POST['MotSMS'];
  2.   $res = mysql_query ($req, $idConnexion);
  3.   $nb = mysql_num_row ($res);


 
Bin je ne connais pas son résultat, j'ai l'impression qu'il n'y a rien qui se passe .. Je vous C/C toute la partie du code en question :  
 

Code :
  1. if ($_POST['MotSMS'] && $_POST['MotFra'])
  2. {
  3.   $req = "SELECT sms FROM aido_traduc WHERE sms = ".$_POST['MotSMS'];
  4.   $res = mysql_query ($req, $idConnexion);
  5.   $nb = mysql_num_row ($res);
  6.  
  7.   if($nb != 0)
  8.   {
  9.   echo 'Le mot que vous avez entré est déjà présent dans la base de données !';
  10.   }
  11.  
  12.   else {
  13. $sms = AddSlashes (htmlspecialchars($_POST['MotSMS']));
  14. $fra = AddSlashes (htmlspecialchars($_POST['MotFra']));
  15.  
  16.   $requete = "INSERT INTO aido_traduc (id,sms,fra,actif) VALUES ('','$sms','$fra',0)";
  17. $result = mysql_query ($requete, $idConnexion);
  18.  if (!$result)
  19.    {
  20.     echo "<div align=\"center\">Erreur lors de l'envoi. Veuillez réitérer. Le mot proposé est peut-être déjà présent dans notre base de données.</div>";
  21.    }
  22.    else
  23.    {
  24.    echo '<div align="center"><br />Nous vous remercions de votre contribution à l\'amélioration du traducteur, votre mot sera vérifié par notre équipe et validé dans la journée<br /></div>';
  25.    }
  26.   }
  27. }


 
Vous pouvez voir ce que ça donne ici : http://www.aidoforum.com/traducteur-sms.php
 
Merci
 
GasPaRD77 : unique ou primaire ?


---------------
Hello hello super jello
n°1100423
Tentacle
Posté le 28-05-2005 à 16:11:22  profilanswer
 

Teste aussi le retour de mysql_query au cas où il y ait un problème de connexion ou que la requète est erronée (retour FALSE en cas d'échec).

n°1100428
pouzy
Ne signe pas d'autographes..
Posté le 28-05-2005 à 16:17:17  profilanswer
 

Tentacle : Comment ( je débute pas mal en Php :/ ) un echo ?
 
Comment faire un retour false ?  
 
Gaspard : Impossible de la mettre en unique, il me trouve des duplicate entry de partout .. Il doit prendre des bouts de mots , deux lettres, et voir que ces deux lettres sont présentes dans un autre mot, non ?


---------------
Hello hello super jello
n°1100444
Tentacle
Posté le 28-05-2005 à 16:47:05  profilanswer
 

oui ... en tout cas pour le moment :
du genre


if ($idConnexion = mysql_connect("server", "username", "password" ))
{
  if ($res = mysql_query($req, $idConnexion))
  {
    // Tes trucs à faire
  }  
  else
    echo mysql_error();
}
else
  echo mysql_error();


 
De toute façon ta méthode ne marchera pas dans tout les cas et il serait peut-être plus judicieux de trouver un moyen de déclarer ce champ comme unique. Ensuite après une insertion, tu peux utiliser mysql_affected_rows pour savoir si le mot a été inséré ou non (ce qui pourrait dire qu'il existait déjà)

mood
Publicité
Posté le 28-05-2005 à 16:47:05  profilanswer
 

n°1100447
pouzy
Ne signe pas d'autographes..
Posté le 28-05-2005 à 16:48:57  profilanswer
 

Le idConnexion est déjà vérifié dans un common.php :)  
 
C'est surtout la requête que je devrais vérifier non ?  
 
Erf, je me sens perdu la .. :/


---------------
Hello hello super jello
n°1100450
naceroth
Posté le 28-05-2005 à 16:50:17  profilanswer
 

pouzy a écrit :

Tentacle : Comment ( je débute pas mal en Php :/ ) un echo ?
 
Comment faire un retour false ?  
 
Gaspard : Impossible de la mettre en unique, il me trouve des duplicate entry de partout .. Il doit prendre des bouts de mots , deux lettres, et voir que ces deux lettres sont présentes dans un autre mot, non ?


 
Bah non, une unicité c'est une unicité sur tout le mot, pas juste sur une partie, t'imagine une clé numérique qui ne pourrait pas aller plus loin que 0..9 ? :D
 
Sinon, puisque ton champs a l'air d'être un mot, colle le entre ' dans la requête :)

n°1100451
Tentacle
Posté le 28-05-2005 à 16:51:32  profilanswer
 

oui alors au cas où.
 
Qu'est que tu as fais pour essayer la proposition de Gaspard ? Ca devrait fonction normalement. (il faut que les entrées soient identiques, et non juste des parties)

n°1100454
pouzy
Ne signe pas d'autographes..
Posté le 28-05-2005 à 16:54:32  profilanswer
 

Erf, je suis blamâble : faute de frappe ... j'avais oublié un "s" a mysql_num_rows .. Merci à tous, ça a l'air de fonctionner ;)


---------------
Hello hello super jello
n°1100523
GaSPaRD77
Posté le 28-05-2005 à 18:17:25  profilanswer
 

Tu aurais dû mettre unique à la creation de ta table, et comme ça tu aurais été sûr de ne pas avoir 2 fois la même entrée


Message édité par GaSPaRD77 le 28-05-2005 à 18:17:59

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [php/sql] Vérifier si une entrée à insérer existe déjà dans la base

 

Sujets relatifs
insérer une image en C++Inserer un tableau dans WORD sous PHP via objet COM
[postgre] copie d'une base[1/2autorésolu - boulzor]Probleme d'insertion dans ma base de données
[Mysql] Base de données trop grosse... [Résolu]Insérer un psd dans une page web, possible?
Insérer une date en php dans une BD mysqlimportation d'un fichier CSV dans une base oracle
Copy() php confirmer si fichier existe deja??Probleme de boucle et base de donnees
Plus de sujets relatifs à : [php/sql] Vérifier si une entrée à insérer existe déjà dans la base


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR