Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    176

    Prime armi: problema php-mysql

    Salve a tutti, sto riprovando per l'ennesima volta a studiare l'interazione tra PHP e MySQL.. purtroppo seguendo la guida di Freephp ho infatti dei seri problemi. In pratica i file non funzionano! Ho deciso di provare a fare una cosa io semplice semplice..
    Dapprima mi sono creato un database (gsdd) e una tabella (gsdd_news) con 3 articoli dentro.
    Ho provato quindi a creare una stupida paginetta che mi visualizzi i 3 articoli in questione. Purtroppo con il codice che riporto qui sotto riesco solo a vedere un articolo dei 3 ma non capisco perchè! Qualcuno mi potrebbe dare un aiuto? Grazie!

    codice:
    <?
    //parametri di connessione
    $db_host = "localhost";
    $db_user = "dangeluma";
    $db_password = "dangeluma";
    
    //connessione al database
    $connessione = mysql_connect($db_host, $db_user, $db_password);
    if ($connessione == FALSE)
    die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
    
    //connessione alla tabella del database
    $db_name = "gsdd";
    mysql_select_db($db_name, $connessione)
    or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
    $query = "SELECT * FROM gsdd_news LIMIT 0, 5";
    $result = mysql_query($query, $connessione);
    $row = mysql_fetch_array($result);
    $data = date("j/n/y", $row[data]);
    
    echo "$row[titolo]
    
    ";
    echo "$row[testo]
    
    ";
    if ($row[mail] != "") echo "$data, <a href=mailto:$row[mail]>$row[autore]</a>
    "; else echo "$data, $row[autore]
    ";
    
    ?>

  2. #2
    A occhio, a naso, direi che prima del fetch devi mettere un while... ovvero fare in modo di fare un'operazione in ciclo... sai cos'è un ciclo?

    Io tempo fa ho usato il tuo stesso tutorial...potrei postarti il codice esatto, che comunque potresti trovarlo nel tutorial, ma conoscendo le problematiche del beginner, essendolo anch'io, scopri da solo come risolvere il ciclo! Io ti dico solo che manda il ciclo... ovvero l'operazione di"inserzione" nella pagina dev'essere ripetuta tante volte quanti sono gli articoli... giusto?

    A te ne visualizza uno perchè esegui il comando una sola volta.......etc etc........

    Se hai bisogno, spero di poterti seguire domani!
    Tom

  3. #3
    confermo.. il fetch prelieva un record alla volta (ovvio.. altrimenti come potresti stamparli? )... e devi fare un ciclo finchè fetch restituisce qualcosa...

    while($row = mysql_fetch_array($result))
    {
    $data = date("j/n/y", $row[data]);

    echo "$row[titolo]

    ";
    echo "$row[testo]

    ";
    if ($row[mail] != "") echo "$data, <a href=mailto:$row[mail]>$row[autore]</a>
    "; else echo "$data, $row[autore]
    ";
    }



  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    176
    Grazie per l'aiuto ad entrambi! Aggiungendo la funzione "while" ora vedo tutti gli articoli!

    codice:
    while($row = mysql_fetch_array($result)) 
    { 
    $data = date("j/n/y", $row[data]); 
    
    echo "$row[titolo]
    
    "; 
    echo "$row[testo]
    
    "; 
    if ($row[mail] != "") 
    echo "$data, <a href=mailto:$row[mail]>$row[autore]</a>
    "; 
    else 
    echo "$data, $row[autore]
    "; 
    }
    Vorrei però chiedere alcune cose che non capisco: se ora volessi fare in modo che il titolo della news sia cliccabile come dovrei fare?
    Ora io ho modificato il codice in questo modo:
    codice:
    //connessione alla tabella del database
    $db_name = "gsdd";
    mysql_select_db($db_name, $connessione)
    or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
    $query = "SELECT id,titolo,data FROM gsdd_news ORDER BY data DESC LIMIT 0, 30";
    $result = mysql_query($query, $connessione);
    while($row = mysql_fetch_array($result))
    {
    $data = date("j/n/y", $row[data]);
    if ($row[mail] != "")
    echo "$data, <a href=mailto:$row[mail]>$row[autore]</a>"; 
    else 
    echo "$data, $row[autore]";
    echo "$row[titolo]
    ";
    echo "$row[testo]";
    }
    Ho provato a seguire ciò che è scritto sulla guida, ovvero creare una pagina "view.php" che carichi l'articolo in base all'id univoco del database ma non riesco mai a visualizzarlo!

    Vi sarei davvero grato se mi aiutaste perchè vorrei tanto capire come si deve procedere!
    Grazie ancora!

  5. #5
    1) while no è una funzione ma una struttura di controllo.. + precisamente un ciclo

    2) devi creare un link... passandogli l'id estratto dla database.. l'hai detto tu stesso.. dovresti essere un po' più chiaro su cosa non riesci a fare...

  6. #6
    echo "$row[titolo]
    ";
    va sostituito con
    echo "<a href=\"pagina.php?id=$row['id']\">$row['titolo']
    ";

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    176
    Ok, cerco di essere il più chiaro possibile!
    Allora allo stato attuale, con il codice che ho postato prima, vedo sul mio browser questo:
    codice:
    28/2/05, News 5 
    11/2/05, News 4 
    4/2/05, News 3 
    28/1/05, News 2
    Ora vorrei rendere cliccabili solo i titoli delle news in modo che mi aprano la pagina tipo "/view.php?id".
    Mi sono ispirato al codice riportato sul tutorial per la creazione della pagina view.php:
    codice:
    <? include("top_foot.inc.php"); include("config.inc.php"); top();
    $db = mysql_connect($db_host, $db_user, $db_password);
    if ($db == FALSE)
    die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
    mysql_select_db($db_name, $db)
    or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
    $query = "SELECT titolo,testo,data,autore,mail FROM news WHERE id='$id'"; 
    $result = mysql_query($query, $db);
    $row = mysql_fetch_array($result);
    
    $data = date("j/n/y", $row[data]);
    echo "$row[titolo]
    
    ";
    echo "$row[testo]
    
    ";
    if ($row[mail] != "") 
    echo "$data, <a href=mailto:$row[mail]>$row[autore]</a>
    "; 
    else 
    echo "$data, $row[autore]
    ";
    echo "
    <a href=index.php>Torna alla pagina iniziale</a>
    ";
    echo "<a href=all.php>Visualizza tutti gli articoli</a>
    ";
    mysql_close($db);
    foot();
    ?>
    mia pagina view.php:
    codice:
    <? //parametri di connessione
    $db_host = "localhost";
    $db_user = "dangeluma";
    $db_password = "dangeluma";
    
    top();
    $connessione  = mysql_connect($db_host, $db_user, $db_password);
    if ($connessione  == FALSE)
    die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
    mysql_select_db($db_name, $connessione )
    or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
    $query = "SELECT titolo,testo,data,autore,mail FROM gsdd_news WHERE id='$id'";
    $result = mysql_query($query, $connessione );
    $row = mysql_fetch_array($result);
    
    $data = date("j/n/y", $row[data]);
    echo "$row[titolo]
    
    ";
    echo "$row[testo]
    
    ";
    if ($row[mail] != "") echo "$data, <a href=mailto:$row[mail]>$row[autore]</a>
    "; else echo "$data, $row[autore]
    ";
    echo "
    <a href=index.php>Torna alla pagina iniziale</a>
    ";
    echo "<a href=all.php>Visualizza tutti gli articoli</a>
    ";
    mysql_close($connessione );
    foot();
    ?>
    Ora dovrei inserire il codice:
    codice:
    "<a href=\"view.php?id=$row[id]\">"
    nella pagina index.php ma nn riesco a farlo.
    Grazie ancora!

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    176
    Originariamente inviato da KaNnA
    echo "$row[titolo]
    ";
    va sostituito con
    echo "<a href=\"pagina.php?id=$row['id']\">$row['titolo']
    ";
    Ciao KaNnA,
    ho sostituito come mi hai suggerito:
    codice:
    echo "<a href=\"view.php?id=$row['id']\">$row['titolo']
    ";
    ma ho questo errore:
    codice:
    Parse error:  parse error, unexpected T_ENCAPSED_AND_WHITESPACE, 
    expecting T_STRING or T_VARIABLE or T_NUM_STRING

  9. #9
    Originariamente inviato da dangeluma
    Ciao KaNnA,
    ho sostituito come mi hai suggerito:
    codice:
    echo "<a href=\"view.php?id=$row['id']\">$row['titolo']
    ";
    ma ho questo errore:
    codice:
    Parse error:  parse error, unexpected T_ENCAPSED_AND_WHITESPACE, 
    expecting T_STRING or T_VARIABLE or T_NUM_STRING

    codice:
    echo "<a href=\"view.php?id={$row['id']}\">{$row['titolo']}
    ";


  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    176
    Per prima cosa grazie di cuore per la pazienza!
    Tornando a noi, ora la pagina non mi dà più errore però l'effetto che ottengo è questo:
    codice:
    28/2/05, Finalmente on line il nostro sito!! 
    11/2/05, Chi viene a Limone? 
    4/2/05, Gita sociale a Limone 
    28/1/05, Gita sociale a Pila! 
    In pratica solo la prima riga si comporta come vorrei (solo il titolo fà da link)
    Quando provo ad accedere all'articolo ho però questo errore:
    codice:
    Fatal error: Call to undefined function: top()
    Il codice della mia paginetta view.php l'ho postato poco fa. Tra l'altro nn riesco a capire a cosa serva la funzione "top()" :master:
    Vi ringrazio ancora tutti!

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.