problema con tutorial "Creare un forum con PHP"

DadaUmpa

Nuovo Utente
21 Ott 2010
7
0
0
Salve a tutti.

Stavo studiando il vostro tutorial "Creare un forum con PHP". Sono riuscita a fare tutto però non riesco recuperare i titoli del forum sulla query forum_lite_main.
Sul database è tutto apposto, fatto sta che le altre query funzionano, ma questa non vuole proprio ricevere i dati. Il problema credo che sia nel file new.php nelle prime righe ve lo giro:

<?php
require("config.php");

# Recupero il titolo del forum dal DB
$query2 = @mysql_query("SELECT * FROM forum_lite_main
WHERE id = '" . $_GET[f] . "'");
$result2 = @mysql_fetch_array($query2);

# Stampo il percorso
echo "<a href=\"index.php\">Main</a> »";
echo "<a href=\"forum.php?f=$_GET[f]\">";
echo "$result2[titolo]</a> » Nuovo topic";

# Se il valore di cmd è false stampo il form a video
if ($_POST[cmd] == FALSE)
{
echo "<form action=\"$REQUEST_URI\" method=\"post\">\n";
echo "<strong>Titolo</strong>:<br>\n";
echo "<input type=\"text\" name=\"titolo\"><br><br>\n\n";
echo "<strong>Nome (o nick)</strong>:<br>\n";
echo "<input type=\"text\" name=\"autore\"><br><br>\n\n";
echo "<strong>Messaggio</strong>:<br>\n";
echo "<textarea name=\"testo\" cols=\"50\" rows=\"5\">";
echo "</textarea><br><br>\n\n";
echo "<input type=\"hidden\" name=\"cmd\" value=\"add\">\n";
echo "<input type=\"submit\" value=\"Crea\">\n";
echo "</form>\n";
}

# Se cmd è diverso da false...
else
{
# Verifico che tutti i campi necessari siano stati compilati
if ($_POST[titolo] == FALSE OR $_POST[autore] == FALSE
OR $_POST[testo] == FALSE)
{
echo "<p>Tutti i campi sono obbligatori.";
}

# Se il controllo è ok salvo tutto nel DB
else
{
$_POST[testo] = str_replace("\n", "<br>", $_POST[testo]);

mysql_query("INSERT INTO forum_lite_topics
VALUES ('',
'" . $_GET[f] . "',
'" . date("d/m/Y") . "',
'" . $_POST[autore] . "',
'" . $_POST[titolo] . "')");

mysql_query("INSERT INTO forum_lite_thread
VALUES ('',
'" . $_GET[t] . "',
'" . date("d/m/Y") . "',
'" . $_POST[autore] . "',
'" . $_POST[titolo] . "',
'" . $_POST[testo] . "')");

echo "<p>Il tuo topic è stato inviato con successo.";

}
}
?>

Visto che mi sto affacciando ora al codice PHP, vorrei un'aiuto da voi per sapere quel'è l'errore e capire :-)

Vi ringrazio
 
se correggi così:
PHP:
$query2 = mysql_query("SELECT * FROM forum_lite_main
WHERE id = '" . $_GET[f] . "'") or die (mysql_error());
Visualizzi qualche errore?
 
ti ringrazio per la risposta !

Ho provato ad aggiungere quel pezzo di codice che mi hai scritto, ma non mi da nessun errore.. sul data base ho anche altre tabelle e quelle funzionano tutte alla perfezione. Ho provato anche a cambiare il nome forum_lite_main con il nome di una tabella funzionante e di fatti funziona, ma la tabella forum_lite_main, proprio non ne vuol sapere di ricevere dati :hammer:
 
ciao
due cose:
1. dici "ricevere dati" intendi leggere o scrivere?, perche se è leggere va bene SELECT..., altrimenti devi usare INSERT....
2. metti prima della query un bel var_dump
PHP:
var_dump($_GET[f]);
e vedi cosa ti restituisce, oppure dividi la query
$query2 = @mysql_query("SELECT * FROM forum_lite_main
WHERE id = '" . $_GET[f] . "'");
così
PHP:
$q2 = "SELECT * FROM forum_lite_main
WHERE id = '" . $_GET[f] . "'";
//metti il var dump
var_dump($q2);
//e poi interroghi
$query2=mysql_query($q2);
e guarda cosa risulta

dimenticavo: mentre fai tutte le prove togli i silent @
 
ciao
scusa, quale dei var_dump hai utilizzato?
sembrerebbe che tu abbia messo il var_dump direttamente sull'interrogazione al db e che fosse false si era capito, dovresti fare gli altri per capire dove è l'errore
 
scusami, macome ho detto sono alle prime armi :-)

cmq su tutti i file php mi da questa rispodta resource(3) of type (mysql result)
tranne su uno che mi scrive resource(4) of type (mysql result)....
 
ciao
era proprio come intendevo io, hai messo il vardump direttamente sull'interrogazione, quindi non si riesce a capire da dive deriva l'errore.
dovresti modificare il codice in questa maniera

PHP:
<?php
require("config.php");
//vardump 1
var_dump($_GET[f]);//vedo se viene trasmesso il get
//divido la query
$q="SELECT * FROM forum_lite_main
WHERE id = '" . $_GET[f] . "'";
//vardump 2
var_dump($q2);//vedi come ti risulta la query
/*
se non hai l'errore sul get e questo ha il valore ad es. 336
dovresti vedere a monitor la seguente scritta
string(44) "SELECT * FROM forum_lite_main WHERE id='336'"
*/

/* questa parte la commenti tutta perchè hai diviso la query
$query2 = @mysql_query("SELECT * FROM forum_lite_main
WHERE id = '" . $_GET[f] . "'");
*/
//e riscrivi così la query
$query2 = @mysql_query($q2);
//vardump 3
var_dump($query2);//bool false se non fa la query, altrimenti resuorce ecc...
$result2 = @mysql_fetch_array($query2);
//vardump 4
var_dump($result2);//come per il vardump precedente

# Stampo il percorso
echo "<a href=\"index.php\">Main</a> »";
echo "<a href=\"forum.php?f=$_GET[f]\">";
echo "$result2[titolo]</a> » Nuovo topic";
//ecc...ecc...ecc...
?>
in questa maniera si dovrebbe capire dove sta questo rognoso di errore

p.s.
anche se funziona lo stesso scrivi gli array globali o no nella sintassi canonica, anche se nel tut sono scritti in modo diverso
$_GET['f']
oppure
$_GET["f"]
cioè con gli apici
 
ti ringrazio per la pazienza ed eseguo subito.. però controllando questo codice
<?php
# Includo il file di configurazione
require("config.php");

# Creo le tabelle del DB
mysql_query("CREATE TABLE 'forum_lite_main' (
'id' INT( 11 ) NOT NULL AUTO_INCREMENT ,
'titolo' VARCHAR( 255 ) NOT NULL ,
INDEX ( 'id' )
);");
mysql_query("CREATE TABLE 'forum_lite_topics' (
'id' INT( 11 ) NOT NULL AUTO_INCREMENT ,
'forum_id' VARCHAR( 255 ) NOT NULL ,
'data' VARCHAR( 255 ) NOT NULL ,
'autore' VARCHAR( 255 ) NOT NULL ,
'titolo' VARCHAR( 255 ) NOT NULL ,
INDEX ( 'id' )
);");
mysql_query("CREATE TABLE 'forum_lite_thread' (
'id' INT( 11 ) NOT NULL AUTO_INCREMENT ,
'topic_id' VARCHAR( 255 ) NOT NULL ,
'data' VARCHAR( 255 ) NOT NULL ,
'autore' VARCHAR( 255 ) NOT NULL ,
'titolo' VARCHAR( 255 ) NOT NULL ,
'testo' TEXT NOT NULL ,
INDEX ( 'id' )
);");

# Creo il mio primo forum
mysql_query("INSERT INTO 'forum_lite_main' VALUES ('', 'Il forum ')");

echo "L'installazione è avvenuta con successo!<br />\n";
?>

Ho notato che nella riga "Creo il mio primo forum" non fa il suo dovere, non trasmette nulla a 'forum_lite_main'.. secondo te è giusta ? perchè non vorrei partisse tutto da li l'errore.. inatanto eseguo ciò che mi hai detto di fare.
 
ciao
forse hai ragione
modificala in
PHP:
<?php
//....
mysql_query("INSERT INTO forum_lite_main(id, titolo) VALUES ('', 'Il forum ')");
//.....
?>
poi vai a vedere con mysqlmanager quello che ci trovi dentro, mal che vada scrivi la riga a mano

nell'id metti 1
e in titolo Il Forum o quello che vuoi
 
GRANDEEEEEEEEEEEEE Borgo Italia ! GRANDISSSIMOOOO! ora così va :-)
non so come ringraziarti :-)


GRAZIEEEE GRAZIEEEE
 

Discussioni simili