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

Résolu/Fermé
Warryur Messages postés 97 Date d'inscription mardi 3 novembre 2009 Statut Membre Dernière intervention 28 mai 2011 - 23 avril 2011 à 22:03
Warryur Messages postés 97 Date d'inscription mardi 3 novembre 2009 Statut Membre Dernière intervention 28 mai 2011 - 24 avril 2011 à 18:22
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
}
?>



2 réponses

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
Warryur Messages postés 97 Date d'inscription mardi 3 novembre 2009 Statut Membre Dernière intervention 28 mai 2011 1
23 avril 2011 à 22:16
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
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
Warryur Messages postés 97 Date d'inscription mardi 3 novembre 2009 Statut Membre Dernière intervention 28 mai 2011 1
Modifié par Warryur le 24/04/2011 à 17:09
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
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
Warryur Messages postés 97 Date d'inscription mardi 3 novembre 2009 Statut Membre Dernière intervention 28 mai 2011 1
24 avril 2011 à 18:22
Ça fonctionne à merveille ;D
Merci !
0