Eviter les doublons dans la bdd
Fermé
jobouille
Messages postés
286
Date d'inscription
jeudi 11 juin 2009
Statut
Membre
Dernière intervention
27 septembre 2017
-
31 juil. 2015 à 00:19
jobouille Messages postés 286 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 27 septembre 2017 - 2 août 2015 à 12:59
jobouille Messages postés 286 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 27 septembre 2017 - 2 août 2015 à 12:59
A voir également:
- Eviter les doublons dans la bdd
- Supprimer les doublons excel - Guide
- Marques smartphone à éviter - Accueil - Guide téléphones
- Éviter pub youtube - Accueil - Streaming
- Doublons photos - Guide
- Supprimer les doublons photos gratuit - Télécharger - Nettoyage
2 réponses
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 718
31 juil. 2015 à 01:08
31 juil. 2015 à 01:08
Bonsoir,
A la place d'un INSERT tu peux utiliser un REPLACE.
Penses également à définir le couple "pseudo, pseudoAmi" comme clé unique.
Au passage... voici ton code corrigé et quelque peu amélioré.
A la place d'un INSERT tu peux utiliser un REPLACE.
Penses également à définir le couple "pseudo, pseudoAmi" comme clé unique.
ALTER TABLE amis ADD UNIQUE `unique_index`(pseudo, pseudoAmi);
Au passage... voici ton code corrigé et quelque peu amélioré.
// Récupéaration Propre des variables AVANT de les utiliser $pseudo = !empty($_GET['pseudo'])?$_GET['pseudo'] : NULL; if($pseudo) { $pseudoAmi = htmlspecialchars($pseudo); $sql = "SELECT * FROM membres WHERE pseudo = :pseudo" ; $params = array(":pseudo"=>$pseudo); try{ $reqpseudo = $bdd->prepare($sql); $reqpseudo->execute($params); $resultat = $reqpseudo->fetchall(); }catch(Exception $e) { echo "<pre><br>".$e->getMessage()."<br>"; echo "</pre>"; exit; } if(count($resultat)>0){ //Ce pseudo existe dans la BDD $sql = "REPLACE INTO amis(pseudo, pseudoAmi) VALUES(:userPseudo, :pseudoAmi)"; $params = array(":userPseudo"=>$user['pseudo'], ":pseudoAmi"=>$pseudoAmi); try{ $insertAmi = $bdd->prepare($sql); $insertAmi->execute($params); }catch(Exception $e) { echo "<pre><br>".$e->getMessage()."<br>"; echo "</pre>"; exit; } $_SESSION['error'] = $pseudoAmi." a été ajouté dans votre liste d'amis !"; header('Location: amis.php'); exit; }else{ //Le pseudo n'existe pas $_SESSION['error'] = "Le pseudo n'existe pas"; header('Location:amis.php'); exit; } } // Fin if($pseudo)
jisisv
Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
934
31 juil. 2015 à 01:16
31 juil. 2015 à 01:16
Au nivaeu de ta base de données, elle deviendra rapidement ingérable (quid du changement de pseudo par exemple).
Je te conseille de créer au minimum deux tables:
Lors de l'ajout d'un lien d'amitié, c'est cette seconde table qui contiendra un nouveau t-uple. La première table ne contiendra que les informations personnelles des membres
Je te conseille de créer au minimum deux tables:
- la première membres(id, pseudo, e-mail...)
- la seconde amis (id_membre, id_ami...) contiendra les relations d'amitié
Lors de l'ajout d'un lien d'amitié, c'est cette seconde table qui contiendra un nouveau t-uple. La première table ne contiendra que les informations personnelles des membres
jobouille
Messages postés
286
Date d'inscription
jeudi 11 juin 2009
Statut
Membre
Dernière intervention
27 septembre 2017
10
31 juil. 2015 à 14:38
31 juil. 2015 à 14:38
Il est effectivement plus logique de faire ainsi. Cependant il est impossible aux membres du site de changer leur pseudo.
Pour le moment je laisse comme ça, mais je garde en tête votre solution, merci :)
Pour le moment je laisse comme ça, mais je garde en tête votre solution, merci :)
31 juil. 2015 à 14:40
Je tenais juste à vous féliciter car la plupart du temps, c'est vous qui répondez aux problèmes php et de manière brillante :)
Enfin, serait-il possible de rajouter un peu de code qui signale si on a déjà cette personne comme ami ?
Encore merci :)
Modifié par jordane45 le 31/07/2015 à 16:52
Il te suffit de faire un SELECT sur ta table avant l'ajout .... et si la requête retourne un résultat.. afficher qq chose.
1 août 2015 à 23:41
C'est toujours écrit "$pseudoAmi a été ajouté dans votre liste d'amis !"
2 août 2015 à 00:20
2 août 2015 à 12:59
Merci beaucoup ! :D