[PHP/SQL] Ce nom existe-t-il déjà ?

Résolu
Warryur Messages postés 102 Statut Membre -  
Warryur Messages postés 102 Statut Membre -
Bonjour,
Je suis débutant en PHP/SQL et je travail actuellement sur un formulaire permettant d'ajouter quelque chose dans la base de donnée. Je souhaiterais savoir comment faire pour vérifier si le champ "nom" n'existe pas déjà.
Voici mon code :

<?php
// récupération des champs
if(isset($_POST['nom'])) $nom=$_POST['nom'];
else $nom="";

if(isset($_POST['points'])) $points=$_POST['points'];
else $prenom="";

// vérification des champs : vide ?
if(empty($nom) OR empty($points))
{
echo '<font color="red">Erreur : Vous n\'avez pas rempli tous les champs !</font>';
}

// aucun champ vide, exécution
else
{
// connexion
$db = mysql_connect('localhost', 'root', 'mdp') or die('Erreur de connexion '.mysql_error());
// sélection de la base

mysql_select_db('pointsrp',$db) or die('Erreur de selection '.mysql_error());

// requête sql
$sql = "INSERT INTO personnages(id, nom, points) VALUES('','$nom','$points')";

// insertion des données dans la DB
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

// succès
echo '<font color="green">Le personnage a été ajouté à la base avec succès !</font>';

mysql_close(); // close connexion
}
?>



--
WaRRyuR!
Tout le monde veut sauver la planète mais personne ne veut sortir les poubelles...Les papillotes ont du bon ;)

2 réponses

  1. le père
     
    Bonjour

    Pour voir si nom existe déjà, tu peux (entre autres possibilités) extraire de ta base les personnes ayant ce nom et compter le nombre de réponse avec la fonction mysql_num_rows
    $req="SELECT * FROM personnages WHERE nom='".mysql_real_escape_string($nom)."'";
    if (mysql_num_rows($req)==0) { // nom inconnu, on peut insérer
    ...
    } else { // nom déjà connu

    }
    0
    1. Warryur Messages postés 102 Statut Membre 1
       
      Où dois-je insérer cela puisque j'ai déjà :
      if(empty($nom) OR empty($points))
      {
      echo '<font color="red">Erreur : Vous n\'avez pas rempli tous les champs !</font>';
      }

      ?
      Merci :)
      0
  2. le père
     
    Les tests que tu as faits te permettent de savoir si les champs du formulaire ont été saisis ou non.
    Ceux que je te proposent servent à vérifier si le nom est déjà présent dans la base : ce n'est pas ce que tu voulais ?
    Il faut insérer le test après la sélection de la base (évidemment puisque je l'utilise)
    0
    1. Warryur Messages postés 102 Statut Membre 1
       
      Je pense pas faire comme il faut...
      <?php 
      // On commence par récupérer les champs 
      if(isset($_POST['nom']))      $nom=$_POST['nom']; 
      else      $nom=""; 
      
      if(isset($_POST['points']))      $points=$_POST['points']; 
      else      $prenom=""; 
      
      
      
       //$req="SELECT * FROM personnages WHERE nom='".mysql_real_escape_string($nom)."'"; 
      //if (mysql_num_rows($req)==0) {  
      
      
       // connexion à la base 
      $db = mysql_connect('localhost', 'root', 'MDP')  or die('Erreur de connexion '.mysql_error()); 
      // sélection de la base   
      
          mysql_select_db('pointsrp',$db)  or die('Erreur de selection '.mysql_error()); 
        
       $req="SELECT * FROM personnages WHERE nom='".mysql_real_escape_string($nom)."'"; 
      if (mysql_num_rows($req)==0) { // nom inconnu, on peut insérer 
      
       // on écrit la requête sql 
          $sql = "INSERT INTO personnages(id, nom, points) VALUES('','$nom','$points')"; 
           
          // on insère les informations du formulaire dans la table 
          mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
      
          // on affiche le résultat pour le visiteur 
          echo '<font color="green">Le personnage a été ajouté à la base avec succès !</font>'; 
        
        
      }  
           
          
      
      
      
      else {  
      echo 'existe deja'; 
      
      } 
        
      
      
      
             
      
          mysql_close();  // on ferme la connexion 
      
      ?> 


      J'ai une erreur avec ce code (Warning: mysql_num_rows() expects parameter 1 to be resource, string given)
      0
    2. le père
       
      Pardon, c'est moi qui ai écrit une bêtise. J'ai sauté une étape, puisque je n'ai même pas fait de mysql_query :

      $req="SELECT * FROM personnages WHERE nom='".mysql_real_escape_string($nom)."'";
      $reponse= mysql_query($req);
      if (mysql_num_rows($reponse)==0)

      Sinon, je pense que tu l'as mis au bon endroit.
      0
    3. Warryur Messages postés 102 Statut Membre 1
       
      Ça fonctionne à merveille ;D
      Merci !
      0