Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,317

    Mysql_fetch_array non funziona

    Codice PHP:
    $qq mysql_query("SELECT * FROM board"$mysql_connect) or die('no1');
        while (
    $c mysql_fetch_array($qq) or die(mysql_errno() . ':'mysql_error())){
            
    $conf[$c['b_name']] = $c['b_value'];}

    print_r($conf); 

    Tablla:
    Codice PHP:
    CREATE TABLE board(
    b_name tinytext,
    b_value tinytext
    )TYPE=MyISAM;

    INSERT INTO board VALUES ('num_news''15');
    INSERT INTO board VALUES ('num_posts''20'); 

    errore:
    Codice PHP:
    0

  2. #2
    Elimina "or die(mysql_errno() . ':'. mysql_error())".

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,317
    si grazie ora funziona...

    senza che apro un'altro post dato che mi si presenta un'altro errore:
    Codice PHP:
    // c_id = ID COMMENTO
    // n_id = ID NEWS
    // c_nid = ID NEWS PRESENTE NELLA TABELLA "COMMENTI" PER COLLEGARli

    $qqq mysql_query("SELECT ns.*, COUNT(c_nid) AS num FROM news AS ns, commenti WHERE ns.n_id = commenti.c_nid ORDER BY n_id DESC LIMIT 0, ".$conf['num_news'])
        or die(
    mysql_error());
        while (
    $ns $qqq){
            
    $news mysql_fetch_array($ns);
            echo 
    '<p class="item_top">'.$news['n_title'].'</p>';
            echo 
    $news['n_text'];
            echo 
    '<div align="right">Leggi Commenti ('.$news['num'].')</div>';
        } 
    errore
    Codice PHP:
    Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause 
    Ovviamente se tolgo il COUNT non stampa proprio nulla

  4. #4
    Ci sono almeno due errori:

    per il count devi definire il raggruppamento da contare con GROUP BY

    per il while non credo abbia senso quel:

    while ($ns = $qqq){

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

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,317
    ho corretto la query in questo modo:
    Codice PHP:
    $qqq mysql_query("

                SELECT ns.*, COUNT(c_nid) AS num
                FROM news AS ns, commenti
                WHERE ns.n_id = commenti.c_nid
                GROUP BY n_id DESC LIMIT 0, "
    .$conf['num_news'])
                
        or die(
    mysql_error());
        while (
    $news mysql_fetch_array($qqq)){
            echo 
    '<p class="item_top">'.$news['n_title'].'</p>';
            echo 
    $news['n_text'];
            echo 
    '<div align="right">Leggi Commenti ('.$news['num'].')</div>';
        } 
    ma nada...

  6. #6
    prova a fare due query una con il select * e l'altra con il solo count.

    Stampa anche la stringa per vedere come viene risolta la variabile.

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

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,317
    Codice PHP:
    $query1 mysql_query("
                        SELECT * FROM news ORDER BY n_id DESC LIMIT 0,15
                        "
    );
    while(
    $stamp1 mysql_fetch_array($query1)){
        print 
    $stamp1['n_id']."
    "
    ;
        print 
    $stamp1['n_title']."
    "
    ;
        print 
    $stamp1['n_text']."
    "
    ;
        
        
    $query2 mysql_query("
                            SELECT COUNT(c_nid) AS num FROM commenti, news WHERE c_nid = '"
    .$stamp1['n_id']."'
                            "
    ) or die(mysql_error());
        
    $stamp2 mysql_fetch_array($query2);
        print 
    $stamp2['num'];

    così funziona senza problemi...

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,317
    ho risolto con:

    Codice PHP:
    $query3 mysql_query("

    SELECT newss.*, COUNT(c_nid) AS num
    FROM news AS newss, commenti
    WHERE c_nid = n_id
    GROUP BY n_id DESC LIMIT 0,15
                        
    "
    ); 
    ma cosa cambia dall'altra query?

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,317
    vabè non importa il perchè ( anzi si, però vabbe sarà stato un errore precedente ).

    sempre senza aprire un'altro topic ho scritto questa query:

    Codice PHP:

    // users == tabella utenti
    // groups == tabella gruppi
    // online == tabella utenti connessi
    // message_private = tabella messaggi privati
    // mp.receiver_id == destinatario del pm
    // mp.read == PM LETTO? ( 1 = si e 0 = no )
    // u.user_id == ID UTENTE
    // o.user_id == ONLINE ID UTENTE

    $q $database->query("
    SELECT u.*, g.*, o.*, COUNT(read) AS num_mp
    FROM users AS u, groups AS g, online AS o, message_private AS mp
    WHERE u.groups = g.group_id AND
    mp.receiver_id = u.user_id AND
    mp.read = 0 AND
    u.user_id = o.user_id AND
    u.user_id = 
    $ID AND
    u.user_password = 
    $PASSWORD
    "
    ); 
    So che dovrei provarla, ma sto sviluppando un progetto e sono impossibilitato a farlo.
    Funziona? ( nel senso che sintetticamente ha qualcosa di errato? )
    Fare lo stesso con dei JOIN mi permettere di velocizzare la query?

    In parole povere deve selezionare tutti i campi della tabella "users", "groups", "online" e solo i messaggi privati NON letti.

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.