Ciao,
Mi trovo con un problema e non so se è causato dal db progettato male oppure è risolvibile con del codice php.
ho 2 tabelle mysql
tbl_product: ( pd_id, cat_id, pd_name, pd_description)
tbl_images: ( image_id, pd_id, pd_image, pd_thumbnail)
Quando creo un prodotto, vado a popolare la tabella prodotti con i dati necessari e nella tabella immagini inserisco le immagini relative al prodotto.
Poi, nella pagina php, visualizzo i prodotti e immagini, in base alla categoria di appartenenza.
Per fare questo, eseguo 2 query: una per estrarre i prodotti per categoria e l'altra per le immagini per prodotto.
e questo funziona tutto a meraviglia...Codice PHP:
$query ="SELECT * FROM tbl_product WHERE cat_id = {$_GET['cat_id']}";
$result = dbQuery($query) or die(mysql_error());
while($row = dbFetchAssoc($result)) {
extract($row);
echo $pd_name .... $pd_description // formatto i dati del prodotto
$query_img ="SELECT * FROM tbl_images WHERE pd_id = {$row['pd_id']}";
$result_img = dbQuery($query_img) or die(mysql_error());
while($img = dbFetchAssoc($result_img)) {
extract($img);
$pd_thumbnail = $img['pd_thumbnail'];
if ($pd_thumbnail) {
$pd_image = "http://localhost/images/product/".$pd_image;
$pd_thumbnail = "http://localhost/images/product/".$pd_thumbnail;
} else {
$pd_thumbnail = "http://localhost/images/no-image-big.png";
}
?>
<a href="<?php echo $pd_image; ?>" rel="lightbox">
[img]<?php echo $pd_thumbnail; ?>[/img]
<?php
}
}
Qual'è il problema?
Quando inserisco un nuovo prodotto e NON inserisco immagini, nella tabella "tbl_images" non c'è alcun riferimento al prodotto, quindi in fase di visualizzazione, se il prodotto è senza immagini non riesco a caricare la immagine di default "immagine non disponibile.jpg" perchè il ciclo che eseguo mi estrae solo quello che c'è.
Quindi dovrei fare un confronto tra tabelle e vedere se il l'id del prodotto ( pd_id) è presente in entrambe le tabelle. Se è presente stampami le immagini, altrimenti caricami la img di default.
Da qui, la domanda: é un problema di query, oppure è risolvibile con php?
Spero di essere stato chiaro.
Grazie