Forum PHP

Marco Merenghe

Nuovo Utente
4 Set 2012
17
0
0
Salve a tutti, premessa sono un novellino di php e sto iniziando adesso a conoscere il linguaggio.
Ho letto la guida https://www.mrw.it/php/articoli/creare-forum-php-1a-parte_270.html per creare un semplice forum in php però mi da i seguenti errori:
1: Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\Program Files (x86)\EasyPHP-12.0\www\PhpProject1\index.php on line 13
2: la variabile topic_id risulta indefinita
e non so come risolverli qualcuno può aiutarmi grazie
 
ciao il primo errore sono riuscito a correggerlo ma il secondo no anche mettendo prima della linea di errore $topic_id = null; quando lancio la pagina mi da questi errori:
Notice: Use of undefined constant topic_id - assumed 'topic_id' in C:\Program Files (x86)\EasyPHP-12.0\www\PhpProject1\forum.php on line 34

Notice: Undefined index: topic_id in C:\Program Files (x86)\EasyPHP-12.0\www\PhpProject1\forum.php on line 34


help meeeeeeeeeeeeeeee!!
 
http://lmgtfy.com/?q=Warning:+mysql_fetch_array()+expects+parameter+1+to+be+resource

Che la variabile indefinita intendi un errore simile?
Notice: Undefined variable: d in /opt/lampp/htdocs/index.php on line 2
Se si metti prima di quella linea $nome_variabile = null;

ciao il primo errore sono riuscito a correggerlo ma il secondo no anche mettendo prima della linea di errore $topic_id = null; quando lancio la pagina mi da questi errori:
Notice: Use of undefined constant topic_id - assumed 'topic_id' in C:\Program Files (x86)\EasyPHP-12.0\www\PhpProject1\forum.php on line 34

Notice: Undefined index: topic_id in C:\Program Files (x86)\EasyPHP-12.0\www\PhpProject1\forum.php on line 34


help meeeeeeeeeeeeeeee!!
 
Hai modificato qualcosa?
Comunque io mi eserciterei prima a cercare di capire gli errori. Cosa dice l'errore?

In pratica dice: attenzione stai utilizzando una costante non definita nella line di codice 34 e si presume che sia 'topic_id'. Il file si trova in ...


Credo l'errore sia riconducibile a
$topic_id = $result3[topic_id]+1;
 
Hai modificato qualcosa?
Comunque io mi eserciterei prima a cercare di capire gli errori. Cosa dice l'errore?

In pratica dice: attenzione stai utilizzando una costante non definita nella line di codice 34 e si presume che sia 'topic_id'. Il file si trova in ...


Credo l'errore sia riconducibile a
$topic_id = $result3[topic_id]+1;

ciao, si questo l'avevo capito pure io infatti sul file forum.php prima della riga di codice $topic_id = $result3[topic_id]+1;
come mi hai consigliato in precedenza ho inserito $topic_id = null; ma l'errore non viene risolto e non so come correggerlo...:hammer:
cmq i filè così come come erano dal sito li ho copiati e non ho modificato nulla
 
Ultima modifica:
$topic_id = $result3[topic_id]+1;
Credo debba diventare
$topic_id = $result3['topic_id']+1;

Il problema è che non è alla riga 34, ma alla 33. Forse per quella cosa che ti ho fatto aggiungere ;)
 
$topic_id = $result3[topic_id]+1;
Credo debba diventare
$topic_id = $result3['topic_id']+1;

Il problema è che non è alla riga 34, ma alla 33. Forse per quella cosa che ti ho fatto aggiungere ;)

Ciao ho fatto la modifica che hai detto. cambiando $topic_id = $result3[topic_id]+1;
in $topic_id = $result3['topic_id']+1;
ma l'errore non cambia
Notice: Undefined index: topic_id in C:\Program Files (x86)\EasyPHP-12.0\www\PhpProject1\forum.php on line 34:crying:

non so + che fare il codice l'ho preso dalla guida guida https://www.mrw.it/php/artico...parte_270.html ed ho modificato solo la connessione al db
 
Ultima modifica:
codice

ciao posto il codice del file incriminato così lo analizziamo insieme vediamo se ho capito il problema:

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

# Recupero i topic del forum
$query = @mysql_query("SELECT * FROM forum_lite_topics
    WHERE forum_id = '" . $_GET[f] . "' ORDER BY data ASC");

# Recupero il titolo del forum per il percorso
$query2 = @mysql_query("SELECT titolo FROM forum_lite_main
    WHERE id = '" . $_GET[f] . "'");

# Recupero i messaggi nel topic
$query3 = @mysql_query("SELECT MAX(topic_id) FROM 
    forum_lite_thread");

$result2 = @mysql_fetch_array($query2);
$result3 = @mysql_fetch_array($query3);

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

# Stampo a video tutti i topic del Forum selezionato
while($result = @mysql_fetch_array($query))
{
    echo "<li><a href=\"thread.php?f=$_GET[f]&t=$result[id]\">";
    echo "$result[titolo]</a>";
    echo "<i>di $result[autore]</i>";
}

# Recupero il valore più alto di topic_id e lo incremento di uno
# per creare il link nuovo topic
#$topic_id = null;
$topic_id = $result3[topic_id];
echo "<p><a href=\"new.php?f=$_GET[f]&t=$topic_id\">";
echo "Nuovo topic</a>";
?>

come vedi topic_id è un campo integer del db e ne viene estratto il massimo
$query3 = @mysql_query("SELECT MAX(topic_id) FROM
forum_lite_thread"); dopo di che però sotto alla riga 34 la riga incriminata topic_id viene passato ad un arrei ma così non è sbagliato correggimi se sbaglio perchè non è stato definito giusto non dovrei prima assegnare alla variabile $topic_id il valore di topic_id estratto dal db? prima di utilizzarlo come indice per l'arrei ? $topic_id = $result3[topic_id];:crying:
 
Ultima modifica di un moderatore:
TI faccio un esempio:
PHP:
<?php
$array=array('caspita' => '1');
echo ($array[caspita]+1);
?>
Interprete:
PHP Notice: Use of undefined constant caspita - assumed 'caspita' in /home/marco/Scrivania/php.php on line 3
2


PHP:
<?php
$array=array('caspita' => '1');
echo ($array['caspita']+1);
?>
Interprete:
2
 
TI faccio un esempio:
PHP:
<?php
$array=array('caspita' => '1');
echo ($array[caspita]+1);
?>
Interprete:
PHP Notice: Use of undefined constant caspita - assumed 'caspita' in /home/marco/Scrivania/php.php on line 3
2


PHP:
<?php
$array=array('caspita' => '1');
echo ($array['caspita']+1);
?>
Interprete:
2

Ciao, grazie per l'esempio ma non ho capito cosa vuoi spiegarmi ? e cmq visto il mio codice come lo dovrei modificare per evitare quell'errore ?:dipser:
 
Il problema è che l'installer non popola il database sql.

Esegui questo codice sql nel tuo server:
Codice:
CREATE TABLE IF NOT EXISTS `forum_lite_main` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `titolo` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ;
INSERT INTO `forum_lite_main` (`id`, `titolo`) VALUES
(1, 'Il forum di JacoZ');
CREATE TABLE IF NOT EXISTS `forum_lite_thread` (
  `id` int(11) NOT NULL,
  `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,
  KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `forum_lite_thread` (`id`, `topic_id`, `data`, `autore`, `titolo`, `testo`) VALUES
(0, '', '07/09/2012', 'marcomg', 'Titolo', 'messaggio'),
(0, '1', '07/09/2012', 'marcomg', 'Titolo', 'Ciao');
CREATE TABLE IF NOT EXISTS `forum_lite_topics` (
  `id` int(11) NOT NULL,
  `forum_id` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `data` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `autore` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `titolo` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
INSERT INTO `forum_lite_topics` (`id`, `forum_id`, `data`, `autore`, `titolo`) VALUES
(0, '', '07/09/2012', 'marcomg', 'Titolo'),
(0, '1', '07/09/2012', 'marcomg', 'Titolo');
 
Il problema è che l'installer non popola il database sql.

Esegui questo codice sql nel tuo server:
Codice:
CREATE TABLE IF NOT EXISTS `forum_lite_main` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `titolo` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ;
INSERT INTO `forum_lite_main` (`id`, `titolo`) VALUES
(1, 'Il forum di JacoZ');
CREATE TABLE IF NOT EXISTS `forum_lite_thread` (
  `id` int(11) NOT NULL,
  `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,
  KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `forum_lite_thread` (`id`, `topic_id`, `data`, `autore`, `titolo`, `testo`) VALUES
(0, '', '07/09/2012', 'marcomg', 'Titolo', 'messaggio'),
(0, '1', '07/09/2012', 'marcomg', 'Titolo', 'Ciao');
CREATE TABLE IF NOT EXISTS `forum_lite_topics` (
  `id` int(11) NOT NULL,
  `forum_id` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `data` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `autore` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `titolo` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
INSERT INTO `forum_lite_topics` (`id`, `forum_id`, `data`, `autore`, `titolo`) VALUES
(0, '', '07/09/2012', 'marcomg', 'Titolo'),
(0, '1', '07/09/2012', 'marcomg', 'Titolo');

ciao e grazie per la tua grande disponibilità: ti chiedo ma a te funziona correttamente io ho eseguito il codice che hai postato è questo è il risultato come chiamo la pagina index:
connesso con successo

JacoZ Forum Lite
Main
Il forum di JacoZ
dopo di ciò cliccando sul link forum di JacoZ viene richiamata la pagina /forum.php?f=1 e mi appare questo risultato:
connesso con successo

JacoZ Forum Lite
Main » Il forum di JacoZ
Titolodi marcomg
Notice: Undefined index: topic_id in C:\Program Files (x86)\EasyPHP-12.0\www\PhpProject1\forum.php on line 34

Nuovo topic.
come vedi l'errore c'è sempre bhoooo , e comunque cliccado poi sul link titolo di marcomg viene richiatama la pagina thread.php?f=1&t=0 che riporta altri errori oltre il link rispondi.
connesso con successo

JacoZ Forum Lite

Notice: Use of undefined constant t - assumed 't' in C:\Program Files (x86)\EasyPHP-12.0\www\PhpProject1\thread.php on line 6

Notice: Use of undefined constant f - assumed 'f' in C:\Program Files (x86)\EasyPHP-12.0\www\PhpProject1\thread.php on line 10

Notice: Use of undefined constant f - assumed 'f' in C:\Program Files (x86)\EasyPHP-12.0\www\PhpProject1\thread.php on line 14
Main »Il forum di JacoZ »Titolo

Rispondi
 
se ti posto tutti i file di questo benedetto piccolo forum, mi faresti la cortesia gentilmente di provarlo in locale tu così vedi gli errori ??
Ti ringrazio in anticipo
ciao
 
Ho fatto un po' di modifiche:
Ecco il file: http://www.mediafire.com/?2d6uuxq74gvxcen

Comunque impara prima il php, a capire gli errori.
Ciao!

Ciao si grazie infatti lo sto studiando ma non capivo da che derivano questi errori ed ho la necissita al lavoro di farlo funziona il più presto possibile.
Cmq ti ringrazio tanto ho controllato e visto che finalmente non riporta gli errori sembra funzionare dico sembra perchè no0n da nessun errore ma quando rispondo al topic che tu l'hai inserito manualmente dal file install con l'insert, oppure ne creo uno nuovo non viene elencato nella pagina ne il topic nuovo e ne la risposta a quello inserito. Ho controllato il db e ho visto che quando creo un nuovo topic o rispondo ad uno esistente nel db non viene scritto nulla.
 
Strano, perché a me funziona. Comunque quello script non è fatto un gran che bene.


Codice:
ed ho la necissita al lavoro di farlo funziona il più presto possibile
Perché? Devi imparare o essere pagato?
 
Strano, perché a me funziona. Comunque quello script non è fatto un gran che bene.


Codice:
ed ho la necissita al lavoro di farlo funziona il più presto possibile
Codice:
Perché? Devi imparare o essere pagato?

Ciao guarda non so il perchè non mi scrive sul db quando creo il nuovo topic o rispondo a quello esistente il fatto sta che dopo aver fatto queste operazioni controllando il db non c'è scritto nulla di nuovo invece quando ho eseguito il file install. che hai modificato tu ha scritto perfettamente sul db sia le tabelle che le insert.. cmq tutto lo script non so chi l' ha fatto (scritto) inizialmente io l'ho preso da questo link https://www.mrw.it/php/artico...parte_270.html mi sembrava buono ma a quanto vedo dai problemi che mi da non lo è.. cmq rispondendoti a quello che hai detto
Codice:
Perché? Devi imparare o essere pagato?
ho la necessita di imparere ad usare il php perchè mi pagano.
 
Capito, ma da quello che ho capito ti serve un forum dal fatto che lo devi fare il più presto possibile.
Comunque secondo me il fatto che non scrive sul database è che è sbagliata la query o il database.
 

Discussioni simili