Visualizzazione risultati 1 fino 20 di 20

Discussione: [PHP/MySQL] Dati in un while..ma come si mettono fuori?

  1. #1
    Guest

    Post [PHP/MySQL] Dati in un while..ma come si mettono fuori?

    Allora la cosa è molto semplice...solo che io non ci riesco!
    Codice PHP:
    $menuq = mysql_query("SELECT * FROM categoria ORDER BY name");
    while(
    $menus = mysql_fetch_array($menuq)) {
    $menu_id = array($menu['id']);
    $menu_nome = array($menu['nome']);
    }
    echo
    $menu_nome."<hr />".$menu_id;
    Errore:
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in prova.php on line 10

    Notice: Undefined variable: menu_nome in prova.php on line 14

    Notice: Undefined variable: menu_id in prova.php on line 14
    Il problema e che non funziona!...io vorrei usare i risultati fuori dal while!
    Ho provato con un array() come vedete...ma mi da erroe!
    Sapete come si fa quello che vorrei fare io? xD
    Grazie 1000...ciao Davide! ^_______^
    Ultima modifica di sIM : 23-12-2008 alle ore 00.06.35

  2. #2
    L'avatar di matt93
    matt93 non è connesso Utente
    Data registrazione
    01-09-2008
    Messaggi
    241

    Predefinito

    l'errore non è nello script, ma nel database.... prova ad eseguire quella query in phpmyadmin e vedi cosa ti dice.....

  3. #3
    Guest

    Predefinito

    L'ho rifatto da capo...ma adesso non finisce mai di caricare la pagina!
    Codice PHP:
    #################

    function menu() {
    global
    $menu;
    $menu_sql = sql("SELECT * FROM categoria ORDER BY nome");
    $result = "";
    while(
    $menu_sql) {
    $replace = ereg_replace("#menulink#","<li><a href=\"index.php?cid=$menu_sql[id]\">$menu_sql[nome]</a></li>",$menu);
    $result .= $replace;
    }

    return
    $result;
    }
    #################
    echo menu();
    Ciaooo! ^_______^
    Ultima modifica di sIM : 23-12-2008 alle ore 01.01.14

  4. #4
    Guest

    Predefinito

    Se vuoi creare degli array contenenti tutti i dati che prendi dal db puoi fare così:

    Codice PHP:
    $menuq = mysql_query("SELECT * FROM categoria ORDER BY name") or die (mysql_error());
    $menu_id=array();
    $menu_nome = array();
    while(
    $menu = mysql_fetch_array($menuq)) {
    $menu_id[]=$menu['id'];
    $menu_nome[]=$menu['nome'];
    $menu_nome = array($menu['nome']);
    }
    print_r($menu_nome);
    print_r($menu_id);

  5. #5
    Guest

    Predefinito

    Ok..ho modificato lo script postato da te..
    Codice PHP:
    $menuq = mysql_query("SELECT * FROM categoria ORDER BY nome") or die (mysql_error());
    $menu_id = array();
    $menu_nome = array();
    while(
    $menu = mysql_fetch_array($menuq)) {
    $menu_id[] = $menu['id'];
    $menu_nome[] = $menu['nome'];
    }
    print_r($menu_nome);
    print_r($menu_id);
    Print_r:
    Array ( [0] => categoriaA [1] => categoriaB ) Array ( [0] => 1 [1] => 2 )
    Ma io ora come faccio ad unire il $nome con $id??
    ================================================== ==============
    E dopo come mai con print_r me li stampa e con echo no? ---> Ho risolto con:
    Codice PHP:
    $menu_nomea = print_r ($menu_nome);
    $menu_ida = print_r ($menu_id);

    echo
    $menu_nomea.$menu_ida;
    Ma alla fine dell'array mi mostra 11!
    Array ( [0] => categoriaA [1] => categoriaB ) Array ( [0] => 1 [1] => 2 ) 11
    ================================================== ==============
    Si può usare return visto che li devo mettere in una funzione?
    La mia idea è questa:
    Codice PHP:
    <a href="$menu_id">$menu_nome</a>
    Grazie!
    Ultima modifica di sIM : 23-12-2008 alle ore 11.17.40

  6. #6
    Guest

    Predefinito

    Gli array vanno ciclati per estrarre tutti gli elementi:
    Codice PHP:
    foreach($menu_nome as $key=>$value){
    echo
    '<a href="'.$menu_id[$key].'">'.$value.'</a> ';
    }

    Ciao!

  7. #7
    Guest

    Predefinito

    Su per giù ci ero arrivato a questa soluzione del foreach...ma non riuscivo a costruirla! xD
    Ora funziona come dovrebbe..ma come si fa a metterla in una funzione?
    Mi mostra la pagina bianca! xD
    Codice PHP:
    function menu() {
    $menuq = mysql_query("SELECT * FROM categoria ORDER BY nome") or die ("$errore_sql");
    $menu_id = "";
    $menu_nome = "";
    while(
    $menu = mysql_fetch_array($menuq)) {
    $menu_id[] = $menu['id'];
    $menu_nome[] = $menu['nome'];
    }
    foreach(
    $menu_nome as $key=>$value){
    $return = "<a href=\"".$menu_id[$key]."\">".$valore."</a>";
    }
    return
    $return;
    }
    Grazie!

  8. #8
    Guest

    Predefinito

    Bè, ma se non la richiami la funzione, che ne sa quella quando deve attivarsi??

    Comunque sia, stai facendo "un po'" di confusione: è inutile mettere i risultati della query in degli array se poi li devi semplicemente stampare; tanto vale stamparli direttamente dal while!


    Ciao!

  9. #9
    Guest

    Predefinito

    Ok...il tutto funziona...ma mi mostra solo la 2^ categoria (B-id2)!
    Invece me le dovrebbe mostrare tutte!
    Codice PHP:
    function menu() {
    global
    $menu; // richiamo la variabile $menu
    $menuq = mysql_query("SELECT * FROM categoria ORDER BY nome") or die ("$errore_sql");
    $menu_id = ""; $menu_nome = ""; $return = "";
    while(
    $menu_sql = mysql_fetch_array($menuq)) {
    $menu_id[] = $menu_sql['id'];
    $menu_nome[] = $menu_sql['nome'];
    }
    foreach(
    $menu_nome as $key=>$value){
    $return = "<li id=\"cate\"><a href=\"".$menu_id[$key]."\">".$value."</a></li>";
    }
    return
    $return;
    }

    $menu = ereg_replace("#menulink#",menu(),$menu);
    $all = ereg_replace("#menu#",$menu,$all);
    Grazie! ^_____^

  10. #10
    Guest

    Predefinito

    Perchè sovrascrivi ogni volta la variabile $return.
    Aggiungi un punto prima del "=":

    $return.=

    Ripeto, è inutile creare quegli array.


    ciao!

  11. #11
    Guest

    Predefinito

    pulisco un pò il codice :
    Codice PHP:
    function menu() {
    global
    $menu; // richiamo la variabile $menu
    $menuq = mysql_query("SELECT * FROM categoria ORDER BY nome") or die ("$errore_sql");
    $return = "";
    while(
    $menu_sql = mysql_fetch_array($menuq)) {
    $return .= "<li id=\"cate\"><a href=\"".$menu_sql['id']."\">".$menu_sql['nome']."</a></li>";
    }
    return
    $return;
    }

    $menu = ereg_replace("#menulink#",menu(),$menu);
    $all = ereg_replace("#menu#",$menu,$all);

  12. #12
    Guest

    Predefinito

    Ok..Grazie Inverno! Adesso ne ho un altro!
    Questo:
    Codice PHP:
    if(empty($_GET)) {

    $newsq = mysql_query("SELECT * FROM news");
    $replace = "";
    while(
    $news = mysql_fetch_array($newsq)) {
    $replace .= ereg_replace("#data#",$news['data'],$content); // DATA
    $replace .= ereg_replace("#ora#",$news['ora'],$content); // ORA
    $replace .= ereg_replace("#titolo#",$news['titolo'],$content); // TITOLO
    $replace .= ereg_replace("#testo#",$news['testo'],$content); // TESTO
    $replace .= ereg_replace("#categoria#",$news['categoria'],$content); // CATEGORIA
    $replace .= ereg_replace("#umore#",$news['umore'],$content); // UMORE
    $replace .= ereg_replace("#id#",$news['id'],$content); // ID
    $replace .= ereg_replace("#url#","index.php?nid=",$content); // URL
    }
    $content = $replace;

    }
    Ma mi mostra tante news quanti sono i campi e una news per campo!
    Ma così non va! Ho seguito l'esempio del menù...su per giù è uguale no?
    Mi deve mostrare tutte le news ma con i dati corretti..no una news un campo!
    Grazie 1000! Ciao! ^_____^

  13. #13
    L'avatar di matt93
    matt93 non è connesso Utente
    Data registrazione
    01-09-2008
    Messaggi
    241

    Predefinito

    non ho ben capito.... forse intendi così....

    Codice PHP:
    if(empty($_GET)) {

    $newsq = mysql_query("SELECT * FROM news");
    $replace = "";
    while(
    $news = mysql_fetch_array($newsq)) {
    $replace = ereg_replace("#data#",$news['data'],$content); // DATA
    $replace = ereg_replace("#ora#",$news['ora'],$replace); // ORA
    $replace = ereg_replace("#titolo#",$news['titolo'],$replace); // TITOLO
    $replace = ereg_replace("#testo#",$news['testo'],$replace); // TESTO
    $replace = ereg_replace("#categoria#",$news['categoria'],$replace); // CATEGORIA
    $replace = ereg_replace("#umore#",$news['umore'],$replace); // UMORE
    $replace = ereg_replace("#id#",$news['id'],$replace); // ID
    $replace = ereg_replace("#url#","index.php?nid=",$replace); // URL
    $content .= $replace;
    }

    }

  14. #14
    Guest

    Predefinito

    Ho modificato un po tutto..ma così mi mostra solo l'ultima news (in questo caso ce ne sono 2 ed è la seconda!)
    Codice PHP:
    $newsq = mysql_query("SELECT * FROM news");
    $replace = "";
    while(
    $news = mysql_fetch_array($newsq)) {
    $replace = ereg_replace("#data#",$news['data'],$content); // DATA
    $replace = ereg_replace("#ora#",$news['ora'],$replace); // ORA
    $replace = ereg_replace("#titolo#",$news['titolo'],$replace); // TITOLO
    $replace = ereg_replace("#testo#",$news['testo'],$replace); // TESTO
    $cate = sql("SELECT * FROM categoria WHERE id = '$news[categoria]'");
    $replace = ereg_replace("#categoria#","<a href=\"index.php?cid=$cate[id]\">$cate[nome]</a>",$replace); // CATEGORIA
    $replace = ereg_replace("#umore#",$news['umore'],$replace); // UMORE
    $replace = ereg_replace("#id#",$news['id'],$replace); // ID
    $replace = ereg_replace("#url#","index.php?nid=",$replace); // URL
    }
    $content = $replace;
    }
    Ma me li deve mostrare tutte! E come se facesse un mysql_fetch_array senza while e mostrasse solo l'ultima news! xD
    Ma io voglio che me li mostra tutte....perchè non ci riesco?
    Grazie 1000...

  15. #15
    Guest

    Predefinito

    Citazione Originalmente inviato da debug Visualizza messaggio
    Perchè sovrascrivi ogni volta la variabile $return.
    Aggiungi un punto prima del "=":



    ciao!

  16. #16
    Guest

    Predefinito

    Già provato..non finisce mai di caricare! :(
    Codice PHP:
    if(empty($_GET)) {

    $newsq = mysql_query("SELECT * FROM news");
    $replace = "";
    while(
    $news = mysql_fetch_array($newsq)) {
    $replace .= ereg_replace("#data#",$news['data'],$content); // DATA
    $replace .= ereg_replace("#ora#",$news['ora'],$replace); // ORA
    $replace .= ereg_replace("#titolo#",$news['titolo'],$replace); // TITOLO
    $replace .= ereg_replace("#testo#",$news['testo'],$replace); // TESTO
    $cate = sql("SELECT * FROM categoria WHERE id = '$news[categoria]'");
    $replace .= ereg_replace("#categoria#","<a href=\"index.php?cid=$cate[id]\">$cate[nome]</a>",$replace); // CATEGORIA
    $replace .= ereg_replace("#umore#",$news['umore'],$replace); // UMORE
    $replace .= ereg_replace("#id#",$news['id'],$replace); // ID
    $replace .= ereg_replace("#url#","index.php?nid=",$replace); // URL
    }
    $content = $replace;

    }

  17. #17
    Guest

    Predefinito

    Il puntino dovevi metterlo qua:
    $content = $replace;

    Levalo dagli altri.


    ciao!

  18. #18
    Guest

    Predefinito

    Ok...ora funziona! Ma mi mostra nella prima news il template!
    Codice PHP:
    if(empty($_GET)) {

    $newsq = mysql_query("SELECT * FROM news");
    $replace = "";
    while(
    $news = mysql_fetch_array($newsq)) {
    $replace = ereg_replace("#data#",$news['data'],$content); // DATA
    $replace = ereg_replace("#ora#",$news['ora'],$replace); // ORA
    $replace = ereg_replace("#titolo#",$news['titolo'],$replace); // TITOLO
    $replace = ereg_replace("#testo#",$news['testo'],$replace); // TESTO
    $cate = sql("SELECT * FROM categoria WHERE id = '$news[categoria]'");
    $replace = ereg_replace("#categoria#","<a href=\"index.php?cid=$cate[id]\">$cate[nome]</a>",$replace); // CATEGORIA
    $replace = ereg_replace("#umore#",$news['umore'],$replace); // UMORE
    $replace = ereg_replace("#id#",$news['id'],$replace); // ID
    $replace = ereg_replace("#url#","index.php?nid",$replace); // URL
    $content .= $replace;
    }

    }
    In pratica:
    Codice:
    News 1
    ============
    #titolo# - #data#
    ----------------------
    News 2
    ============
    ASDASDASD -34/34/2333
    ----------------------
    News 3
    ============
    SDFHIWERW - 74/48/4859
    News 1
    ============
    ASDASDASD -34/34/2333
    ----------------------
    Non fate caso ai dati..ma in pratica mostra il blocco del template nella prima posizione e dopo tutte le news come dovrebbe!
    Perchè? Grazie!
    Edit: Ecco una "foto": http://i42.tinypic.com/2ymzntu.gif (quelli in rosso non si dovrebbero vedere...)
    Ultima modifica di sIM : 23-12-2008 alle ore 14.05.15

  19. #19
    Guest

    Predefinito

    Codice PHP:
    if(empty($_GET)) {

    $newsq = mysql_query("SELECT * FROM news");
    $output = "";
    while(
    $news = mysql_fetch_array($newsq)) {
    $replace = ereg_replace("#data#",$news['data'],$content); // DATA
    $replace = ereg_replace("#ora#",$news['ora'],$replace); // ORA
    $replace = ereg_replace("#titolo#",$news['titolo'],$replace); // TITOLO
    $replace = ereg_replace("#testo#",$news['testo'],$replace); // TESTO
    $cate = sql("SELECT * FROM categoria WHERE id = '$news[categoria]'");
    $replace = ereg_replace("#categoria#","<a href=\"index.php?cid=$cate[id]\">$cate[nome]</a>",$replace); // CATEGORIA
    $replace = ereg_replace("#umore#",$news['umore'],$replace); // UMORE
    $replace = ereg_replace("#id#",$news['id'],$replace); // ID
    $replace = ereg_replace("#url#","index.php?nid",$replace); // URL
    $output .= $replace;
    }
    }
    direi che così dovrebbe andare

    ti consiglio una letta a "LEFT JOIN" di mysql, risparmi molte query

  20. #20
    Guest

    Predefinito

    Problema Risolto! :smile:...sto facendo progressi!
    Codice PHP:
    $newsq = mysql_query("SELECT * FROM news LIMIT 0,$numlim_home") or die("$errore_sql");
    $result = "";
    while(
    $news = mysql_fetch_array($newsq)) {
    $replace = ereg_replace("#data#",$news['data'],$content); // DATA
    $replace = ereg_replace("#ora#",$news['ora'],$replace); // ORA
    $replace = ereg_replace("#titolo#",$news['titolo'],$replace); // TITOLO
    $replace = ereg_replace("#testo#",$news['testo'],$replace); // TESTO
    $cate = sql("SELECT * FROM categoria WHERE id = '$news[categoria]'");
    $replace = ereg_replace("#categoria#","<a href=\"index.php?cid=$cate[id]\">$cate[nome]</a>",$replace); // CATEGORIA
    $replace = ereg_replace("#umore#",$news['umore'],$replace); // UMORE
    $replace = ereg_replace("#id#",$news['id'],$replace); // ID
    $replace = ereg_replace("#url#","index.php?nid",$replace); // URL
    $result .= $replace;
    }
    $content = $result;
    Ultima modifica di sIM : 24-12-2008 alle ore 11.44.23

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •