Comparaison variable-champ mysql

Fermé
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 - 29 déc. 2009 à 21:23
 le père - 31 déc. 2009 à 08:18
Bonjour,

Je voudrais comparer une variable récupérer par un script à un champ d'une base mysql.

J'ai essayé ceci mais ça ne fonctionne pô !!!!

$fichier = $_POST['fichier'];

$sql = "SELECT nom FROM photos WHERE idph = $id";    
mysql_query($sql) or die('Erreur SQL !'.$req_fich.mysql_error());

if ($fichier == $nom)
	$fichier == $fichier02;


En fait, si $fichier existe en tant que $nom (dans la base), je renomme $fichier en $fichier02 .....
Comment corriger l'erreur ????

Merci

3 réponses

Bonjour
Bonjour

Je peux me tromper, mais j'ai l'impression que tu crois que la variable $nom est créée par ta requête.
C'est faux.
L'appel à ta requête (mysql_query) te rend une ressource, mais dans ton programme tu n'affectes cette ressource à aucune variable et donc le résultat de la requête est perdu.
Tu aurais dû écrire
$resultat =mysql_query($sql) or die('Erreur SQL !'.$req_fich.mysql_error());
ensuite, tu extrais une ligne du résultat (à supposer qu'il y en ait) avec mysql_fetch_array() ce qui te donne un tableau associatif dont les éléments ont pour clés les noms des champs
$ligne=mysql_fetch_array($resultat);
enfin, tu accèdes au champ que tu veux
$nom=$ligne['nom']; (ou $machin=$ligne['nom'], le nom de la variable n'est pas du tout obligé d'être celui du champ)
D'autre part, pour mettre '02' à la fin du nom de fichier, il ne faut pas écrire $ligne02 (ce qui fait référence à la variable $ligne02 qui n'existe pas) mais il faut concaténer la chaîne '02' au bout de ta variable avec un point :
$fichier = $fichier .'02'; ou plus simplement
$fichier.='02';
2
RE,

Ben j'y arrive pô .... :((

Voilà ce que j'ai écrit :

$sql = "SELECT nom FROM photos WHERE idph = '$id' ";    
$resultat =mysql_query($sql) or die('Erreur SQL !'.$req_fich.mysql_error());
$ligne=mysql_fetch_array($resultat); 				
$nom=$ligne['nom']; 

if ($fichier = $nom)
	$fichier = $fichier .'02';						


Et si j'upload deux fichiers avec le même nom, il ne m'en upload qu'un, et il m'inscrit les deux dans la base avec le même nom ....
0
Salut
pour qu'on puisse t'aider, tu devras préalablement dire d'où vient le contenu de $nom et corriger ton affectation erronée $fichier == $fichier02; qui en fait est un test (==)
:D
0
Bonjour fiu et merci de répondre,

$nom provient de la base mysql. C'est, en fait, le nom d'une image.
$fichier est le nom d'une nouvelle image que je veux inscrire dans la base. Mais avant, je veux vérifier si le nom existe déjà. Si il existe, je rajoute (par exemple) 02 à la fin de ce nom pour le différencier du premier ($fichier = $fichier02) !
0
Tu devrais vraiment commencer par apprendre les bases avant de venir demander aux autres de réfléchir à tes problèmes
fiu t'a dit plus haut que la comparaison c'était == et toi tu fais comme test if ($fichier = $nom) avec un seul =
À quoi à servi la réponse de fiu ?
Il faut distinguer la comparaison de l'affectation, les deux opérations n'ont rien à voir

D'ailleurs j'ai l'impression que le principe même du programme n'est pas logique. Tu veux éviter que deux images aient le même nom, mais tu fais ton where sur idph = '$id', je ne sais pas ce que sont ce champ et cette variable, j'aurais fait le Where sur le nom à ta place. De plus tu ne testes que le premier fichier rencontré parmi les résultats, il y en a peut-être plusieurs qui ont le même idph ?
Quand tu chargeras 3 images 'toto', la première s'appellera 'toto', la seconde 'toto02' et la troisième ???
0