[RESOLU] Verification doublon BDD

Eléphant du PHP | 184 Messages

26 août 2012, 08:23

Bonjour à vous,

J'essaye lors de l'upload d'une image, de vérifier si cette dernière n'existe pas déjà à l'aide de son chemin d'accès.
J'ai fait ceci:
  $req = "SELECT * FROM images_news"; 
  $rep = mysql_query($req);
  
  while ($result = mysql_fetch_array($rep)){
	  
  $count = $result['url_image'];
  

  
  if ('images/news/images/'.'$nFile' == $count){
	  
	  echo "Erreur !";
  }
  }
Sachant que j'ai fait une erreur, je ne stocke pas le nom de l'image dans ma bdd mais le chemin d'accès, du coup je compare les chemins.

$nfile correspond à l'image seule, à laquelle je rajoute le chemin fixe pour le comparer à $count, qui lui renvoie le chemin complet ( fixe + nom image ).

Le soucis, c'est que dans mon cas, $count ne renvoie qu'un seul enregistrement, le premier dans mon dossier image et ma comparaison ne marche pas :(

Merci à vous si vous pouvez m'aider à corriger.

Eléphant du PHP | 229 Messages

26 août 2012, 09:56

Bonjour,
Ajoute dans le select
where url_image='xxxx'
Et tu obtients tout de suite ce que tu cheches.

Bon codage.

Eléphant du PHP | 184 Messages

26 août 2012, 10:50

Merci pour la réponse, j'ai corrigé mais cela ne fonctionne toujours pas.

L'upload passe et le message d'erreur ne s'affiche pas.

J'ai fait cela:
  $req = "SELECT * FROM images_news WHERE url_image = 'images/news/images/$nFile'"; 
  $rep = mysql_query($req);
  
  while ($result = mysql_fetch_array($rep)){
	  
  $count = $result['url_image'];
  
  if ('images/news/images/$nFile' == $count){
	  
	  echo "Erreur !";
  }
  }

Eléphant du PHP | 229 Messages

26 août 2012, 11:04

J'utilise PDO, pour éviter les fautes, je le présente avec PDO,
ça donnerai ca :
$cnx=nex PDO($dsn,$user,$pass);

 $sql0 = "SELECT * FROM images_news WHERE url_image = 'images/news/images/$nFile'";
  $sql1->query($sql0);

$result=$sql1->fetchAll();
$nombre=count($result);

if ($nombre!=0){echo "erreur";}
J'ai pas testé, mais en théorie ca doit marcher. Bon codage.

Eléphant du PHP | 267 Messages

26 août 2012, 11:13

salut,

il ne faut pas mettre les variables PHP à l'intérieur des chaînes de caractères délimitées par des simples côtes car les variables ne seront pas interprétées
au lieu de :
if ('images/news/images/'.'$nFile' == $count){
il faut écrire :
if ('images/news/images/'.$nFile == $count){

@+
dix2

Eléphant du PHP | 267 Messages

26 août 2012, 11:17

J'utilise PDO, pour éviter les fautes, je le présente avec PDO,
ça donnerai ca :
$cnx=nex PDO($dsn,$user,$pass);

 $sql0 = "SELECT * FROM images_news WHERE url_image = 'images/news/images/$nFile'";
  $sql1->query($sql0);

$result=$sql1->fetchAll();
$nombre=count($result);

if ($nombre!=0){echo "erreur";}
J'ai pas testé, mais en théorie ca doit marcher. Bon codage.
il y a 1 coquille à la 1ere ligne, c'est "new PDO"

Eléphant du PHP | 184 Messages

26 août 2012, 12:17

Bonjour, en fait j'aimerai le faire sans PDO car j'ai fait tout mon travail autrement.

J'ai essayé en mettant bien les ' et les . mais c'est toujours pareil.

Il ne m'affiche pas le message d'erreur et l'image passe sans problème.

Eléphant du PHP | 184 Messages

26 août 2012, 12:49

Fausse alerte, c'était finalement une erreur de variable, manquait une lettre.

Avec votre méthode tout à marché nickel, merci encore à vous !

Eléphant du PHP | 229 Messages

26 août 2012, 16:05

$cnx=new PDO($dsn,$user,$pass);

 $sql0 = "SELECT * FROM images_news WHERE url_image = 'images/news/images/".$nFile."'";
  $sql1->query($sql0);

$result=$sql1->fetchAll();
$nombre=count($result);

if ($nombre!=0){echo "erreur";}
Corrigé!