[PHP/SQL] Ce nom existe-t-il déjà ?
Résolu
Warryur
Messages postés
97
Date d'inscription
Statut
Membre
Dernière intervention
-
Warryur Messages postés 97 Date d'inscription Statut Membre Dernière intervention -
Warryur Messages postés 97 Date d'inscription Statut Membre Dernière intervention -
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
}
?>
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
}
?>
A voir également:
- [PHP/SQL] Ce nom existe-t-il déjà ?
- Il existe une ou plusieurs références circulaires ✓ - Forum Excel
- Nom de l'adresse - Forum Réseaux sociaux
- Téléchargez cette image pour trouver le nom du fichier. il correspond au nom de cette loutre. comment s'appelle-t-elle ? - Forum HTML
- Gmail.fr existe ✓ - Forum Gmail
- Nom sonnerie iphone - Forum iPhone
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
}
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
}
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)
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)
Je pense pas faire comme il faut...
J'ai une erreur avec ce code (Warning: mysql_num_rows() expects parameter 1 to be resource, string given)
<?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)
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.
$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.
if(empty($nom) OR empty($points))
{
echo '<font color="red">Erreur : Vous n\'avez pas rempli tous les champs !</font>';
}
?
Merci :)