[PHP/SQL] Vérifier si la valeure saisie existe dans la base

Vérifier si la valeure saisie existe dans la base [PHP/SQL] - PHP - Programmation

Marsh Posté le 17-06-2009 à 12:05:39    

Bonjour,
Je débute. J'aurais besoin d'un petit coup de main de votre part.
 
J'expose mon problème.
 
Je voudrais inserer dans mon code la chose suivante.
Une fois que le formulaire est rempli à l'aide de mon code je transmet les informations à la base de donnée. Sauffe que je voudrais interdire de ecrire deux fois la meme chose dans la base . Je voudrais veriffier si le numéro de de tel existe deja et dans ce cas interdire la saisie et revenir au debut sur la page sur formulaire.
 
et une autre chose un peu plus compliquer: veriffier si sur une meme ligne le nom et le prénom sont identiques a ma saisie : reffuser la saisie et revenir au formulaire.
 
C'est peut etre trop vous demander mais je tente quand meme ma chance, je débute.
 
voici mon code:
 

Code :
  1. <?php
  2. header("Refresh: 3; URL=4.php" );
  3. // Parametres mysql
  4. define('DB_SERVER', 'localhost'); // serveur mysql
  5. define('DB_SERVER_USERNAME', 'root'); // nom d'utilisateur
  6. define('DB_SERVER_PASSWORD', ''); // mot de passe
  7. define('DB_DATABASE', 'nom_base'); // nom de la base
  8. // Connexion au serveur mysql
  9. $connect = mysql_connect(DB_SERVER, DB_SERVER_USERNAME,
  10. DB_SERVER_PASSWORD)
  11. or die('Impossible de se connecter : ' . mysql_error());
  12. // sélection de la base de données
  13. mysql_select_db(DB_DATABASE, $connect);
  14. $msg_erreur = "Erreur. Les champs suivants doivent être obligatoirement remplis :<br/><br/>";
  15. $msg_ok = "Votre demande est enregistrée. <br /><br />
  16.   Affichage de la base dans 3 secondes ...";
  17. $message = $msg_erreur;
  18. // vérification des champs  
  19. if (empty($_POST['nom'])) {
  20.  $message .= "Votre Nom<br/>";
  21. }else{
  22.  $nom = $_POST['nom'];
  23. }
  24.  
  25.  
  26. if (empty($_POST['prenom'])) {
  27.   $message .= "Votre Prenom<br/>";
  28.   }else{
  29.   $prenom = $_POST['prenom'];
  30.  }
  31. if (empty($_POST['tel'])) {
  32.   $message .= "Votre Telephone<br/>";
  33.   }else{
  34.   $tel = $_POST['tel'];
  35.   }
  36.  
  37.  
  38. // si un champ est vide, on affiche le message d'erreur  
  39. if (strlen($message) > strlen($msg_erreur)) {
  40.   echo $message;
  41. // sinon c'est ok  
  42. } else {
  43.   foreach($_POST as $index => $valeur) {
  44.     $index = mysql_real_escape_string(trim($valeur));
  45.   }
  46. $sql = "INSERT INTO nom_table(nom, prenom,tel)
  47.  VALUES ('$nom','$prenom', $tel)";
  48.   $res = mysql_query($sql);
  49.   if ($res) {
  50.     echo $msg_ok;
  51.   } else {
  52.     echo mysql_error();
  53.   }
  54. }
  55. ?>


---------------
~Feed-Back~ // ~Site Web~
Reply

Marsh Posté le 17-06-2009 à 12:05:39   

Reply

Marsh Posté le 17-06-2009 à 12:13:28    

Je ne suis pas tout à fait sur du script, mais il faut faire quelque chose dans ce genre, qui va compter le nombre d'occurences dans ta bdd où l'on retrouve les mêmes noms/prénoms ou le même numéro de téléphone :

 
Code :
  1. $res=mysql_query("SELECT COUNT (*) FROM nom_table WHERE tel='$tel' " );
  2. $nb=mysql_fetch_row($res);
  3. $res=mysql_query("SELECT COUNT (*) FROM nom_table WHERE prenom='$prenom' && nom='$nom' " );
  4. $nb2=mysql_fetch_row($res);
  5. if ($nb[0]==0 && $nb2[0]==0) {
  6. //ajouter l'insertion en base de donnée
  7. }
  8. else
  9. {
  10. //messages d'erreur
  11. }


Message édité par Yagmoth le 17-06-2009 à 12:14:28

---------------
L'ennemi est bête : il croit que c'est nous l'ennemi alors que c'est lui !
Reply

Marsh Posté le 17-06-2009 à 13:12:36    

1. J'aurais plutôt tendance à utiliser mysql_num_rows qui retourne le nombre d'enregistrements, plutôt que de faire un SELECT COUNT.
Si c'est nul, faire l'insertion, sinon envoyer le message d'erreur.
 
2. Pense à sécuriser les données envoyées par $_POST...
 
3. Tu inderdis à des homonymes de s'enregistrer  :??:  
Autant demander l'unicité le n° de tél, je veux bien, autant sur le nom+prénom...
 
[Edit]Même le numéro de tél, c'est douteux... Si Mr et Mme veulent s'inscrire tous les deux, comment on fait ?
 
 
4. A creuser :
- Dans ta base, tu définis le NUM_TEL comme unique et non nul.
- Dans le php, tu passes ta requête d'insertion.
- SI la requête est en erreur, tu récupères le numéro d'erreur et tu traites en fonction de l'erreur.


Message édité par macgawel le 17-06-2009 à 13:22:25
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed