Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Problema estrazione dati php/mysql

    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.

    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 
                                        
      
    }
                                       
       }
    e questo funziona tutto a meraviglia...
    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

  2. #2
    non gli potresti semplicemente dire che se pd_image (preso da db) è vuoto allora carica l'immagine di default?

  3. #3
    Se non inserisco delle immagini, nella tabella immagini, non ho nulla. L'unico diciamo "appiglio" sarebbe l'id del prodotto "pd_id". Cioè se l'id_prodotto ( cioè il dato), che relaziona le 2 tabelle, è presente in entrambe le tabelle allora carica le immagini relative, altrimenti carica l'immagine di default. Ma questo controllo, lo dovrei fare nella query, oppure basta php? se si come?

  4. #4
    fai la query sulla tabella immagini, se hai 0 risultati (quindi non esiste) allora carichi l'immagine di default.

    dovrebbe bastare un mysql_num_rows sulla risposta della query

  5. #5
    Codice PHP:
    $query_img ="SELECT * FROM tbl_images WHERE pd_id = {$row['pd_id']}"
    $result_img dbQuery($query_img) or die(mysql_error()); 
    $num_righe mysql_num_rows($result_img); 
    echo 
    "$num_righe Righe\n"

    while(
    $img dbFetchAssoc($result_img)) { 
    extract($img); 
    if (
    $num_righe == 0) { 
    echo
    " no img"
    } else { 
    echo
    " si img"


    Perchè se $num_righe == 0 non mi stampa niente? Cioè "no img" ?

  6. #6
    Originariamente inviato da blur
    Codice PHP:
    $query_img ="SELECT * FROM tbl_images WHERE pd_id = {$row['pd_id']}"
    $result_img dbQuery($query_img) or die(mysql_error()); 
    $num_righe mysql_num_rows($result_img); 
    echo 
    "$num_righe Righe\n"

    while(
    $img dbFetchAssoc($result_img)) { 
    extract($img); 
    if (
    $num_righe == 0) { 
    echo
    " no img"
    } else { 
    echo
    " si img"


    Perchè se $num_righe == 0 non mi stampa niente? Cioè "no img" ?
    Forse perchè se il resultset è vuoto non entra nel while ?!
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7
    Originariamente inviato da satifal
    Forse perchè se il resultset è vuoto non entra nel while ?!
    Ah gia'! il while va dentro all'if...

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.