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

    Mostrare più volte il contenuto di una tabella

    Ciao
    Sto provando a fare uno script che agisca su due tabelle che ho nel mio database.
    Per semplificare diciamo che una è wp_menu (id,nome) e l'altra è wp_page(id,nome,menu; dove menu indica a quale dei menu dell'altra tabella appartiene la pagina)

    Mi sto muovendo passo passo, ho cominciato con la visualizzazione del nome campo di wp_menu, e fin qua facile.
    A questo punto ho detto visualizziamo tutti i campi nome (di wp_page) per ogni valore del nome di wp_menu inserendo un'altro while al'interno del primo e dopo inseriamo un if per nn visualizzare quelli errati.

    Ma qua casca tutto, dopo aver eseguito la visualizzazione di tutti i campi di wp_page nn li ripete la seconda volta e la terza ecc.

    Codice PHP:
    $db=mysql_connect($host,$user,$pass) or die ("Errore durante la connessione al database");
    $sql="SELECT * FROM wp_menu ORDER BY id";
    $sqll="SELECT * FROM wp_page";
    $result=mysql_db_query("Sql16243_1",$sql,$db);
    $resultl=mysql_db_query("Sql16243_1",$sqll,$db);
     while (
    $row=mysql_fetch_array($result))
        {
        print(
    htmlentities($row["nome"]));
        echo
    "
    "
    ;
            while (
    $rowl=mysql_fetch_array($resultl))
            {
            echo
    "-";
            print(
    htmlentities($rowl["titolo"]));
            echo
    "
    "
    ;
            }
        
        }

    mysql_close();
    ?> 
    La visualizzazione riporta:
    menu1
    -page1
    -page2
    -page3
    menu2
    menu3
    menu4

    questo è il codice, il problema penso di averlo capito, ovvero dopo aver finito la visualizzazione di tutte le righe nn lo ripete di nuovo, come posso risolvere questo problema?

    Grazie mille per l'aiuto

  2. #2
    Ed e' giusto che faccia cosi'. quando entri nel secondo while (quello interno) questo estrae tutto finche' non riceve false da mysql_fetch_array. Dopo di che torna al primo, ma poiche' il secondo e' false, skippa e completa fin che anche il primo ricevera' il false.

    Bisognerebbe sapere che vuoi fare. Se devi stampare sempre lo stesso contenuto della seconda query, potresti muovere il puntatore di mysql_fetch_array all'inizio dei dati (della seconda query) con mysql_data_seek.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    codice:
    |tabella wp_menu |
    +-----+----------+
    | id  | nome     |
    +-----+----------+
    | 1   | menu1    |
    +-----+----------+
    | 2   | menu2    |
    +-----+----------+
    | 3   | menu3    |
    +-----+----------+
    | 4   | menu4    |
    ------------------
    
    
    |tabella wp_page       |
    +----+---------+-------+
    | id | menu_id | nome  |
    +----+---------+-------+
    | 1  | 2       | page1 |
    +----+---------+-------+
    | 2  | 1       | page2 |
    +----+---------+-------+
    | 3  | 3       | page3 |
    +----+---------+-------+
    | 4  | 4       | page4 |
    ------------------------

    RISULTATO
    menu1
    -page2

    menu2
    -page1

    menu3
    -page3

    menu4
    -page4

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    212
    1 query:
    codice:
    SELECT wp_menu.nome, wp_page.nome
    FROM wp_page
    LEFT JOIN wp_menu ON wp_page.menu_id = wp_menu.id

  5. #5
    Io sono andato avnti fino alle 4 per fare questo
    Cmq ora provo a fare come dici tu che diminuisce il numero di query già alto >_< già 16 senza questo :\

    Codice PHP:
    <?php
    # dati da modificare a seconda del database
    $host="";
    $user="";
    $pass="";
    $db=mysql_connect($host,$user,$pass
                or die (
    "Errore durante la connessione al database");
    $sql="SELECT * FROM wp_menu ORDER BY id";
    $result=mysql_db_query("Sql16243_1",$sql,$db);

    ?>

    <html>
    <head>
    <title>Test</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    <body bgcolor="#FFFFFF" text="#000000">

    <?php while ($row=mysql_fetch_array($result))
        {
        
    $prova=$row["id"];
        print(
    $prova);
        echo
    "[b]";
        print(
    htmlentities($row["nome"]));
        echo
    "[/b]
    "
    ;

       
    $query "SELECT * FROM wp_page WHERE(menu_id=$prova)";
       
    $risultato mysql_query($query)
           or die(
    "Query fallita: " mysql_error());

       for (
    $i mysql_num_rows($risultato) - 1$i >= 0$i--) {
           if (!
    mysql_data_seek($risultato$i)) {
               echo 
    "Non si può eseguire il seek alla riga $i: " mysql_error() . "\n";
               continue;
           }

           if(!(
    $riga mysql_fetch_object($risultato)))
               continue;

           echo 
    "$riga->titolo
    \n"
    ;
       }

       
    mysql_free_result($risultato);

        }
    mysql_close();
    ?>
    </body>
    </html>

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.