- Home
- Categorie
- Coding e Sistemistica
- PHP
- script upload foto e scrittura su db
-
script upload foto e scrittura su db
Buongiorno a tutti,
ho uno script che carica più foto su una cartella,
e scrive sul db il nome di ogni fotoe l'id dell'articolo a cui sono associate:
crea_gallery.php
[PHP]
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="file[]" multiple>
<input name='id' type='text' value="<?php print $_GET['id']?>" style="display:none;">
<input name="invia" type="submit" value="Carica i file" />
</form>
[/PHP]upload.php
[PHP]
<?php include("../config.php"); ?>
<?php
$folder='foto/';
if(isset($FILES['file']['name'])){
$count=0;
foreach ($FILES['file']['name'] as $filename) {
$destination=$folder;
$origin=$FILES['file']['tmp_name'][$count];
$count++;
$destination=$destination.basename($filename);
$id_articolo = $POST['id'];
$dir_art = mkdir("file:///Applications/MAMP/htdocs/studio/admin/gallery/foto/".$id_articolo,0777);
$dir_art_ok = "file:///Applications/MAMP/htdocs/studio/admin/gallery/foto/".$id_articolo."/";
move_uploaded_file($origin, $dir_art_ok.$filename);
rename($dir_art_ok.$filename,$dir_art_ok.$id_articolo."".$count."".$filename);
$nome_foto = $id_articolo.$id_articolo."".$count."".$filename;
$sql = "INSERT INTO gallery (foto,id_articolo) VALUES ('$nome_foto','$id_articolo')";
$ret = mysqli_query( $db, $sql );
}
}
header("location: crea_gallery.php?id=".$id_articolo);?>
[/PHP]
funziona tutto, l'unica cosa però è che se non faccio l'upload di nessuna immagine e clicco il bottone "Carica i file",
lo script non carica nessun i file, ma esegue la query, vorrei che se non si carica nessun file non si eseguisse la query.
ringrazio in anticipo
buona serata e buon week end
-
Isset controlla se c'è la variabile. La variabile ci può essere ed essere vuota, come nel tuo caso. Prova a sostituire isset con empty. In questo caso la funzione guarda se la varibile è vuota. Se non è vuota prosegue con l'inserimento.
[PHP]
...
if(!empty($_FILES['file']['name'])){
...
[/PHP]inoltre per nascondere un campo nel form usa l'attributo type con valore hidden
... <input name='id' type='hidden' value="<?php print $_GET['id']?>" /> ...
Ciao.
-
Grande Oslino, tempestivo come sempre!
immaginavo si usasse empty o isset;
posto il codice:
upload.php
[PHP]
<?php include("../config.php"); ?>
<?php
$folder='foto/';
if(isset($FILES['file']['name'])){
$count=0;
foreach ($FILES['file']['name'] as $filename) {
$destination=$folder;
$origin=$FILES['file']['tmp_name'][$count];
$count++;
$destination=$destination.basename($filename);
$id_articolo = $POST['id'];
$dir_art = mkdir("file:///Applications/MAMP/htdocs/studio/admin/gallery/foto/".$id_articolo,0777);
$dir_art_ok = "file:///Applications/MAMP/htdocs/studio/admin/gallery/foto/".$id_articolo."/";
move_uploaded_file($origin, $dir_art_ok.$filename);
rename($dir_art_ok.$filename,$dir_art_ok.$id_articolo."".$count."".$filename);
$nome_foto = $id_articolo.$id_articolo."".$count."".$filename;
if(!isset($_FILES['file']['name'])){
$sql = "INSERT INTO gallery (foto,id_articolo) VALUES ('$nome_foto','$id_articolo')";
$ret = mysqli_query( $db, $sql );
}
}
}
header("location: crea_gallery.php?id=".$id_articolo);?>
[/PHP]
grazie ancora
buon week end
-
Rettifico Oslino,
non va; nell'if ho provato a mettere sia empty che isset ma nulla.
strano, come mai secondo te?
grazie mille
scusa l'inghippo
-
Rettifico di nuovo Oslino!
sembra funzionare:
[PHP]
<?php include("../config.php"); ?>
<?php
$folder='foto/';
if(isset($FILES['file']['name'])){
$count=0;
foreach ($FILES['file']['name'] as $filename) {
$destination=$folder;
$origin=$FILES['file']['tmp_name'][$count];
$count++;
$destination=$destination.basename($filename);
$id_articolo = $POST['id'];
$dir_art = mkdir("file:///Applications/MAMP/htdocs/studio/admin/gallery/foto/".$id_articolo,0777);
$dir_art_ok = "file:///Applications/MAMP/htdocs/studio/admin/gallery/foto/".$id_articolo."/";
move_uploaded_file($origin, $dir_art_ok.$filename);
rename($dir_art_ok.$filename,$dir_art_ok.$id_articolo."".$count."".$filename);
$nome_foto = $id_articolo.$id_articolo."".$count."".$filename;
if(!empty($filename)){
$sql = "INSERT INTO gallery (foto,id_articolo) VALUES ('$nome_foto','$id_articolo')";
$ret = mysqli_query( $db, $sql );
}
}
}
header("location: crea_gallery.php?id=".$id_articolo);?>
[/PHP]
grazie
1000
ciao!
-
Se funziona mi fa piacere, ma non capisco perchè lo hai messo lì... nel tuo modo PHP valuta ugualmente tutto il codice, creandoti le cartelle e fermandosi solo al "if(!empty...)". Se le cartelle sono inutili in caso di mancanza delle foto, perchè crearle?
Io lo avrei messo all'inizio, poi vedi tu...
[PHP]
<?php include("../config.php"); ?>
<?php
$folder='foto/';
if(!empty($FILES['file']['name'])){ // <---- ****** IO LO METTEREI QUI! ****
$count=0;
foreach ($FILES['file']['name'] as $filename) {
$destination=$folder;
$origin=$FILES['file']['tmp_name'][$count];
$count++;
$destination=$destination.basename($filename);
$id_articolo = $POST['id'];
$dir_art = mkdir("file:///Applications/MAMP/htdocs/studio/admin/gallery/foto/".$id_articolo,0777);
$dir_art_ok = "file:///Applications/MAMP/htdocs/studio/admin/gallery/foto/".$id_articolo."/";
move_uploaded_file($origin, $dir_art_ok.$filename);
rename($dir_art_ok.$filename,$dir_art_ok.$id_articolo."".$count."".$filename);
$nome_foto = $id_articolo.$id_articolo."".$count."".$filename;
$sql = "INSERT INTO gallery (foto,id_articolo) VALUES ('$nome_foto','$id_articolo')";
$ret = mysqli_query( $db, $sql );
}
}
header("location: crea_gallery.php?id=".$id_articolo);
?>
[/PHP]
Ciao.