- Home
- Categorie
- Coding e Sistemistica
- PHP
- selezionare solo alcuni parametri da $_get
-
Lo script viene eseguito in locale o sul server?
Nel secondo caso, devi usare la funzione move_uploaded_file per spostare il file, e tutto quell'ambaradan con le ftp non è necessario ( o meglio, non ha senso ).
-
Niente, proprio non ci riesco. Sono arrivata a questo
[php]
<?php
$percorso = "../foto_mod/";include("../accesso/dati_accesso.php");
$query= "SELECT id FROM db_mod ORDER BY id DESC LIMIT 0,1"; $result= mysql_query($query); $row= mysql_fetch_array($result); $cartella = $row[id] + 1;
mkdir($percorso.$cartella, 0777);
for($i=0;$i<count($_FILES['foto']);$i++){
mkdir($percorso.$cartella."/".$i."/", 0777);
$dove_caricare = "foto_mod/".$cartella."/".$i."/";
move_uploaded_file($_FILES['foto']['tmp_name']."['".$i."']", $dove_caricare.$_FILES['foto']['name']."['".$i."']");
echo "cartella: " .$i. "<br>";
}
?>
[/php] ma il risultato è sempre lo stesso, cioè mi crea sempre 5 cartelle anche se carico due foto,e queste cartelle sono vuote.
-
Uhm, prova qualcosa tipo:
[php]
for($i=0; $i < count($_FILES['foto']); $i++) {
if ($_FILES['foto']* > 0) {
mkdir($percorso.$cartella."/".$i."/", 0777);
$dove_caricare = "../foto_mod/".$cartella."/".$i."/";
move_uploaded_file($_FILES['foto']['tmp_name'], $dove_caricare . $_FILES['foto']['name']);
echo "cartella: " .$i. "<br>";
}
}
[/php]
Vedi un po' come va...
-
Così mi crea solo la cartella principale senza quelle interne e senza foto. Se elimino l' if() mi crea come prima la cartella principale e 5 sottocartelle vuote
-
Senti, come suggeriva qualcuno prima del ciclo for metti un:
[php]echo "<pre>";
print_r($_FILES);
echo "</pre>";
for($i=0; $i < count($_FILES['foto']); $i++) {
...
[/php]
e facci sapere cosa viene scritto...
-
Ora provo a fare come dici tu. Nel frattempo ho fatto:
[PHP]
foreach ($_FILES['foto'] as $valore) {
echo "Valore : $valore[0]<br>";
}
[/PHP]
e mi esce, provando a caricare una sola immagine,Valore : mazda.jpg
Valore : image/jpeg
Valore : /tmp/phprtUIPv
Valore : 0
Valore : 242561ecco spiegato le 5 cartelle che escono fuori
-
come dici tu esce
[HTML]
Array
(
[foto] => Array
(
[name] => Array
(
[0] => mazda.jpg
[1] => cinquecento.jpg
)[type] => Array ( [0] => image/jpeg [1] => image/jpeg ) [tmp_name] => Array ( [0] => /tmp/phppptDYE [1] => /tmp/phpaZyqha ) [error] => Array ( [0] => 0 [1] => 0 ) => Array ( [0] => 242561 [1] => 119589 ) )
)
[/HTML]
-
Eh, allora avevo azzeccato come veniva gestito l'array Tral'altro te ne sei accorta tu stessa anche solamente dopo il primo tentativo che hai fatto ( il for con l'echo del $valore[0] ). Sostituisci il tuo ciclo for con questo:
[PHP]
//for($i=0;$i<count($_FILES['foto']);$i++){
for($i=0;$i<count($_FILES['foto']);$i++){ // Vedi nota 1
mkdir($percorso.$cartella."/".$i."/", 0777);
$dove_caricare = "foto_mod/".$cartella."/".$i."/";
//move_uploaded_file($_FILES['foto']['tmp_name']."['".$i."']", $dove_caricare.$_FILES['foto']['name']."['".$i."']");
move_uploaded_file($_FILES['foto']['tmp_name'], $dove_caricare.$_FILES['foto']['name']); // Vedi nota 2
echo "cartella: " .$i. "<br>";
}
[/PHP]-
Ricordati come viene gestito l'array. Nell'array $_FILES['foto'] hai i campi tmp_name, name, size e gli altri... Tu qui imposti il ciclo per terminare dopo tot ripetizioni... ripetizioni che però sono riferite al numero dei CAMPI, non al numero dei FILES... Per questo, al posto di $_FILES['foto'] dovresti mettere $_FILES['foto']['tmp_name'] o $_FILES['foto'] o qualunque altro campo, in quanto è all'interno del terzo sub-array che trovi i files.
-
move_uploaded_file($_FILES['foto']['tmp_name']."['".$i."']", $dove_caricare.$_FILES['foto']['name']."['".$i."']");
Questa non ha senso sintatticamente parlando: $_FILES['foto']['tmp_name']."['".$i."']" --> $_FILES['foto']['tmp_name']*
Con i punti tu concatenavi le stringhe, mentre dovevi andare in profondità nell'array, l'idea comunque era giusta
Ora dovrebbe andare.
-
-
Oddio funziona. Davvero non so come ringraziarvi non ci sarei mai arrivata da sola. Birra per tutti stasera!
-
Figurati, spero che al di là del codice pronto hai capito perchè non funzionava, almeno tutto questo sarà servito a qualcosa XD