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

    Help con impaginazione dati da mysql

    Ciao a tutti,

    mi sono appena registrato e questo è il mio primo post. Ho cercato in tutto il forum e non ho trovato quello che fa per me. Premetto che sono un programmatore principiante quindi vi chiedo scusa per eventuali domande stupide ...

    Vengo al mio problema:

    ho creato una pagina php con una tabella che viene popolata con dati presi dal db mysql.

    esempio dei dati della tabella che uso:
    name, weightclass, team, belt, club

    codice:
    Codice PHP:
    <? foreach ($rows as $row) { ?> 
    <tr> <td><?=$row['name']?></td> 
    <td><?=$row['weightclass']?></td> 
    <td><?=$row['team']?></td> 
    <td><?=$row['belt']?></td> 
    <td><?=$row['club']?></td> 
    </tr> 
    <? ?>
    la query è in un'altra pagina:
    Codice PHP:
    $rs $this->database->query("SELECT * FROM pl_event_registration WHERE deleted=0 AND status=1 ORDER BY ".$order);
    $rows $this->database->getrows($rs);
    include(
    "templates/registrations.php"); 
    Questo mi funziona bene. Tutti i dati vengono rappresentati riga per riga in modo corretto.
    Però, per una migliore comprensione del risultato, vorrei aggiungere una riga vuota di spazio quando le categorie peso ("weightclass" nel db) sono diverse.

    vorrei ottenere questo insomma:
    Name - Weightclass - Team - Belt - Club
    Mario Rossi - 55kg - teamrosso - gialla - club1
    Carlo Verdi - 55 kg - teamblu - nera - club2
    Tizio Caio - 55 kg - teamnero - blu - club3

    Aldo Mazzo - 65 kg - teamrosa - nera - club4
    Sandro Boz - 65 kg - teamdark - blu - club5

    Ho provato ad effettuare differenti query e poi richiamare i dati in diverse righe della tabella ma in casi di categorie vuote mi si crea troppo spazio in mezzo. E poi se vengono create nuove categorie, dovrei aggiungere la nuova query e il nuovo foreach nella tabella.

    Spero di essermi spiegato in modo abbastanza chiaro.

    Grazie a tutti per le eventuali risposte.

  2. #2
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    lavora sull'output.

    quanto fai il tuo ciclo su $rows per mostrare le righe, fai qualcosa del genere:

    Codice PHP:
    <? foreach ($rows as $row) { 
    if((int)
    $row['weightclass'] > $tmpw){//controlli se il peso della riga corrente e' maggiore di quello precedente, se si allora mostri una riga vuota
    ?>
    <tr><td colspan="4"></td></tr>
    <?
    }
    $tmpw = (int)$row['weightclass'];//salvi il peso in una variabile temporanea
    //e poi prosegui come prima
    ?>
    <tr> <td><?=$row['name']?></td>
    <td><?=$row['weightclass']?></td>
    <td><?=$row['team']?></td>
    <td><?=$row['belt']?></td>
    <td><?=$row['club']?></td>
    </tr>
    <? ?>

  3. #3
    grazie mille bubi,

    questo if dovrebbe andare benissimo, però come lo adatto ai miei valori?

    weightclass non sono numeri interi ma stringhe tipo: "Boys U18 -55 Kg"

    quindi la lista dovrebbe presentare uno spazio solo quando la weightclass è diversa.

  4. #4
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Beh, l'idea e' la stessa, solo che fai il confronto non sulla grandezza dell'intero, ma sull'uguaglianza tra la tringa corrente e quella precedente.

    quindi non trasformi i valori in int da nessuna parte, e fai

    if(isset($tmpw) && $row['weightclass'] != $tmpw){...

    in questo modo ogni riga successiva, se e' uguale alla precendete, funziona come prima, se invece e' diversa, stampa una riga bianca, e poi va avanti.

  5. #5
    Funziona perfettamente!
    Grazie infinite bubi !!!


    Codice corretto:
    Codice PHP:
    <? foreach ($rows as $row) { 
    if(isset(
    $tmpw) && $row['weightclass'] != $tmpw){
    ?> 
    <tr><td colspan="4"></td></tr> 
    <? 

    $tmpw $row['weightclass'];//salvi la categoria peso in una variabile temporanea 
    //e poi prosegui come prima 
    ?>
                              <tr> 
                                <td><?=$row['name']?></td>
                                <td><?=$row['weightclass']?></td>
                                <td><?=$row['class']?></td>
                                <td><?=$row['belt']?></td>
                                <td><?=$row['club']?></td>
                                <td><?=$row['team']?></td>
                                <td><?=$row['country']?></td>
                              </tr>
    <? ?>

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.