Non riesco a stampare tutte le immagini con un ciclo while nidificato

di il
4 risposte

Non riesco a stampare tutte le immagini con un ciclo while nidificato

Heila!

Ho questo problema:
Ottenuto l'ID della categoria tramite $ _GET, desidero stampare le immagini che ho per ciascun prodotto (per quella categoria).
Ad esempio, ho 2 prodotti e 2 immagini per ogni prodotto.

Problema riscontrato: con questo codice mi stampa solo le immagini per il primo prodotto e non per il secondo. Perché? Grazie!
$id=17; // un ID test che arriverebbe da querystring

  $prod = "SELECT pd_id FROM product WHERE cat_id = ?";
   $stmt = $con->prepare($prod);
     $stmt->bindParam(1, $id);
       $stmt->execute();
         $num = $stmt->rowCount();

    if($num>0)
        {
            while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
               extract($row);


  $immagini = "SELECT pd_image FROM pd_images WHERE pd_id = ?";
   $stmt = $con->prepare($immagini);
     $stmt->bindParam(1, $pd_id);
      $stmt->execute();

            while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
               extract($row);
?>                                  
                                        
    <img src="<?php echo $home_url; ?>images/product/<?php echo $pd_image; ?>" class="img-fluid border-radius-0" alt="">
                                        
                                    
<?php 
        }
         } 
          }else { ?>
            <div class="col-lg-12 text-center">
                                <h6>There's no products for this category</h6>
                                     <i class="rt-icon2-user"></i>
                                 <div class="divider-10 d-none d-xl-block"></div>
                            </div>                          
<?php } ?>

4 Risposte

  • Re: Non riesco a stampare tutte le immagini con un ciclo while nidificato

    Ciao kush benvenuto al forum.
    Con il cursore che risultato ottieni se supportato da driven_option?
    function readDataForwards($dbh) {
    // $pd_id here
      $sql = 'SELECT pd_image FROM pd_images WHERE pd_id = ?';
      try {
        $stmt = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
        $stnt->bindParam(1,  $pd_id);
        $stmt->execute();
        while ($row = $stmt->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT)) {
          $data = $row["pd_image"] . "\n";
          print $data;
        }
        $stmt = null;
      }
      catch (PDOException $e) {
        print $e->getMessage();
      }
    }
    For most databases, PDOStatement::rowCount() does not return the number of rows affected by a SELECT statement. Instead, use PDO::query() to issue a SELECT COUNT(*) statement with the same predicates as your intended SELECT statement, then use PDOStatement::fetchColumn() to retrieve the number of matching rows. Codice portatile.
  • Re: Non riesco a stampare tutte le immagini con un ciclo while nidificato

    Ciao Hormus,

    ho provato a togliere il rowCount() ma il risultato non cambia.
    Il codice che hai postato a cosa servirebbe? Non ho capito come implementarlo.
  • Re: Non riesco a stampare tutte le immagini con un ciclo while nidificato

    Significa crea la variabile $pd_id dove c'è il commento e poi chiama la funzione readDataForwards($conn);
    const DB_DRIVER = "mysql";
    const DB_HOST = "localhost";
    const DB_NAME = "my_db_name";
    const DB_LOGIN = "root";
    const DB_PASS = "root"; //OpenServer.
    
    $connectionString = DB_DRIVER.':host='.DB_HOST.';dbname='.DB_NAME;
    $conn = new PDO($connectionString, DB_LOGIN, DB_PASS);
  • Re: Non riesco a stampare tutte le immagini con un ciclo while nidificato

    Si questo lo avevo capito.
    In ogni caso non stampa nulla a video.
    Ormai ho scelto una strada diversa. Grazie lo stesso
Devi accedere o registrarti per scrivere nel forum
4 risposte