Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1

    problema con menu dinamico

    Buongiorno

    ho bisogno di creare un menù dinamico su due livelli (menu-->sottomenu), tramite DB.
    La prima pagina (primo livello) deve caricare solamente le voci dei menù, che sono presenti nel campo 'descr'. Ecco cosa ho fatto (dopo aver ovviamente impostato la connesione):

    Codice PHP:
    $query "SELECT descr FROM menu";  
    $result mysql_query($query);    
    $righe mysql_num_rows($result);    
    for (
    $i 1$i == count($righe); $i++)  {  
    $voce mysql_fetch_array($result);  
    echo (
    'menu:'.$voce["$i"]);  } 
    il problema è che non mi funziona, cioè sul browser non vengono caricate le voci del mene qualcuno mi saprebbe dare una mano..

  2. #2
    Ciao

    $righe = mysql_num_rows($result);

    $righe è un numero togli count dal for

    $i == $righe;

  3. #3
    Scusa nella fretta ho tralasciato alcune cose
    il ciclo for diventa così

    for ($i = 1; $i <= $righe; $i++) {
    $voce = mysql_fetch_array($result);
    echo 'menu:'.$voce['nome campo database']; }


    tu avevi scritto

    $voce["$i"]

    dentro l'array $voce non va la variabile ma il nome del campo del database o se vuoi vedere il conteggio di $i devi mettere solo la variabile $i al posto dell'array $voce[...]


  4. #4
    grazie mille, sei stato chiaro e molto utile!
    Ora, siccome tutte le voci caricate, vanno a puntare tramite link, ad un altro file "menu2.php" in cui dovrò caricare una procedura (pensavo ad uno switch) in cui a seconda della voce ciccata, si apre il secondo livello del menu.

    Volevo sapere quindi quale sarebbe il metodo più comodo e più indicato per passare i valori di $voce alla pagina "menu2", considerando che non utilizzo una form ma un link <a href>

    A seconda dei casi effettuerò delle diverse select che mi consentiranno di caricare i diversi sottomenu, ma questo sarà il passo successivo.

    Per adesso avrei bisogno di sapere come passare le variabili!!

  5. #5
    Non so se ho capito bene ma per passare le varibili tramite link potresti fare così

    echo 'menu:<a href=menu2.php?$variabile1=valorevariabile1&variab ile2=valorevariabile2>'.$voce['nome campo'].'</a>';

  6. #6
    forse intendevi passasre il nome del link e poi tramite switch riconoscere la varibile

    così:

    $voce = mysql_fetch_array($result);
    echo "".$voce['nome campo database']."";

  7. #7
    adesso magari provo anche il tuo suggerimento.
    io ho provato a fare in questo modo, nella pagina menu2.php ho richiesto l'id della voce selezionata:

    Codice PHP:
    $id $_REQUEST['id'];    
    switch (
    $id)  
    case 
    '1':  
    $sotto "SELECT descr_sotto FROM sottomenu WHERE $id = id_menu";  
    $result mysql_query($sotto)

    while (
    $sottovocemysql_fetch_array($result
    echo 
    "$sottovoce['descr_sotto']
    break; 
    pensi che possa andare bene?
    a parte la stampa "echo" che ancora è da provare..

  8. #8
    Scusate se intervengo, ma credo che piuttosto che ciclare con il FOR sia più utile e meno dispendioso usare il WHILE.

    Codice PHP:
    $query "SELECT descr FROM menu";   
    $result mysql_query($query);     
    while (
    $voce mysql_fetch_array($result)) {

       
    $sottopagina urlencode($voce['nome campo database']);
       echo 
    "<a href=menu2.php?link=$sottopagina>".$voce['nome campo database']."</a>";
    }
    mysql_free_result($result); 
    La pagina menu2.php ti conviene impostarla come segue, invece.

    Codice PHP:
    // recupero la variabile dalla URL, ammesso che ci sia
    // altrimenti imposto un valore nullo alla stringa
    (!isset($_GET['link']) ? $link "" $link $_GET['link'];

    $link urldecode($link);

    switch(
    $link) {
      case 
    'xxx' :
         
    // codice
      
    break;
      case 
    'yyy' :
         
    // codice
      
    break;
      case 
    'zzz' :
         
    // codice
      
    break;
      default:
         
    // codice
      
    break;

    Il problema di questo metodo è che, non sapendo in anticipo quanti e quali CASI dello switch puoi prevedere (suppongo che se usi un DB è perché il numero di menù e sottomenu sia dinamico), rischi che non ti funzioni tutto e che ti manchino dei pezzi dello switch.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  9. #9
    Non credo

    id_menu

    nella query non ha valore!?!

    se intendi

    $id = $_REQUEST['id'];

    devi cambiare con

    $sotto = "SELECT descr_sotto FROM sottomenu WHERE $id = $id";


    Toglimi una curiosità utilizzi lo switch perchè devi fare delle particolari operazione in base alla scelta o ti serve solo per la query? (scusa per l'italiano)

    non ti conviene fare

    Codice PHP:
    $id $_REQUEST['id'];

    $sotto "SELECT descr_sotto FROM sottomenu WHERE $id = '$id'";
    $result mysql_query($sotto)
    while (
    $sottovocemysql_fetch_array($result)
    {
    echo 
    $sottovoce['descr_sotto'];

    e nel link che ti avevo postato prima anzichè

    Codice PHP:
    echo "[url="menu2.php?link=$voce[nome"]".$voce['nome campo database']."[/url]"
    metti l'id
    Codice PHP:
    echo "[url="menu2.php?id=$voce[id"]".$voce['nome campo database']."[/url]"

  10. #10
    utilizzo lo switch perchè in base alla voce del menu ciccata, devo caricare diverse voci di sottomenu..
    ho provato a passare l'id nella query string come mi hai detto tu, cosi:dfd
    Codice PHP:
    echo ('[url="menu2.php?id=$voce['id']"]['.$voce["descr"].'][/url]'); 
    però nella pagina menu2, con questo codice:
    Codice PHP:
    $id $_REQUEST['id'];    
    switch (
    $id) {  
    case 
    '1':  
    $sotto "SELECT descr_sotto FROM sottomenu WHERE $id = id";  
    $result mysql_query($sotto);   
    while (
    $sottovocemysql_fetch_array($result))   
    echo
    ""$sottovoce['descr_sotto'];                                      break; 
    in effetti non mi fa vedere niente mostra niente...

    la clausa le Where della query è sicuro "$id=$id" non ci capisco molto, ma mi sembra strana..

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 © 2024 vBulletin Solutions, Inc. All rights reserved.