2014-12-16 17 views
5

Ho un modulo che aiuta a caricare più immagini nella cartella del server e salva il loro percorso nel database, il problema è che il percorso di tutte le immagini viene caricato su una colonna, ea causa di ciò ho problemi nel recuperare il percorso per visualizzare l'immagine. La soluzione sarebbe che io o le immagini vengano memorizzate in colonne diverse o trovo il modo di separare le immagini, tuttavia non sono in grado di fare entrambe le cose.Memorizza il percorso dell'immagine nella colonna del database diverso

percorso che viene sempre immagazzinato sembra

uploads/c376437e2a45598b2f4d89eae4f191e8.png*uploads/c376437e2a45598b2f4d89eae4f191e8.png8069756be5095978123ae51fadbffe3b.png*uploads/c376437e2a45598b2f4d89eae4f191e8.png8069756be5095978123ae51fadbffe3b.png04aaa414c21dc057bc594b896124068e.png 

Struttura del database demo

id offimage offimage1 offimage2 

Il codice che ho finora (modulo e il codice php sono sulla pagina diversa)

<form enctype="multipart/form-data" action="co_insert_office_image.php?id=<?php echo $_GET['id']; ?>" method="post"> 
     First Field is Compulsory. Only JPEG,PNG,JPG Type Image Uploaded. Image Size Should Be Less Than 100KB. 
    <hr/> 
    <div id="filediv"><input name="file[]" type="file" id="file"/></div><br/> 
    <input type="button" id="add_more" class="upload" value="Add More Files"/> 
    <input type="submit" value="Upload File" name="submit" id="upload" class="upload"/> 
</form> 

co_insert_office_image.php

<?php 
ob_start(); 
include('co_session.php'); 
$con=mysqli_connect("localhost","root","","db"); 
// Check connection 
if (mysqli_connect_errno()) { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 
if (isset($_POST['submit'])) { 
    $j = 0; //Variable for indexing uploaded image 

    $target_path = "uploads/"; //Declaring Path for uploaded images 
    for ($i = 0; $i < count($_FILES['file']['name']); $i++) {//loop to get individual element from the array 

     $validextensions = array("jpeg", "jpg", "png"); //Extensions which are allowed 
     $ext = explode('.', basename($_FILES['file']['name'][$i]));//explode file name from dot(.) 
     $file_extension = end($ext); //store extensions in the variable 

     $target_path = $target_path . md5(uniqid()) . "." . $ext[count($ext) - 1];//set the target path with a new name of image 
     $j = $j + 1;//increment the number of uploaded images according to the files in array  

     if (($_FILES["file"]["size"][$i] < 100000) //Approx. 100kb files can be uploaded. 
       && in_array($file_extension, $validextensions)) { 
      if (move_uploaded_file($_FILES['file']['tmp_name'][$i], $target_path)) {//if file moved to uploads folder 
       //echo $j. ').<span id="noerror">Image uploaded successfully!.</span><br/><br/>'; 

       $file_name_all.=$target_path."*"; 
       $filepath = rtrim($file_name_all, '*'); 
       //echo $filepath; 
       $officeid = $_GET['id']; 
       $sql = "UPDATE register_office SET offimage='$filepath' WHERE id='$officeid' "; 
          if (!mysqli_query($con,$sql)) 
           { 
            die('Error: ' . mysqli_error($con)); 
           } 

      } else {//if file was not moved. 
       echo $j. ').<span id="error">please try again!.</span><br/><br/>'; 
      } 
     } else {//if file size and file type was incorrect. 
      echo $j. ').<span id="error">***Invalid file Size or Type***</span><br/><br/>'; 
     } 
    } 
    header("Location: co_request_sent.php "); 
} 
mysqli_close($con); 
?> 
+0

Che ne dici di creare un'altra tabella con l'indice di padre e quindi memorizzare le immagini lì? –

+0

@Anand Ghaywankar conserva ancora tutto il percorso dell'immagine in una colonna – Sam

+0

Come verrà memorizzato in One Col? Una tabella di diff avrà col come ID , parent_id, img_path e avrà hasMany relation con parent_table. Tutto ciò che devi mantenere l'id della tabella padre nella tabella immagini –

risposta

1

Finalmente ho avuto la soluzione, ho visto alcune persone hanno segnato questa domanda e potrebbero essere in cerca di risposta, così qui è

prima connettersi al database, recuperare i dati e quindi utilizzare il seguente codice

while($row1 = mysqli_fetch_assoc($result1)) 
    { 
    $str= $row1["offimage"]; 
    //print_r (explode("*",$str)); 

    $array = explode('*', $str); 
    foreach ($array as $item) { 
     //echo "<li>$item</li>"; 
     echo "<img src=\"http://localhost/cms/1/". $item . "\" height=\"200\" width=\"200\"/>"; 
    } 

} 
Problemi correlati