upload multiplo di 2 immagini su database mysql

  • Creatore Discussione Creatore Discussione migo80
  • Data di inizio Data di inizio
si, ma hanno poco senso un sacco di record vuoti

ovviamente è solo di prova ;)

la form completa è questa:
HTML:
<form name="ricerca" action="esitoform_immobili.php" method="post" enctype="multipart/form-data">
<p>
<label for="nome">Nome</label>
<input type="text" name="nome" id="nome" /></p>
<p>
<label for="denominazione">Titolo</label>
<input type="text" name="denominazione" id="denominazione" /></p>
<p>
<label for="indirizzo">Indirizzo</label>
<input type="text" name="indirizzo" id="indirizzo" /></p>
<p>
<label for="località">Localit&agrave;</label>
<input type="text" name="localita" id="localita" /></p>
<p><label for="status">Status immobile:</label>
<select name="status">
<option value="vendita">in vendita</option>
<option value="affitto">in affitto</option>
</select></p><br />
<label for="descrizione">Descrizione del tuo immobile</label><p>
<textarea name="descrizione" id="descrizione" cols="35" rows="5"></textarea></p></p>
<p>
<label for="estensioneSupAbit">estensione superficie abitabile</label>
<input type="text" name="estensioneSupAbit"" id="estensioneSupAbit" />mq</p>
<p>
<label for="estensioneterreno">estensione terreno</label>
<input type="text" name="estensioneterreno"" id="estensioneterreno" />mq</p>
<p>
<label for="tipo">Scegli il tipo di appartamento:</label>
<select name="tipo">
<option value="Miniappartamento">Mini-appartamento</option>
<option value="Tricamere">Tricamere</option>
<option value="Bicamere">Bicamere</option>
<option value="Attico">Attico</option>
<option value="Appartamento">Appartamento</option>
</select></p><br/>
<label for="nCamere">numero camere</label>
<input type="text" name="nCamere" id="nCamere" /></p>
<label for="nBagno">numero di bagni</label>
<input type="text" name="nBagno" id="nBagno" /></p>
<label for="prezzo">prezzo</label>
<input type="text" name="prezzo" id="prezzo" /></p>
<label for="speseCondominiali">spese condominiali</label>
<input type="text" name="speseCondominiali" id="speseCondominiali" /></p>
  
<p>
<label for="data">Data:</label>
G: <input type="text" name="gg" size="2" value="gg" class="data"/>
M: <input type="text" name="mm" size="2" value="mm" class="data"/>
A: <input type="text" name="aaaa" size="4" value="aaaa" class="data"/></p>
<label for="ins_mail">e-Mail</label>
<input type="text" name="ins_mail" id="ins_mail" /></p>
<label for="boxauto">Box auto</label>
<input type="text" name="boxauto" id="boxauto" /></p>
<!-- caricamento immagine -->
<label for="Immagine - max 4">Immagine</label>
<input name="image[]" type="file" size="40" multiple="multiple"/> 
    <br />
 <!-- fine caricamento immagine -->
<p>
 <input type="submit" name="submit" id="submit" value="Invia Messaggio" />
 </p>
</form>

mentre la pagina a cui va di controllo dovrebbe essere così:
PHP:
<?php
if (isset($_POST['invia'])) {
// CONTROLLIAMO IL NOME
if (strlen($_POST['nome']) < 2) {
echo "<strong>Errore</strong>: Il nome deve essere di almeno due caratteri!<br />";}
// CONTROLLIAMO IL TITOLO
else if (strlen($_POST['titolo']) == false) {
echo "<strong>Errore</strong>: non hai specificato il Titolo dell'annuncio!<br />";}
// CONTROLLIAMO indirizzo
else if (isset($_POST['indirizzo']) == false) {
echo "<strong>Errore</strong>: non hai specificato l'indirizzo!<br />";}
// CONTROLLIAMO Località
else if (isset($_POST['localita']) == false) {
echo "<strong>Errore</strong>: non hai specificato la località!<br />";}
// CONTROLLIAMO descrizione
else if (isset($_POST['descrizione']) == false) {
echo "<strong>Errore</strong>: è obbligatorio specificare la descrizione dell'immobile!<br />";}
//controlliamo estensione sup abit
else if (is_numeric($_POST['estensioneSupAbit']) == false) {
echo "<strong>Errore</strong>: il campo <i>estensione superficie abitabile</i> deve contenere soltanto numeri!<br />";}
//controlliamo estensione terreno
else if (is_numeric($_POST['estensioneterreno']) == false) {
echo "<strong>Errore</strong>: il campo <i>estensione terreno</i> deve contenere soltanto numeri!<br />";}
// CONTROLLIAMO IL TIPO 
else if (isset($_POST['tipo']) == false) {
echo "<strong>Errore</strong>: non hai specificato il tipo di immobile!<br />";}
//controlliamo nCamere
else if (is_numeric($_POST['nCamere']) == false) {
echo "<strong>Errore</strong>: il campo <i>numero camere</i> deve contenere soltanto numeri!<br />";}
//controlliamo nBagno
else if (is_numeric($_POST['nBagno']) == false) {
echo "<strong>Errore</strong>: il campo <i>numero dei bagni</i> deve contenere soltanto numeri!<br />";}
//controlliamo estensione prezzo
else if (is_numeric($_POST['prezzo']) == false) {
echo "<strong>Errore</strong>: il campo <i>prezzo</i> deve contenere soltanto numeri!<br />";}
//controlliamo spese condom
else if (is_numeric($_POST['spesecondominiali']) == false) {
echo "<strong>Errore</strong>: il campo <i>prezzo</i> deve contenere soltanto numeri!<br />";}
// CONTROLLIAMO CHE LA DATA SIA INSERITA
else if ((is_numeric($_POST['gg']) == false) || (is_numeric($_POST['mm']) == false) ||
(is_numeric($_POST['aaaa']) == false )) {
echo "<strong>Errore</strong>: non hai specificato una data!<br />";
}
// CONTROLLIAMO GIORNI E MESI
else if ($_POST['gg'] > 31 || $_POST ['mm'] > 12) {
echo "<strong>Errore</strong>: data inesistente!<br />";
}
// CONTROLLIAMO I MESI CON 30 GIORNI
else if ($_POST['gg'] > 29 && ($_POST ['mm'] == 4 || $_POST['mm'] == 6 || $_POST['mm'] == 9 || $_POST['mm'] == 11)) {
echo "<strong>Errore</strong>: data inesistente!<br />";
}
// CONTROLLIAMO GLI ANNI BISESTILI
else if ($_POST['gg'] > 29 && $_POST ['mm'] == 2 && ($_POST['aaaa']>1584 && $_POST['aaaa']%4 == 0 && $_POST['aaaa']%100 !=0)) {
echo "<strong>Errore</strong>: data inesistente!<br />";
}
// CONTROLLIAMO GLI ANNI NON BISESTILI
else if ($_POST['gg'] > 28 && $_POST ['mm'] == 2 && ($_POST['aaaa']%4 != 0)) {
echo "<strong>Errore</strong>: data inesistente!<br />";
}
// CONTROLLIAMO L'EMAIL
else if (!preg_match('/^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9_\.\-]+\.[a-z]{2,6}$/', $indirizzoemail)) {
echo "Indirizzo email non valido";
}
// controlla boxauto
else if (isset($_POST['boxauto']) == false) {
echo "<strong>Errore</strong>: non hai specificato il box auto!<br />";}
} 

// *******************CONTROLLO IMG *****************
// limite peso in byte (1MB)
$peso_file = 256 * 256;
// inizializziamo il messaggio
$messaggio = "Carica una o piu immagini, fino ad un massimo di 4 consentite:";
// estensioni ammesse
$estensioni = array("jpg", "png", "bmp", "gif");
// percosrso destinazione immagini la cartella deve esistere e il percorso deve essere corretto
$dir = "../images_immobili";
// verifichiamo che sia stato premuto il submit
if (isset($_POST['upload']) && $_POST['upload'] == "Carica immagini") {
    // azzeriamo il messaggio
    $messaggio = "";
    // recuperiamo e uniamo le informazionei sulle immagini
    $infoimages = array_combine($_FILES["image"]['name'], $_FILES["image"]['tmp_name']);
    // cicliamo le immagini
    foreach ($infoimages as $k => $v) {
        // nome del file
        $nomefile = strtolower($k);
        // controlliamo il peso immagine
        if (filesize($v) < $peso_file) {
            // recuperiamo l'estensione
            $estensionefile = pathinfo($nomefile, PATHINFO_EXTENSION);
            // controlliamo il tipo immagine
            if (in_array(strtolower($estensionefile), $estensioni)) {
                // controllo caricamento
                if (is_uploaded_file($v)) {
                    // spostiamo il file nella cartella immagini
                    if (!move_uploaded_file($v, "$dir/$nomefile")) {
                        $messaggio .= "<br/>Impossibile spostare il file $k";
                    } else {
                        $messaggio .= "<br/>Immagine $k caricata con successo";
						$sql = new mysqli("localhost", "root", "", "lucatropina");
						$query="INSERT INTO immobile(immagine) VALUES('images_immobili/$nomefile')";  
						var_dump($query);//e qui verifichi che venga scritta come dovrebbe
						if(!$sql->query($query)) { 
							echo $sql->error; 
}	
                    }
                } else {
                    $messaggio .= "<br/>Errore nell'upload del file $k.";
                }
            } else {
                $messaggio .= "<br/>Tipo immagine non consentito : $k";
            }
        } else {
            $messaggio .= "<br/>Immagine $k non caricata : limite peso superato";
        }
    }
}
?>
 
ciao
piccolo consiglio:
per avere i dati migliori al posto dell'immagine che hai postato sarebbe meglio (e non vale solo nel tuo caso) postare l'immagine che si ottine da "visualizza per la stampa"
poi nella tabella sarebbe meglio che avesse per ogni record un campo id primary key aotoincrement e non mi sembra che codice lo sia
 
ciao
piccolo consiglio:
per avere i dati migliori al posto dell'immagine che hai postato sarebbe meglio (e non vale solo nel tuo caso) postare l'immagine che si ottine da "visualizza per la stampa"
poi nella tabella sarebbe meglio che avesse per ogni record un campo id primary key aotoincrement e non mi sembra che codice lo sia

Ho impostato proprio ieri, ho impostato codice come primary key e auto-increment ;)
Ho provato come dicevo prima sul controllo immagine a impostare sulla query INSERT TO tutti i record a " " tranne il codice e l'immagine, e mi funziona perfettamente.
Come potrei aggiungere il tutto al controllo degli altri dati della form? agli input text, select...ecc...praticamente dovrei unire i controlli text con il controllo dell'immagine, in modo che in un unico pulsante di invia dati li carichi sul database. Oppure aggiungere un pulsante "carica immagine" che quando schiacciato visualizza l'immagine uppata e poi con il pulsante invia carichi il tutto sul db.
 

Discussioni simili