Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/09/2011, 16h53   #1
Nouveau Membre du Club
 
Inscription : décembre 2006
Messages : 151
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 151
Points : 37
Points : 37
Par défaut requête avec exclusion

salutatous(tes),

j'ai une table avec trois colonnes : id + login + ville

avant de modifier un login (par un update), je voudrais m'assurer que le nouveau login saisi n'existe pas déjà pour un autre id.

pour cela j'ai essayer ce type de requête mais sans résultat :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
 
$sql = 'SELECT count(*) FROM ma_table WHERE login = "'.addslashes($_POST['login']).'" AND id != "'.$id.'"';
 
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($req);
 
if ($data[0] == 0) {
	$message = '<br /><font color="red"><strong>COMPTE MIS A JOUR</strong></font><br /><br />';
 
} else {
	$message = '<br /><font color="red"><strong>UN AUTRE COMPTE POSSÈDE CE LOGIN !</strong></font><br /><br />';
}
 
?>
CAS 1 OK
si je saisi un login existant et que je fait un echo sur $data[0] :
>>> ça m'indique 1, et donc que le compte existe déjà

CAS 2 OK
si je saisi un login qui n'existe pas et que je fait un echo sur $data[0] :
>>> ça m'indique 0, et donc que le compte est mis à jour

CAS 3 PAS OK
si je laisse le login tel quel mais que je modifie juste le champ "ville" et que je fait un echo sur $data[0] :
>>> ça m'indique 1, et donc que le compte existe déjà !!! MAIS c'est là où il y a un problème... car ça veut dire que je ne peux pas modifier d'autres champs liés à ce compte !

j'ai également essayé avec des parenthèses, comme ceci, mais ça va pas non plus :

Code :
$sql = 'SELECT count(*) FROM ma_table WHERE (login = "'.addslashes($_POST['login']).'") AND (id != "'.$id.'")';
merci de vos lumières...
nicomax34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 16h58   #2
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
Bonjour,

Eventuellement avec mysql_num_rows() :

Code :
1
2
3
4
5
6
7
8
9
10
$sql = 'SELECT id FROM ma_table WHERE login = "'.mysql_real_escape_string($_POST['login']).'" AND id != "'.$id.'"';
 
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
 
if ( mysql_num_rows($req) == 0 ) {
// libre
}
else {
// existant
}
Utiliser plutôt mysql_real_escape_string que addslashes()
__________________
Le savoir est utile que s'il est partagé par tous.
/(bb|[^b]{2})/
!sleep() ? array((string))
syl2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 17h15   #3
Nouveau Membre du Club
 
Inscription : décembre 2006
Messages : 151
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 151
Points : 37
Points : 37
bonjour,

ça me donne les mêmes résultats
cas 1 ok
cas 2 ok
cas 3 pas ok
nicomax34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 18h40   #4
Nouveau Membre du Club
 
Inscription : décembre 2006
Messages : 151
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 151
Points : 37
Points : 37
ça y est ça marche

en fait ton code fonctionne parfaitement contrairement à ce que j'avais fait et
j'avais en plus un souci de passage de variable que j'ai réglé

A+ et merci encore
nicomax34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h34.


 
 
 
 
Partenaires

Hébergement Web