Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1

    ciclare in un foreach array di immagini..

    Salve, ho degli input text di nome image[] , dove intendevo fare che se ne potessero aggiungere di nuovi (tramite ajax appaiono nuovi input text con questo stesso nome). Il problema è che $_FILES['image'] non me lo fa ciclare, ovvero mi da errore che non è un argomento valido. Come posso fare?
    Social Network in costruzione.. Misto tra Twitter e Facebook.. Twitbook o facetter?

  2. #2
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    bisognerebbe vedere il codice, però quello che forse può trarti in inganno è che esendo già $_FILES['nomecampo'] un array, mettendo come nome del campo image[] ottieni un array di questo tipo:

    Codice PHP:
    Array
    (
        [
    name] => Array
            (
                [
    0] => primoFileCaricato.txt
                
    [1] => secondoFileCaricato.txt
            
    )

        [
    type] => Array
            (
                [
    0] => text/plain
                
    [1] => text/plain
            
    )

        [
    tmp_name] => Array
            (
                [
    0] => C:\WINDOWS\temp\php8B.tmp
                
    [1] => C:\WINDOWS\temp\php8C.tmp
            
    )

        [
    error] => Array
            (
                [
    0] => 0
                
    [1] => 0
            
    )

        [
    size] => Array
            (
                [
    0] => 19762
                
    [1] => 298
            
    )


    Il calcolatore è straordinariamente veloce, accurato e stupido.
    L'uomo è incredibilmente lento, impreciso e creativo.
    L'insieme dei due costituisce una forza incalcolabile.
    (Albert Einstein)

  3. #3
    Sì ma quindi come devo strutturare il form? L' unico motivo per cui volevo ciclare le immagini era perchè do la possibilità di aggiungerne quante vogliono, quindi l' unico modo per sapere il numero preciso delle immagini caricate ecc. era l' array
    Social Network in costruzione.. Misto tra Twitter e Facebook.. Twitbook o facetter?

  4. #4
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    la struttura del form dovrebbe andar bene, è giusto image[] come nome del campo, solo devi sapere che quando vuoi trovare il nome dei file caricati devi ciclare l'array

    $_FILES['image']['name']

    e quando vuoi trovare la dimensione devi cilcare

    $_FILES['image']['size']

    ecc...

    comunque ripeto, per capire dove è veramente l'errore bisognerebbe vedere il codice ... così stiamo solo facendo ipotesi
    Il calcolatore è straordinariamente veloce, accurato e stupido.
    L'uomo è incredibilmente lento, impreciso e creativo.
    L'insieme dei due costituisce una forza incalcolabile.
    (Albert Einstein)

  5. #5
    Il codice, per testare solo se il ciclo funzionava, l' ho messo semplice:

    Codice PHP:
    <form id="form" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
    <input type="button" value="Aggiungi" onClick="aggiungi(); conta();" /> <input type="button" value="Rimuovi" id="rimuovi" onClick="cancella(); conta();" /> <input type="submit" value="Carica" id="carica" name="carica" />


    <div><input type="file" name="image" value="Sfoglia.." /></div>
    <div><input type="file" name="image" value="Sfoglia.." /></div> 
    </form>
    <?php
    if(isset($_POST['carica'])) {
    $immagini $_FILES['image'];
    $estensioni = array('image/png','image/gif','image/jpg','image/jpeg');
        foreach(
    $_FILES['image'] as $value) {
        if(isset(
    $value) && in_array($immagini['type'], $estensioni)) {
        
    $i++; // Se l' immagine è caricata e l' estensione è valida, aumento $i
        
    }
         }
         
         if(
    $i 2) {
            echo 
    '<span id="error">Devi inserire almeno 2 immagini.</span>';
         } else {
         echo 
    'Ok.';
         }
    }
    ?>
    Social Network in costruzione.. Misto tra Twitter e Facebook.. Twitbook o facetter?

  6. #6
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    così dovrebbe anare, occhio che se in un form gestisci dei campi file devi avere nel tag <form> l'enctype

    Codice PHP:
            <form id="form" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" enctype="multipart/form-data">
                <input type="button" value="Aggiungi" onClick="aggiungi(); conta();" /> 
                <input type="button" value="Rimuovi" id="rimuovi" onClick="cancella(); conta();" /> 
                <input type="submit" value="Carica" id="carica" name="carica" />
                


                <div><input type="file" name="image[]" value="Sfoglia.." /></div>
                <div><input type="file" name="image[]" value="Sfoglia.." /></div> 
            </form>
            <?php
            
    if(isset($_POST['carica'])) {
                
    $i=0;
                
    $immagini $_FILES['image'];// se non server altrove questo si può togliere
                
    $estensioni = array('image/png','image/gif','image/jpg','image/jpeg');
                foreach(
    $_FILES['image']['type'] as $key => $value) {
                    if(isset(
    $value) && in_array($value$estensioni)) {
                        
    $i++; // Se l' immagine è caricata e l' estensione è valida, aumento $i
                    
    }
                }
                     
                if(
    $i 2) {
                    echo 
    '<span id="error">Devi inserire almeno 2 immagini.</span>';
                } else {
                    echo 
    'Ok.';
                }
            }
            
    ?>
    Il calcolatore è straordinariamente veloce, accurato e stupido.
    L'uomo è incredibilmente lento, impreciso e creativo.
    L'insieme dei due costituisce una forza incalcolabile.
    (Albert Einstein)

  7. #7
    Ottimo, grazie mille
    Social Network in costruzione.. Misto tra Twitter e Facebook.. Twitbook o facetter?

  8. #8
    Ehm ora che ci penso c'è un problema.. Come faccio a fargli eseguire l' upload se non posso fare un foreach a $_FILES[] ?

    Ho provato così:

    Codice PHP:
                    foreach($_FILES['image']['tmp_name'] as $key2 => $value2) {
                        foreach(
    $_FILES['image']['name'] as $key3 => $value3) {
                        
    move_uploaded_file($value2UPLOAD_DIR.$value3);
                        }
                    } 
    Ma carica solo la prima immagine, le altre no
    Social Network in costruzione.. Misto tra Twitter e Facebook.. Twitbook o facetter?

  9. #9
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    Codice PHP:
    <?php
            
    if(isset($_POST['carica'])) {
                
    $i=0;
                
    $immagini $_FILES['image'];// se non server altrove questo si può togliere
                
    $estensioni = array('image/png','image/gif','image/jpg','image/jpeg');
                foreach(
    $_FILES['image']['type'] as $key => $value) {
                    if(isset(
    $value) && in_array($value$estensioni)) {
                        
    move_uploaded_file($_FILES['image']['tmp_name'][$key], UPLOAD_DIR.$_FILES['image']['name'][$key]); 
                        
    $i++; // Se l' immagine è caricata e l' estensione è valida, aumento $i
                    
    }
                }
                     
                if(
    $i 2) {
                    echo 
    '<span id="error">Devi inserire almeno 2 immagini.</span>';
                } else {
                    echo 
    'Ok.';
                }
            }
            
    ?>
    questo se fai l'inserimento man mano che incontri i file, però se come penso devi prima controllare che ci siano almeno 2 file validi ho paura che dovrai fare il ciclo 2 volte, la prima controlli e la seconda inserisci, in ogni caso il modo in cui dovrai riferirti al file per ottenere il nome temporaneo è $_FILES['image']['tmp_name'][$indice]
    Il calcolatore è straordinariamente veloce, accurato e stupido.
    L'uomo è incredibilmente lento, impreciso e creativo.
    L'insieme dei due costituisce una forza incalcolabile.
    (Albert Einstein)

  10. #10
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    MA PERCHE' non fai un var_dump dei dati cosi' VEDI come sono messi ?

    Codice PHP:

    echo "<pre>" // manteniamo la formattazione sulla pagina web
    var_dump($miaVar) ;
    echo 
    "</pre>" 
    Prima di fare codice che scorre strutture dati se non hai idea di come sono messe .... stampale a video.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.