IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Vérification de l'inexistence d'un fichier dans ma table pour un script d'upload


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Points : 87
    Points
    87
    Par défaut Vérification de l'inexistence d'un fichier dans ma table pour un script d'upload
    -Bonjour, voila pour l'upload de mes fichiers joint, je réalise une requête qui permet théoriquement de voir si le nom de fichier du fichier a rajouté est déja utilisé dans la base, puisque quand j'ajoute un fichier il créer un enregistrement.

    Seulement il me lance tout le temps l'alerte "fichier existant"

    voila ma requête d'insertion de fichiers joints:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql3 = "INSERT INTO fichiersj (nomFichierj, numFiche) VALUES ( '".$dest_fichier."', '".$numfiche2."')"; 
    					    $result3 = mysql_query($sql3) or die ("Erreur d'Insertion dans la base : ". $sql3 .'<br />'. mysql_error())
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $numfiche2 = mysql_insert_id();
    et donc la requete de comparaison :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $sql4 = "SELECT nomFichierj FROM fichiersj WHERE nomFichierj = '".$dest_fichier."'"; 
    				$req4 = mysql_query($sql4) or die('Erreur SQL !<br>'.$sql4.'<br>'.mysql_error()); 
    				$data4 = mysql_fetch_array($req4);
    				if($data4['nomFichierj'] == $dest_fichier)
       					{
    Je ne trouve pas pourquoi , sinon sans cette requete le code fonctionne correctement.

    Si une infos vous manque voici le code complet:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    <?php
    if((isset($_FILES['fichiers'])) || (isset($_FILES['fichiers'])))
    	{
    	$dest_dossier = 'C:\wamp\www\rbdc\upload/';
    	function nomfichiers () 
    		{
    		$dest_fichier = strtr($dest_fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 			  		   				    	'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    		$dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier); 
    		}
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////	
    	if(isset($_FILES['fichiers'])) 
    		{ 
    		if($_FILES['fichiers']['size']>0)
    			{
    				$sql4 = "SELECT nomFichierj FROM fichiersj WHERE nomFichierj = '".$dest_fichier."'"; 
    				$req4 = mysql_query($sql4) or die('Erreur SQL !<br>'.$sql4.'<br>'.mysql_error()); 
    				$data4 = mysql_fetch_array($req4);
    				if($data4['nomFichierj'] == $dest_fichier)
       					{
    					echo '<script language=javascript> alert ("Le fichier \''.$dest_fichier.'\' existe déja");</script>'; 
    					echo '<SCRIPT LANGUAGE="JavaScript"> 
    					document.location.href="accueil.php" </SCRIPT>'; 
    					exit; 
       					}else{
    						$savefile = $dest_dossier.$_FILES['fichiers']['name']; 
    						$temp = $_FILES['fichiers']['tmp_name']; 
    						$dest_fichier = basename($_FILES['fichiers']['name']);  
    						nomfichiers ();     
    						move_uploaded_file($_FILES['fichiers']['tmp_name'], $dest_dossier . $dest_fichier);  
    						$sql3 = "INSERT INTO fichiersj (nomFichierj, numFiche) VALUES ( '".$dest_fichier."', '".$numfiche2."')"; 
    					    $result3 = mysql_query($sql3) or die ("Erreur d'Insertion dans la base : ". $sql3 .'<br />'. mysql_error()); 
    						if ($err = $_FILES['fichiers']['error'])
    							{
    							echo '<script language=javascript> 
    							alert ("Erreur d upload dans le fichier \''.$dest_fichier.'\'");</script>'; 
    							echo '<SCRIPT LANGUAGE="JavaScript"> 
    							document.location.href="accueil.php" </SCRIPT>'; 
    							exit;
    							} else {
    									echo '<script language=javascript> 
    									alert ("Fichier \''.$dest_fichier.'\' et Fiche n°\''.$numfiche2.'\' insérer correctement !");</script>'; 
    									echo '<SCRIPT LANGUAGE="JavaScript"> 
    									document.location.href="accueil.php" </SCRIPT>'; 
    									exit;
    									}
    						} 
    			}
    		}
    		}
    ?>
    merci d'avance

  2. #2
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2005
    Messages : 93
    Points : 87
    Points
    87
    Par défaut
    Ralàlà, pourquoi te tracasser avec celà alors que MySql peut faire ça tout seul? Tu n'y as sûrement pas pensé...

    Alors voilà ma proposition de solution: met ton champ "nomFichierj" en "unique" et lors d'insertion, si le nom existe déjà, l'insertion va échouer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $sql3 = "INSERT INTO fichiersj (nomFichierj, numFiche) VALUES ( '".$dest_fichier."', '".$numfiche2."')";
    $res3 = mysql_query($sql3);
     
    if(!$res3) {
      echo "Fichier déjà existant";
    }else{
      echo "upload ok";
    }

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Points : 87
    Points
    87
    Par défaut
    Bein c est dur dur kan on débute. jvai essayer ca
    ty

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Points : 87
    Points
    87
    Par défaut
    j ai donc mis en unique mais c est pas trés beau une erreur comme ca, et l'utilisateur ne sais meme pas la cause

    sinon j'ai rajouter:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if(isset($_FILES['fichiers'])) 
    		{ 
    		if($_FILES['fichiers']['size']>0)
    			{
    			if(!$result3)
       					{
    qui correspond à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql3 = "INSERT INTO fichiersj (nomFichierj, numFiche) VALUES ( '".$dest_fichier."', '".$numfiche2."')"; 
    					    $result3 = mysql_query($sql3) or die ("Erreur d'Insertion dans la base : ". $sql3 .'<br />'. mysql_error())
    mais ca marche pas je comprend pas ce résonnement d'ailleur.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Points : 87
    Points
    87
    Par défaut
    DOnc voila comment faire pour voir si le fichier à insérer est déja enregistrer dans la base avant meme de créer la nouvelle requete donc ?

  6. #6
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2005
    Messages : 93
    Points : 87
    Points
    87
    Par défaut
    Que veux-tu dire "c'est pas très beau" ? Tu peux mettre le message qeu tu veux...de la couleur que tu veux..et tout.

    Je comprend pas vraiment ton problème.

    Sinon si tu veux VRAIMENT savoir AVANT, il suffit de faire un select...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $sql = "SELECT COUNT(*) FROM fichiersj WHERE nomFichierj = '".$dest_fichier."'";
    $res = mysql_query($sql);
    if($res) {
      if(mysql_result($res, 0, 0) == 0) {
        echo "le fichier n'existe pas";
      }else{
        echo "le fichier existe";
      }
    }else{
      echo "Erreur sql: $sql";
    }

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Points : 87
    Points
    87
    Par défaut
    j'ai fait 1erreur ? car ca marche pas quand je reinsére 2 fois le meme fichier ca donne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Erreur d'Insertion dans la base : INSERT INTO fichiersj (nomFichierj, numFiche) VALUES ( 'saisieimg.jpg', '53')
    Duplicate entry 'saisieimg.jpg' for key 2
    je l'ai mis en unique c'est pour ca.

    voila le code modifier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    if(isset($_FILES['fichiers'])) 
    		{ 
    		if($_FILES['fichiers']['size']>0)
    			{
    			$sql = "SELECT COUNT(*) FROM fichiersj WHERE nomFichierj = '".$dest_fichier."'"; 
    			$res = mysql_query($sql); 
    			if($res) 
    				{
    				if(mysql_result($res, 0, 0) == 0)
    					{
    					$dest_fichier = basename($_FILES['fichiers']['name']);  
    					nomfichiers ();
    					move_uploaded_file($_FILES['fichiers']['tmp_name'], $dest_dossier . $dest_fichier);  
    					$sql3 = "INSERT INTO fichiersj (nomFichierj, numFiche) VALUES ( '".$dest_fichier."', '".$numfiche2."')"; 
    					$result3 = mysql_query($sql3) or die ("Erreur d'Insertion dans la base : ". $sql3 .'<br />'. mysql_error()); 
    					echo '<script language=javascript> 
    					alert ("Fichier \''.$dest_fichier.'\' et Fiche n°\''.$numfiche2.'\' insérer correctement !");</script>'; 
    					echo '<SCRIPT LANGUAGE="JavaScript"> 
    					document.location.href="accueil.php" </SCRIPT>'; 
    					exit; 
    					}else{
    						echo '<script language=javascript> 
    						alert ("Fichier \''.$dest_fichier.'\' existe déja! Renommer le fichier ou choisissez en un autre.");</script>'; 
    						echo '<SCRIPT LANGUAGE="JavaScript"> 
    						document.location.href="accueil.php" </SCRIPT>';
    				} 
    						 }else{
    							echo '<script language=javascript> 
    							alert ("Erreur sql sur le fichier \''.$dest_fichier.'\', \''.$sql.'\'  ");</script>'; 
    							echo '<SCRIPT LANGUAGE="JavaScript"> 
    							document.location.href="accueil.php" </SCRIPT>';
    							  }
    			 }
    		}

  8. #8
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2005
    Messages : 93
    Points : 87
    Points
    87
    Par défaut
    évidemment si tu fais "...or die ("Erreur d'Insertion dans la base : ". $sql3 .'<br />'. mysql_error());

    ca va arrêter l'exécution de ta page et afficher une erreur indigeste pour l'utilisateur lambda.

    Si tu faisais comme je t'avais dit je pense qeu ça devrait aller. Voilà t'a tout en main pour réussir. sujet clot pour moi.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Points : 87
    Points
    87
    Par défaut
    J'ai donc bien enlever "or die .... "

    Mais meme quand je rajoute le meme fichier, il me met "fichier xxx rajouté correctement ..." il me met pas la boite après le else donc " le fichier existe " c est normal ?

    Désolé d'insisté mais quand on trouve pas on trouve pas

    mon code modifié:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    if(mysql_result($res, 0, 0) == 0)
    					{
    					$dest_fichier = basename($_FILES['fichiers']['name']);  
    					nomfichiers ();
    					move_uploaded_file($_FILES['fichiers']['tmp_name'], $dest_dossier . $dest_fichier);  
    					$sql3 = "INSERT INTO fichiersj (nomFichierj, numFiche) VALUES ( '".$dest_fichier."', '".$numfiche2."')"; 
    					$result3 = mysql_query($sql3);
    					echo '<script language=javascript> 
    					alert ("Fichier \''.$dest_fichier.'\' et Fiche n°\''.$numfiche2.'\' insérer correctement !");</script>'; 
    					echo '<SCRIPT LANGUAGE="JavaScript"> 
    					document.location.href="accueil.php" </SCRIPT>'; 
    					exit; 
    					}else{
    						echo '<script language=javascript> 
    						alert ("Fichier \''.$dest_fichier.'\' existe déja! Renommer le fichier ou choisissez en un autre.");</script>'; 
    						echo '<SCRIPT LANGUAGE="JavaScript"> 
    						document.location.href="accueil.php" </SCRIPT>';
    						exit;
    				}

Discussions similaires

  1. Récupérer des noms de fichier dans une table pour les placer en masque du tfilelist
    Par charliplanete dans le forum Développement de jobs
    Réponses: 11
    Dernier message: 24/08/2011, 17h16
  2. Récupérer des noms de fichiers dans une table ?
    Par florus dans le forum Access
    Réponses: 5
    Dernier message: 25/03/2006, 17h34
  3. Charger un fichier dans une table
    Par luchot dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 07/02/2006, 17h21
  4. enregistrer le chelin d'un fichier dans une table
    Par piscine dans le forum Bases de données
    Réponses: 3
    Dernier message: 08/09/2004, 15h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo