J'essaie de charger les fichiers précédemment téléchargés dans la base de données MySQL. Les fichiers sont stockés sur le dossier tout en soumettant la forme où la page d'aperçu contiendra des hyperliens vers ces fichiers (quelque chose comme les pièces jointes)Afficher les fichiers téléchargés à partir de MySQL en fonction de l'extension de fichier et du nombre de fichiers avec des liens hypertexte
problème que je suis en train est:
- si je sélectionne seulement 1 ou plusieurs fichiers avec spécifiques extension de fichier à télécharger, puis je vais obtenir le nombre correct de fichiers répertoriés et les liens hypertexte fonctionneront. Si je sélectionne 2 fichiers avec 2 extensions de fichier différentes (PDF et JPG), alors 4 hyperliens seront affichés.
- si je sélectionne 4 avec 2 différentes extensions de fichier (PDF et JPG), je les obtenir 8 hyperliens affichés
Probablement erreur est avec la commande foreach dans mon code.
Veuillez vérifier l'image ci-jointe à quoi ressemble le chargement des fichiers.
index.php
<?php
include('dbconfig.php');
date_default_timezone_set('Europe/Oslo');
$loaddate1 = date('Y-m-d');
$loadtime1 = date('H-i-s');
?>
<form name="myForm" id="myForm" class="workshop add" action="" method="post" enctype="multipart/form-data">
<input id="" type="text" name="toolsn" value="">
<input id="" type="text" name="actioninsertdate" value="<?php echo $loaddate1;?>" readonly> <br/>
<input id="" type="text" name="actioninserttime" value="<?php echo $loadtime1;?>" readonly><br/>
<input type="file" name="files[]" multiple/><br/>
<button type="submit" name="submit">Submit</button></div>
</form>
<?php
if(isset($_POST['submit']))
{
$path = 'images/';
$toolsn = $_POST['toolsn'];
$actioninsertdate = $_POST['actioninsertdate'];
$actioninserttime = $_POST['actioninserttime'];
$errors= array();
foreach($_FILES['files']['tmp_name'] as $key => $tmp_name){
$file_name = $key.$_FILES['files']['name'][$key];
$file_basename = substr($file_name, 0, strripos($file_name, '.')); // get file extension
$file_ext = substr($file_name, strripos($file_name, '.')); // get file name
$file_size =$_FILES['files']['size'][$key];
$file_tmp =$_FILES['files']['tmp_name'][$key];
$file_type=$_FILES['files']['type'][$key];
$newfilename = $toolsn.'-'.$loaddate1.'_'.$loadtime1.'_'.rand(1,20).$file_ext;
if($file_size > 2097152){
$errors[]='File size must be less than 2 MB';
}
$query="INSERT workshop1 SET toolsn='$toolsn',file='$newfilename',type='$file_type',size='$file_size',actioninsertdate='$actioninsertdate',actioninserttime = '$actioninserttime'"
or die(mysqli_error ($connection));
if(empty($errors)==true || empty($toolsn)==false){
if(is_dir($path.$toolsn)==false){
mkdir("images/$toolsn", 0700); // Create directory if it does not exist
}
if(is_dir("images/$toolsn/".$file_name)==false){
//$newfilename = $toolsn.'-'.$loaddate1.'_'.$loadtime1.'_'.rand(1,4).$file_ext;
move_uploaded_file($file_tmp,"images/$toolsn/".$newfilename);
}else{ // rename the file if another one exist
//$newfilename = $toolsn.'-'.$loaddate1.'_'.$loadtime1.'_'.rand(1,4);
$new_dir="images/$toolsn/".time().$newfilename;
rename($file_tmp,$new_dir) ;
}
mysqli_query($connection, $query);
}else{
print_r($errors);
}
}
}
?>
read.php
<?php
include('dbconfig.php');
$sqls=mysqli_query($connection, "
SELECT
GROUP_CONCAT(DISTINCT toolsn SEPARATOR '<br />') as toolsn,
GROUP_CONCAT(DISTINCT type SEPARATOR '<br />') as type,
GROUP_CONCAT(DISTINCT file ORDER BY type SEPARATOR '<br />') as file,
GROUP_CONCAT(DISTINCT actioninsertdate SEPARATOR '<br />') as actioninsertdate,
GROUP_CONCAT(DISTINCT actioninserttime SEPARATOR '<br />') as actioninserttime
from workshop1
group by actioninserttime");
//get feedback why database not working
if (!$sqls) {
printf("Error: %s\n", mysqli_error($connection));
exit();
}
?>
<table id="table" class="table table-hover table-responsive">
<thead class="thead-default">
<tr>
<th>Toolsn</th>
<th>Date added</th>
<th>Time added</th>
<th>Attachment</th>
</tr>
</thead>
<?php
echo '<tbody id="tbody"><tr>';
while ($row = mysqli_fetch_array($sqls)) {
echo '<td>'.$row['toolsn'].'</td>';
echo '<td>'.$row['actioninsertdate'].'</td>';
echo '<td>'.$row['actioninserttime'].'</td>';
echo '<td>';
$eachtoolsn=explode('<br />',$row['toolsn']);
$eachfile=explode('<br />',$row['file']);
$eachtype=explode('<br />',$row['type']);
foreach($eachfile as $listfile) {
//echo $listfile;
foreach($eachtoolsn as $key => $listoolsn) {
//echo [$key];
}
foreach($eachtype as $listtype) {
if ($listtype === 'image/jpeg'){
echo '<a href="images/'.$row['toolsn'].'/'.$listfile.'" target="_blank"><img src="images/'.$row['toolsn'].'/'.$listfile.'" width="48" height="48"></a>';
} elseif ($listtype === 'application/pdf'){
echo '<a href="images/'.$row['toolsn'].'/'.$listfile.'" target="_blank"><img src="images/icon-pdf.png" width="48" height="48"></a>';
}
}
echo '</td>';
echo '</tr>';}
echo '</tbody></table>';
?>
code Vous est ** [Injection SQL vulnérable] (https://stackoverflow.com/questions/601300/what- is-sql-injection) **, ne l'utilisez pas en production et apprenez à vous protéger. – Blag