8791 sujets

Développement web côté serveur, CMS

Bonjour,

J'ais un seul répertoire qui reçoit des photos par FTP
pour celui qui gere cela, j'ais fait un outil PHP / MYSQL
qui ajoute simplement les nouvelles photos. dans une table MYSQL

La premiére fois tout allait bien puisque rien n'existait
dans la table, donc j'avais écris mon PHP comme ceci
tout était en ajout,



<?php
//============lire le repertoire============

$data = glob('photos/*.jpg'); 
$LesFichiers = array();
$i = 0;
foreach( $data as $filename)
  { if (is_file($filename) )
  { $LesFichiers[$i] = $filename; $i=$i+1; }
 }

//============generer dans table============

  $Flag1=mysql_connect($Serveur,$User,$Mdp)
         OR die('Erreur');
  $Flag2=mysql_select_db($MaBase)
         OR die('Erreur');
  $Active_O_N="O";  $Categorie="reportage";
  $Nature0="reportage";
  for ($a=0;$a<$i;$a++)
   {

    $LeCheminNom=$LesFichiers[$a];

    $requete = "INSERT INTO lvimg_photo SET
    Active_O_N='$Active_O_N',LeCheminNom='$LeCheminNom',
    Categorie='$Categorie', Nature0='$Nature0',
    if (!mysql_query($requete ))
     { die('Error: ' . mysql_error()); }
   }
  mysql_close();
?>




mais maintenant, il faudrait
controler si l'image est déjas dans la table MYSQL avant ajout et je ne vois pas quelle syntaxe pour faire cela !

Help et merci d'avance 8O
Modifié par FoxLeRenard (28 Mar 2009 - 00:40)
UPDATE lvimg_photo SET 
      Active_O_N='$Active_O_N', 
      LeCheminNom='$LeCheminNom',
      Categorie='$Categorie',
      Nature0='$Nature0' 
WHERE id = '$id'
Salut,

comme mysql est bien sympa il permet de repérer une clef en double lors de l'INSERT (à priori tu as une clef unique sur LeCheminNom ?) et de faire par exemple :
Insert into ... ON DUPLICATE KEY Update ...


Edit: après relecture de ta question je me demande si je n'ai pas répondu à côté de la plaque car comme il s'agit de photos tu risques de te retrouver avec 2 images différentes mais portant le même nom. Du coup il n'existe pas de façon automatique pour savoir si une photo est déjà présente dans la base et il faut faire le ménage manuellement. Dans ce cas une solution consiste à générer soi-même le nom (en concaténant par exemple un n° incrémental au début du nom -qui peut par exemple correspondre à l'id-).
Modifié par Heyoan (27 Mar 2009 - 20:43)
Mille mmercis a Benj et Heyoan
Oui j'avoues il faut donc préciser des points ... mais déjas vos réponses m'éclairent !




$Active_O_N="O"; // est un flag a O mais peut étre mis a N
$LeCheminNom="photo/xxx.jpg"; // == oui bien vu c' est la clé unique
$Categorie="sport" ; //==== pas une clé, mais une donnée simple
$Nature0="xxxxx" ;   // ==== dito




Donc voila le probléme c' est sans doute la version de Heyoan
qui va aller Smiley eek enfin je crois, car voila,


mon generateur vous l'avez vu force une categorie et une nature ...
ça évite de les remùplir a la main,

mais si j'ais dejas rentré les photos "famille"

quand je vais faire les photos "theatre" il va reparcourir le répertoire et voir les photos pas encore enregistrées, donc "theatre" la tout va bien
mais il va reparcourir les photos marquées hier par exemple "familles" et je ne veux pas bien sur qu'il remplace pour celles-ci "famille" par "theatre"

Pfffffff ... j'sais pas si c' est clair mon explication Smiley confused

PS: aucune photo n'a le même non Smiley biggrin
Modifié par FoxLeRenard (27 Mar 2009 - 20:44)
oups, j'avais pas tous compris.

Dans ta boucle for, avant de faire l'insert, tu pourrais faire un select count(*) where LeCheminNom='$LeCheminNom' pour vérifier si il existe un enregistrement.

a écrit :
PS: aucune photo n'a le même non
Dans ton cas, c'est en effet indispensable.
benj a écrit :
oups, j'avais pas tous compris.
Dans ta boucle for, avant de faire l'insert, tu pourrais faire un select count(*) where LeCheminNom='$LeCheminNom' pour vérifier si il existe un enregistrement.
PS: aucune photo n'a le même non
Dans ton cas, c'est en effet indispensable.

Ah mais voila !! je ne savais pas que dans une boucle on pouvait faire deux requétes, Pffffff Smiley confused
Mais alors c'est tout simple ce truc ... Smiley biggrin

Encore merci a vous deux