Insert di immagini e array in un database

mediasteno

Utente Attivo
25 Gen 2010
120
0
0
Ho realizzato uno script che mi permette di inserire in un database i dati di strutture ricettive recuperate da un form. In allegato l'intero script. In questo script ho alcuni problemi:
1. riguarda le immagini.
La parte di codice è:
if(!is_uploaded_file($img))
{echo "Non &egrave; stata inserita nessuna immagine<br />";}
else { if($size > $max_size) {echo "Il file &egrave; troppo grande";}
else { list($width, $height, $type, $attr) = getimagesize($img); //recupero le dimensioni dell'immagine originale
$thumb = imagecreatetruecolor(120, 90) or die("Impossibile creare la miniatura"); //creo la versione 120x90 dell'immagine
$source = @imagecreatefromjpeg ($img) or die ("L'immagine deve essere in jpeg ".mysql_error());
imagecopyresized($thumb, $source, 0, 0, 0, 0, 120, 90, $width, $height) or die("Impossibile ridimensionare l'immagine");
$img_min = imagejpeg($thumb, $img, 75);
}
}

Recupero l'immagine allegata dall'utente. controllo se è stato effettuato l'upload, se non è stata allegata l'immagine ho il messaggio: "Non è stata inserita nessuna immagine" e fin qui tutto ok. Il problema nasce quando l'immagine c'è ma è di grosse dimensioni. In tal caso voglio che verifichi che l'immagine è più grande e mi stampa il messaggio "Il file è troppo grande". Ma non lo fa, semplicemente mi dà il messaggio "Non è stata inserita nessuna immagine" e a questo punto credo che si blocca perchè non mi inserisce la struttura nel database.

2. Il secondo problema riguarda l'ultima parte del codice. Dopo che ho inserito la struttura ricettiva nella tabella del database delle strutture ho necessità di recuperare l'id dell'ultima struttura inserita, recuperare le categorie selezionate nel form tramite checkbox ed inserire questi valori, tramite INSERT, nella tabella categorie_strutture. (devono essere inserite tante righe quante sono le categorie selezionate)
Da tutorial cercati in rete sono riuscita a costruire la seguente parte del codice:
$sql_strcat = "INSERT INTO categorie_strutture (id_strutture, categoria) VALUES ";

foreach ($categoria as $value) {
$sql_strcat .= "('$id_struttura', '$value') ,";
}

if (strlen($sql_strcat)>0) { // E' necessario eliminare l'ultima virgola inserita nel FOREACH
$sql_strcat = substr($sql_strcat , 0, strlen($sql_strcat )-1);
}

ma non ottengo alcun risultato, ossia non sono inserite le categorie con l'id nel database.

Sono alle prime armi con il php posso anche aver fatto degli errori banali.:D
Spero che qualcuno mi illumini :book:
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao,
intanto per l'if.
prova con l'elseif:

PHP:
if(!is_uploaded_file($img)){
	echo "Non &egrave; stata inserita nessuna immagine<br />";
}elseif($size > $max_size){echo "Il file &egrave; troppo grande";
}else{
	list($width, $height, $type, $attr) = getimagesize($img); //recupero le dimensioni dell'immagine originale
	$thumb = imagecreatetruecolor(120, 90) or die("Impossibile creare la miniatura"); //creo la versione 120x90 dell'immagine
	$source = @imagecreatefromjpeg ($img) or die ("L'immagine deve essere in jpeg ".mysql_error());
	imagecopyresized($thumb, $source, 0, 0, 0, 0, 120, 90, $width, $height) or die("Impossibile ridimensionare l'immagine");
	$img_min = imagejpeg($thumb, $img, 75);
}

per il 2° problema guardo e poi posto, però dovresti specificare meglio
 

mediasteno

Utente Attivo
25 Gen 2010
120
0
0
Ho inserito in allegato l'intero script (prima avevo dimenticato di farlo). Per quanto riguarda la prima parte del problema ho inserito elseif al posto di if ma non mi risolve la cosa. L'unica differenza è che questa volta la struttura la inserisce nel database ma senza immagine. Ho pensato di impostare che anche quando l'immagine è grande, la ridimensiona e poi la inserisce nel database. E ho modificato la parte di script in questo modo:
if(is_uploaded_file($img)) {list($width, $height, $type, $attr) = getimagesize($img); //recupero le dimensioni dell'immagine originale
$thumb = imagecreatetruecolor(120, 90) or die("Impossibile creare la miniatura"); //creo la versione 120x90 dell'immagine
$source = @imagecreatefromjpeg ($img) or die ("L'immagine deve essere in jpeg ".mysql_error());
imagecopyresized($thumb, $source, 0, 0, 0, 0, 120, 90, $width, $height) or die("Impossibile ridimensionare l'immagine");
$img_min = imagejpeg($thumb, $img, 75);
}else {echo "Non &egrave; stata inserita nessuna immagine<br />";}

ma anche in questo caso quando l'immagine è grande non mi inserisce l'immagine.

Per quanto riguarda il secondo problema. C'è un modulo che l'utente deve compilare per inserire la struttura e per quanto riguarda le categorie ha delle checkbox da selezionare

<label for="categoria">scegli la categoria di appartenenza</label><br />
albergo <input type="checkbox" name="categoria[]" value="albergo" />
agriturismo <input type="checkbox" name="categoria[]" value="agriturismo" />
bed &amp; breakfast <input type="checkbox" name="categoria[]" value="bedbreakfast" />
ristorante <input type="checkbox" name="categoria[]" value="ristorante" />
trattoria <input type="checkbox" name="categoria[]" value="trattoria" />
pizzeria <input type="checkbox" name="categoria[]" value="pizzeria" />
pub <input type="checkbox" name="categoria[]" value="pub" />
discoteca <input type="checkbox" name="categoria[]" value="discoteca" />
campeggio <input type="checkbox" name="categoria[]" value="campeggio" />
villaggio <input type="checkbox" name="categoria[]" value="villaggio" />
casa vacanza <input type="checkbox" name="categoria[]" value="casavacanza" />

Le categorie vanno inserite in una tabella diversa legata all'id della struttura. Per fare ciò ho bisogno di recuperare l'id della struttura inserita, che recupero tramite
$id_struttura=mysql_insert_id();
e devo recuperare le varie categorie selezionate di modo tale che inserisco nella tabella categorie_strutture tanti record che abbiano l'id della ultima struttura inserita associate alle categorie selezionate, esempio:
001 albergo
001 ristorante
001 pizzeria
Il mio problema è come faccio a creare questi record?
 

Allegati

  • inserimento_struttura.zip
    1,7 KB · Visite: 266

mediasteno

Utente Attivo
25 Gen 2010
120
0
0
Per quanto riguarda le foto, ho trovato dove era l'inghippo. Era nel form avevo inserito
<input type="hidden" name="MAX_FILE_SIZE" value="300000" />
probabilmente mi limitava la grandezza dell'immagine. Tolto questo ho quello che desideravo. Il problema ora sta nell'estrarre l'immagine dal database. Ora do un'occhiata in giro e cerco di risolvermi la questione. Vedo anche i link da te segnalati. Grazie
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
dimmi se ho capito bene
tu vuoi fare una tabella categoria_strutture in cui (per es) l'albergo Pinco ecc.. con id_strutture = 727
ha selezionato: albergo ristorante e pizzeria
risulti
nel campo id_strutture 727
e nel campo categora albergo ristorante pizzeria (a dopo il separatore)

è giusto?

p.s.
inserisci le immagini nel db con un campo blob?
se sono tante (e grandi) è meglio inserire le immagini in una cartella e nel db mettere il nome
 

mediasteno

Utente Attivo
25 Gen 2010
120
0
0
Non esattamente io pensavo a crearmi tre record
id_struttura categoria
1 727 albergo
2 727 pizzeria
3 727 ristorante

dato che successivamente devo realizzare delle pagine che permettano di visualizzare solo tutti gli alberghi, solo tutte le pizzerie, solo tutti i ristoranti.
Comunque è possibile anche la tua soluzione, successivamente posso fare una ricerca o usando %% o con una ricerca fulltext. Un problema alla volta.

Per le immagini per ora, seguendo uno degli articoli indicati, mi sto creando una tabella a parte per le immagini, e le collego tramite l'id alla struttura. Per ora seguo questa via, se ho problemi vedo la soluzione alternativa.
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
se vuoi crerti tre record devi fare tre insert e quindi correggere lo script in questa maniera

PHP:
//........
foreach ($categoria as $value) {
//e metteri anche in sovrappiù questo controll
//può non servire, ma non si sa mai
	if($value != ""){
	 	$sql_strcat = "INSERT INTO categorie_strutture (id_strutture, categoria) VALUES ('$id_struttura', '$value') ";
	 	mysql_query($sql_strcat);
	 }
}
//......

in qusto modo ottieni 3 record
1 727 albergo
2 727 pizzeria
3 727 ristorante
c'è solo un problema, se l'utente rientra e sbaglia puo trovarti
1 727 albergo
2 727 pizzeria
3 727 ristorante
...........
10 727 ristorante
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao sono sempre io
rispetto a quel problema che ti avevo accennato un metodo per risolverlo potrebbe essere questo

PHP:
//........ 
foreach ($categoria as $value) { 
//e metteri anche in sovrappiù questo controll 
//può non servire, ma non si sa mai 
    if($value != ""){
		$cerca=mysql_query("SELECT * FROM categorie_strutture WHERE id_strutture='$id_struttura' AND categoria='$value'");
		if(mysql_num_rows($cerca)==0){//guardo se esiste o no, se 0 non esiste
        	$sql_strcat = "INSERT INTO categorie_strutture (id_strutture, categoria) VALUES ('$id_struttura', '$value') "; 
        	mysql_query($sql_strcat);
		}//fine if esiste
     } //fine if non vuoto
}//fine foreach
//......

in questo modo non ti inserisce un doppione
 
Discussioni simili
Autore Titolo Forum Risposte Data
trattorino [PHP] problema entrata immagini insert PHP 1
F insert immagini database PHP 2
P Access: recuperare Indice dopo un insert into MS Access 0
R INSERT INTO tabella non funziona Classic ASP 2
Z problemi con foreach insert into PHP 10
Y INSERT INTO PHP 0
M più insert tramite while loop PHP 1
A PROBLEMA: insert mysqli con dati Tagsinput Presentati al Forum 0
G Insert into select - Aiuto MySQL 0
L Insert php sql da una form multipla PHP 6
A [PHP] Problema query insert [RISOLTO] PHP 14
elpirata [RISOLTO][Mysql] Problema insert valori apostrofati MySQL 1
P [PHP] INSERT e UPDATE PHP 1
D [ASP] Mysql insert e update Classic ASP 2
M [Javascript] Verifica calcolo prima di fare insert Javascript 13
Monital [PHP] Insert into non inserisce tutti i dati PHP 1
C [Visual Basic] Errore INSERT su DB MySQL (VB.Net) Visual Basic 4
3_g errore con mysql insert in PDO PHP 29
Merlina3377 php insert dati su tabella sql PHP 9
T [PHP] impedire un doppio INSERT INTO dopo reload della pagina PHP 3
daniele8808 Insert a converted php array in a js object PHP 4
P [MySQL] Query su DB 1 e Insert su DB 2 PHP 11
Laskot Query al DB con php (INSERT) PHP 2
P [PHP] merge di 2 tabelle e insert su terza tabella PHP 15
giancadeejay [PHP] INSERT into tabella tramite scelta checkbox PHP 0
E [PHP] problema insert query PHP 9
O errore INSERT con oggeto datetime MySQL 2
A insert ed upload PHP 1
E Problemi auto increment con query Insert Into Select MySQL 2
A Insert multiple a partire da form html PHP 3
stellare21 insert con Sqlite e PHP PHP 4
Marco_88 Aiuto con istruzione INSERT Database 8
A Insert non inserirsce tutti i valori MySQL 11
MarcoGrazia [PDO] insert che non inserisce e non da errori PHP 1
MarcoGrazia Insert into che da errore: numero di parametri non validi.... MySQL 7
S Insert into....on duplicate key update MySQL 2
M Problemi con la insert PHP 1
I Insert con select da tabella e valori predefiniti MySQL 2
A Insert da ciclo for PHP 4
Monital [risolto] insert into if select non presente MySQL 7
G Inserimento loop in una INSERT query in PHP e MySQL PHP 2
S INSERT e UPDATE non funzionano PHP 1
H [RISOLTO]Problema connessione + insert mysqli PHP 10
L insert into da query select PHP 0
S Tempi per INSERT MySQL 7
A insert funziona in server locale ma non in remoto MySQL 7
Emix Problema Insert... PHP 10
C Aiuto INSERT INTO... ON DUPLICATE KEY UPDATE PHP 1
M Sicurezza dati form per insert e select in database PHP 11
E Problema con INSERT INTO Classic ASP 2

Discussioni simili