2017-05-30 3 views
0

Salut j'ai un code qui télécharge le fichier et enregistre son chemin dans la base de données. Maintenant, je veux changer son chemin vers son id correspondant avec lequel il enregistre dans la base de données ie j'ai téléchargé une image et son identifiant est '4' dans la base de données et son chemin de fichier devrait également être 4. et si je télécharge une autre image et si son id est 5 alors dans sa colonne de chemin de fichier il devrait aussi y avoir 5 et ainsi de suite. J'ai cherché pendant un moment mais je ne suis pas capable de trouver la bonne réponse. Veuillez m'aider ici. Voici mon codebesoin de changer le chemin du fichier avec son identifiant dans la base de données

répertoire image.php

<!doctype html> 
    <html> 
    <head> 
    <meta charset="utf-8"> 
    <title>image in directory</title> 
    </head> 

    <body> 
    <form method="post" action="directory-imagedatabase.php" enctype="multipart/form-data"> 

    <label>Choose File to Upload:</label><br /> 

    <input type="hidden" name="id" /> 

    <input type="file" name="uploadimage" /><br /> 

    <input type="submit" value="upload" id="upload" /> 

    </form> 
    </body> 
    </html> 

directory-imagedatabase.php 

    <?php 
    $target_Folder = 'images/'; 

    $uid = $_POST['id']; 


    $target_Path = $target_Folder.basename($_FILES['uploadimage']['name']); 

    $savepath = $target_Path.basename($_FILES['uploadimage']['name']); 

     $file_name = $_FILES['uploadimage']['name']; 

     if(file_exists('officework/php-startup/images/'.$file_name)) 
    { 
     echo "That File Already Exisit"; 
     } 
     else 
     { 

      // Database 
     $con=mysqli_connect("localhost","root","sal123","test"); //Change it if required 

    //Check Connection 
      if(mysqli_connect_errno()) 
      { 
       echo "Failed to connect to database" .  mysqli_connect_errno(); 
      } 
    $sql = "INSERT INTO directoryimage (id,image, image_name) 
    VALUES ('','$target_Folder$file_name','$file_name') ";   
      if (!mysqli_query($con,$sql)) 
      { 
       die('Error: ' . mysqli_error($con)); 
      } 
      echo "1 record added successfully in the database"; 
      echo '<br />'; 
      mysqli_close($con); 

      // Move the file into UPLOAD folder 

      move_uploaded_file($_FILES['uploadimage']['tmp_name'],  $target_Path); 

      echo "File Uploaded <br />"; 
      echo 'File Successfully Uploaded to:&nbsp;' . $target_Path; 
      echo '<br />'; 
      echo 'File Name:&nbsp;' . $_FILES['uploadimage']['name']; 
      echo'<br />'; 
      echo 'File Type:&nbsp;' . $_FILES['uploadimage']['type']; 
      echo'<br />'; 
      echo 'File Size:&nbsp;' . $_FILES['uploadimage']['size']; 

     } 
     } 
     ?> 
+0

Vous voulez que le fichier soit renommé afin que son nom soit le même que le champ id? – e4c5

+0

Vous avez besoin d'une approche en deux étapes, évidemment, puisque vous devez d'abord créer l'ID avec une instruction INSERT, puis récupérer cet ID en utilisant la fonction last_insert_id. Ensuite, vous pouvez enregistrer le fichier en utilisant cet ID et 'UPDATE' l'entrée créée. – arkascha

+0

pas maintenant je veux changer le chemin du fichier qui est enregistré dans la base de données avec son champ d'identification @ e4c5 –

Répondre

0
  1. Get insert de l'enregistrement ID $id = mysqli_insert_id($con) après la INSERT
  2. Get extension de fichier: $ext = preg_replace("/\.(gif|jpg|etc)$/", ".$1", $file_name);
  3. Renommer le fichier avec rename()rename("$target_Folder$file_name", $id . $ext);
  4. Mettre à jour le dossier avec quelque chose comme $sql = "UPDATE directoryimage SET image = CONCAT('{$target_Folder}', id, '{$ext}') WHERE id = $id";
+0

@leonardochallis monsieur merci beaucoup pour vous aider, mais je reçois ces deux avertissement (Attention: preg_replace() attend au moins 3 paramètres, 2 donnés en) et (renommer (images/12895293_1099151520146863_391821049_n.jpg, 41): Le système ne trouve pas le fichier spécifié. (code: 2)) ici et toujours le chemin du fichier n'est pas remplacé par son identifiant –

+0

Mon mauvais, un petit type (virgule ratée) qui est corrigé. Il est important que vous compreniez ce qui se passe avec le code, c'est une suggestion sur la façon de réaliser ce que vous voulez. – LeonardChallis

+0

J'ai supprimé l'erreur. et maintenant il n'y a pas d'erreur mais toujours cette colonne filepath n'est pas remplacée par son id –