Gestione portfolio / categorie con relazione molti a molti

Fabio Grasso

Nuovo Utente
6 Nov 2014
26
0
0
35
www.grassofabio.com
Buona serata ho un problema con la progettazione di un database relazionale(molti a molti) in pratica dovrei gestire un classico portfolio con le rispettive categorie come in questo esempio http://shapebootstrap.net/demo/html/corlate/portfolio.html#.

Ho creato una tabella portfolio con all'interno i rispettivi campi: id, nome, immagine e una tabella categorie con id e nome.
Infine ho creato una terza tabella portfolio_categorie con id.portfolio e id.categorie .

In seguito ho creato un form con i seguenti input text: nome, immagine, ed ho recuperato i valori delle categorie dalla tabella categorie inserendoli nelle rispettive checkbox.

Il mio scopo è quello di salvare: il nome, l'immagine e le categorie, ma non so come salvare il tutto nella tabella portfolio_categorie.

Avete dei suggerimenti?
 
ciao
se non ho capito male il problema, secondo me hai fatto una teballe in più
la tabella portfolio_categorie non dovrebbe servirti
fatta la tabella categorie
Codice:
id
nome_categoria
dovrebbe bastarti aggiungere nella tabella portfolio il campo che lega l'immagine alla categoria es.
Codice:
id
nome
immagine
id_categoria
poi cosa intendi per salvare l'immagine? il nome del file? e poi caricare l'immagine in una cartella?
 
Ciao Borgo Italia;
dovrebbe bastarti aggiungere nella tabella portfolio il campo che lega l'immagine alla categoria es.
Codice:
id
nome
immagine
id_categoria
Ma in questo caso sarebbe una relazione 1 a molti giusto?
A me servirebbe che ogni lavoro può appartenere a più categorie ed ogni categoria può contenere più lavori,quindi se non erro dovrebbe essere una relazione molti a molti.

poi cosa intendi per salvare l'immagine? il nome del file? e poi caricare l'immagine in una cartella?
Esattamente
 
A me servirebbe che ogni lavoro può appartenere a più categorie ed ogni categoria può contenere più lavori,quindi se non erro dovrebbe essere una relazione molti a molti.
Esatto, se ogni prodotto può appartenere a più categorie allora devi fare un'altra tabella (chiamata tabella di relazione).

Quindi avrai:
PRODOTTI: id, nome, descrizione, immagine
PORTFOLIO_CATEGORIE: id_prodotto, id_categoria
CATEGORIA: id, nome, descrizione

Spero di non aver dimenticato nulla :)
 
Grazie,quindi con le tabelle ci siamo :) ora il mio problema nasce nel momento in cui devo salvare più categorie contemporaneamente.

Purtroppo è la prima volta che affronto questo tipo di relazione(molti a molti) e fin quando si tratta di salvare un singolo valore per volta ci riesco tranquillamente,ma nel caso di più checkbox selezionate(che corrispondono alle categorie) non so come gestirle...
 
Bisogna inserire una tupla (una riga) della tabella di relazione PORTFOLIO_CATEGORIE per ogni categoria selezionata e quindi per ogni check box spuntata.
 
ciao
avevo capito male e semper che non abbia capito ancora male
prova a vedere questo schema
PHP:
<?php
if(isset($_POST['invia'])){
	//dati connessione
	//leggi i valori dal form
	$nome=$_POST['invia'];
	//qui farai il caricamento dell'immagine
	$immagine=$_FILES['file']['name'];
	//...
	//e poi l'insert dei dati in tabella
	$sql_1="INSERT INTO portfolio (nome, immagine) VALUES ('$nome','$immagine')";
	$ris=mysqli_query($conn, $sql_1);
	//ESTRAI IL VALORE DELL'ID APPENA INSERITO
	$ultimo=mysqli_insert_id($ris);
	//cicli e inserisci i valori provenienti dalle check
	foreach($_POST['cat'] as $id_cat){
		$sql_2="INSERT INTO PORTFOLIO_CATEGORIE (id_immagime, id_categoria) VALUES ($ultimo,$id_cat)";
		$ris=mysqli_query($conn, $sql_2);
	}
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
<p>nome <input name="nome" type="text" id="nome">
<br> file <input type="file" name="file" id="file"></p>
<p>categoria:<br>
<?php
//select sulla tabella delle categorie
//....
//mostri le categorie esistenti
while($c=mysql_fetch_assoc($r)){
	echo "<input name=\"cat[]\" type=\"checkbox\" id=\"cat\" value=\"".$c['id']."\">".$c['categoria']."<br>";
}
?>
<p>
<input name="invia" type="submit" id="invia" value="invia">
</form>
quarda che però ho tralasciato sia il caricamento dell'immagine e tutti gli oppotuni NECESSARI controlli
 
Ottimo,grazie al vostro aiuto finalmente ho capito come gestire una relazione molti a molti(nel mio caso lavori/categorie) ed
ho anche gestito l'aggiornamento e la cancellazione sia dei lavori che delle categorie :)

Ci tengo a fare i complimenti al forum mrwebmaster dove ci sono persone preparate e sempre disponibili ad aiutare il prossimo.
 

Discussioni simili