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

    Estrarre dati da un database in base a 2 campi

    Buongiorno, mi sono appena iscritto a questo forum.
    E' un p� di giorni che cerco, ma senza trovare una soluzione.

    Ho una tabella GOMME in un database, i campi sono:
    id, id_gomma, data, posizione_gomma, n_gomma, tipo_gomma, giri_gomma, circuito, gomma_finita

    L'id_gomma indica il proprietario della gomma (chi fa l'accesso al sito per intendersi), la data � la data di utilizzo della gomma, la posizione gomma � anteriore o posteriore, il n. gomma � il numero gomma anteriore o posteriore (1, poi la successiva gomma nuova sar� 2 ecc, facendo sempre riferimento alla posizione gomma), il tipo gomma � la marca e il modello e la misura, i giri gomma sono i giri che ha fatto quella gomma che vengono aggiunti, ed il circuito � dove � stata utilizzata.

    Per una gomma (tipo Anteriore 1) ci possono essere pi� record in quanto pu� essere utilizzata una volta il giorno 10/12/2020 al Mugello per 5 giri per esempio ed un'altra volta pu� essere utilizzata il giorno 12/12/2020 a Jerez per 10 giri.Vorrei creare dei blocchi (div) per ogni posizione_gomma e n_gomma, con sotto una tabella con DATA, TIPO GOMMA, GIRI GOMMA, CIRCUITO per tutte le volte che � stata utilizzata.

    Il codice che ho scritto � il seguente:

    require_once 'database.php';

    $query = $pdo->query("SELECT id, id_gomma, data, posizione_gomma, n_gomma, tipo_gomma, giri_gomma, circuito FROM gomme WHERE id_gomma = '$session_user' && posizione_gomma = '$posizione_gomma' && gomma_finita = 'NO' GROUP BY n_gomma");


    if($query->rowCount() <=0){

    echo "<h4>Non hai gomme salvate</h4>";

    }else{



    while($row = $query->fetch(PDO::FETCH_ASSOC)){


    ?>



    <div class="cards">


    <div class="cards_dati">

    <h2> <?php echo $row['posizione_gomma'] ?> N. <?php echo $row['n_gomma'] ?></h2>
    <h3><?php echo $row['tipo_gomma'] ?></h3>


    <table>
    <tr>
    <th>Data</th>
    <th>Tipo gomma</th>
    <th>Giri gomma</th>
    <th>Circuito</th>
    </tr>

    <?php

    foreach($row['posizione_gomma'] as $value){





    ?>

    <tr>
    <td><?php echo $row['data'] ?></td>
    <td><?php echo $row['tipo_gomma'] ?></td>
    <td><?php echo $row['giri_gomma'] ?></td>
    <td><?php echo $row['circuito'] ?></td>
    </tr>





    <?php
    }


    ?>






    </table>


    </div>


    <!-- pulsante aggiungi giri -->
    <form action="aggiungi_giri_gomma.php" method="post">
    <input type="hidden" name="id" value="<?php echo $row['id'] ?>">
    <button type="submit" name="submit" class="button">Aggiungi giri</button>
    </form>

    <!-- pulsante gomme finita -->
    <form action="gomma_finita.php" method="post">
    <input type="hidden" name="id" value="<?php echo $row['id'] ?>">
    <button type="submit" name="submit" class="button">Gomma finita</button>
    </form>


    </div>



    <?php

    }
    }



    Con questo codice mi crea si dei div (cards) per ogni gomma (Anteriore 1 ecc per esempio), ma mi scrive solo un record.

    Sapete aiutarmi per scrivere un codice per far apparire anche gli altri?

    Grazie mille per la disponibilit�

  2. #2
    ma se esegui la query da sola, quanti risultati produce? per capire se è un problema di query o di visualizzazione

  3. #3
    Stampa tanti div per quante gomme ci sono giustamente, ma dentro ogni gomma stampa solo un record (il primo che trova), anche se per quella gomma ci sono più record.schermata database.jpg

    Ho inserito foto del database dove si vede che ci sono 2 record con la stessa gomma ANTERIORE 14.

    Ho tolto il foreach che lo avevo inserito come prova, ma non va, quindi il codice è senza il foreach.

  4. #4
    prova a togliere il GROUP BY(), tanto non usi nessuna funzione aggregata. Se il GROUP BY() l'hai messo per avere un ordine, usare la ORDER BY()

  5. #5
    Ho provato a sostituire GROUP BY con ORDER BY ed adesso stampa tutti i record, ma invece di aggiungere il secondo record di una gomma nello stesso div, crea un nuovo div. Vedi allegato.schermata.jpg

    Vorrei che il record del 25/2/23 con 35 giri lo scrivesse sotto quello del 17/2/23 nello stesso div.

  6. #6
    a sto punto non è più questione di db, ma di php. Fatti spostare nella sezione giusta

  7. #7
    Ok grazie mille per la disponibilità.
    Ma scusa la domanda, come faccio a farmi spostare nell'altra sezione?

  8. #8
    Quote Originariamente inviata da toppino16 Visualizza il messaggio
    Ma scusa la domanda, come faccio a farmi spostare nell'altra sezione?
    lo chiedi a un moderatore?

  9. #9
    Avendo messo il ciclo FUORI dalla sezione <div class="cards">, è ovvio che per ogni riga ti crei una nuova card!

    Inoltre, essendo nel tuo caso <?php echo $row['posizione_gomma'] ?> N. <?php echo $row['n_gomma'] ?> il "discriminante" che identifica una gomma, non è facile, seppur fattibilissimo, adattare il tuo codice per fare ciò che ti serve.
    Il modo migliore, per quanto non ottimale, è fare DUE query. Una per tirare fuori il discriminante e costruire il div principale, un'altra per recuperare tutti i record associati e costruire i div di dettaglio

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.