Contrôle d'un nom déjà dans la base

Répondre
jackbocar
le 01/10/2010 à 17:48
jackbocar
Bonjour

Comment réaliser une requête MySql qui contrôle les entrées afin d'éviter les doublons ?

J'en ai une prise sur « les comment faire un espace membre », il y a un contrôle du nom ou pseudo, cette requête peut-elle être utilisée pour les doublons de nom dans n'importe quel cas ?

Ou, avez-vous une requête plus adaptée à un contrôle de nom ?

Merci de votre aide

Jack Bocar
moogli
le 01/10/2010 à 18:06
moogli
salut,

pas de méthode miracle nom plus il faut savoir si le mot exact existe déja.

tu peut essayer de prendre en compte les différences de casse (la recherche est case sensitive il me semble), tu peut aussi penser au différente orthographe (mauvaise ou pas) pour cela essai sondex (regarde dans la doc de mysql).

@+
Il en faut peu pour être heureux !!!!!
jackbocar
le 01/10/2010 à 18:26
jackbocar
Bonjour,

Merci de ta réponse, je suis allez voir la fonction SOUNDEX sur MYSQL String Functions, cette fonction concerne SELECT pour une recherche select soundex("hello"), soundex("jello")

ou set s1 = substring(soundex(n1),l1,1);

Moi, je recherche une requête qui évite les doublons à l'enregistrement des données.

Merci tout de même pour ta réponse.

Jack Bocar
LA GLOBULE
le 01/10/2010 à 23:59
LA GLOBULE
MySQL est insensible à la casse pour une recherche sur un champ de type varchar.

jackbocar : il te faut quoi qu'il arrive tester que ton élément n'existe pas déjà en base, donc tu devras faire un select.
jackbocar
le 02/10/2010 à 12:02
jackbocar
Bonjour,

Je suis d'accord avec toi pour le select avant l'enregistrement des données.

Voici mon code, il fait bien les contrôles, par contre, quelques fois, il n'enregistre pas les données

<?php
$hostname = 'localhost';
$username = 'XXXXX';
$password = 'XXXXX';


try {
$dbh = new PDO("mysql:host=$hostname;dbname=XXXXX", $username, $password);
echo 'Connected to database<br />';

if (isset($_POST['enregistrement']) && $_POST['enregistrement'] == 'Enregistrement') {

if ((isset($_POST['Domus']) && !empty($_POST['Domus'])) && (isset($_POST['Diocesis']) && !empty($_POST['Diocesis']))) {

$sql = "SELECT count(*) FROM maisons_dioceses WHERE domus='".$_POST['Domus']."' AND diocesis='".$_POST['Diocesis']."'";
$stmt = $dbh->query($sql);
$data = $stmt->fetch(PDO::FETCH_NUM);

if ($data[0] == 0) {
$sql = ('INSERT INTO maisons_dioceses VALUES("", "'.addslashes($_POST['Domus']).'", "'.$_POST['Diocesis'].'", "'.addslashes($_POST['Maison_Francaise']).'", "'.addslashes($_POST['Diocese_Francais']).'")');
$dbh->exec($sql);
header('Location: index.php');
exit();
}
else {
$erreur = 'Le couple <span class="R">DOMUS ET DIOCESIS</span> existe deja dans la table.<br /><br />';
}
}
}
$dbh = null;
}
catch(PDOException $e)
{
echo $e->getMessage();
}
?>

<form name="formulaire" method="post" action="add_domus.php">
<table width="100%" cellspacing="0" border="0" cellpadding="0">
<tr>
<td>Domus</td>
<td><input type="text" id="Domus" name="Domus" size="80" maxlength="150" /></td>
</tr>
<tr>
<td>Diocesis</td>
<td><input type="text" id="Diocesis" name="Diocesis" size="80" maxlength="150" /></td>
</tr>
<tr>
<td>Maison</td>
<td><input type="text" id="Maison_Francaise" name="Maison_Francaise" size="80" maxlength="150" /></td>
</tr>
<tr>
<td>Diocèse</td>
<td><input type="text" id="Diocese_Francais" name="Diocese_Francais" size="80" maxlength="150" /></td>
</tr>
<tr>
<td>Enregistrer</td>
<td>
<input type="submit" name="enregistrement" value="Enregistrement">
</td>
</tr>
</table>
</form>
<?php
if (isset($erreur)) echo '<br />',$erreur;
?>
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours