Fata Error in uno script php

Salve, il mio problema è: ho creato uno script ma quando lo richiamo tramite un'altra pagina mi da come errore:

Fatal error: Cannot redeclare top() (previously declared in G:\Programmi\Apache Group\Apache2\htdocs\Test\top_foot.inc.php:10)

Lo script è:

<?

function top() { ?>

<html>

<head>

<meta name=generator content="script di Hi-Tech Wood">

</head>

<body bgcolor=ffffff text=000000>

<font face=verdana,tahoma,arial size=-1>

<h1>HI-Tech Wood</h1>

<br> <? }

function foot() { ?>

</body></html>

<? }

?>

Ringrazio chiunque voglia aiutarmi.

inviato 11 anni fa
gohan079
X 0 X

Per magg. chiarimenti inserisciìo gli script cosi come dovrebbero funzionare:

Questo è lo script dove viene segnalato il problema, (è una pagina che caratterizza la veste grafica, il file si chiama top_foot.inc.php):

<?php

function top() { ?>

<html>

<head>

<meta name=generator content="script di Hi-Tech Wood">

</head>

<body bgcolor=ffffff text=000000>

<font face=verdana,tahoma,arial size=-1>

<h1>HI-Tech Wood</h1>

<br> <? }

function foot() { ?>

</body></html>

<? }

?>

Questo è lo script insert.php è sostanzialmente un form dove vengono accolte le informazioni:

<?

include ("config.inc.php");

include ("top_foot.inc.php");

//intestazione

top();

?><style type="text/css">

<!--

body {

   background-color: #FFFFCC;

}

-->

</style>

<form method="post" action="save.php">

  <p>Titolo:

    <input type=text size=40 name=titolo>

  Data:

  <select name=giorno>

      <?

for ($i=1; $i<=31; $i++)

echo "<option value=$i>$i";

?>

  </select>

  <select name=mese>

      <option value=1>Gennaio

      <option value=2>Febbraio

      <option value=3>Marzo

      <option value=4>Aprile

      <option value=5>Maggio

      <option value=6>Giugno

      <option value=7>Luglio

      <option value=8>Agosto

      <option value=9>Settembre

      <option value=10>Ottobre

      <option value=11>Novembre

      <option value=12>Dicembre

    </select>

  <select name=anno>

      <option value=2001>2001

      <option value=2002>2002

      <option value=2003>2003

      <option value=2004>2004

      <option value=2005>2005

    </select>

  <br>

  <br>

Autore

<input type=text size=40 name=autore>

E-mail:

<input type=text size=40 name=mail>

</p>

  <p>Testo<br>

    <textarea name=testo cols=100 rows=35></textarea>

</p>

  <p>Password:

    <input type="password" size=40 name="pass">

    <input name="submit" type=submit value=Invia>

    </p>

  </form>

<?

// chiusura pagina

foot();

?>

Dopo di chè, premetto questo inciso, il file precedente deve chiamare in causa il file save.php che ha il compito di inserire i dati nel database, deve effettuare anche un controllo su una password che fornisco nel form e che deve essere confrontata con una password da me inserita nel file config.inc.php, senza l'inclusione del file insert.php la passvord non viene riconosciuta (perchè? visto che è proprio insert.php che chiama in causa save.php ?), comunque il codice del file save.php é:

<?

include("insert.php");

include("top_foot.inc.php");

include("config.inc.php");

top();

if ($pass != $password):

echo "Password errata";

elseif (trim($titolo)=="" OR trim($testo)==""):

echo "I campi Titolo e Testo devono essere riempiti!";

else:

$titolo = addslashes(stripslashes($titolo));

$autore = addslashes(stripslashes($autore));

$mail = addslashes(stripslashes($mail));

$testo = addslashes(stripslashes($testo));

$titolo = str_replace("<", "&lt;", $titolo);

$titolo = str_replace(">", "&gt;", $titolo);

$autore = str_replace("<", "&lt;", $autore);

$autore = str_replace(">", "&gt;", $autore);

$testo = str_replace("<", "&lt;", $testo);

$testo = str_replace(">", "&gt;", $testo);

$testo = nl2br($testo);

$data=mktime("0", "0", "0", $mese, $giorno, $anno);

$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 che si occupa dell'insersione

$query1 = "INSERT INTO wood (titolo, testo, data, nome) VALUES ('$titolo', '$testo', '$data', '$autore')";

$query2 = "INSERT IGNORE INTO autori (nome, mail) VALUES ('$autore', '$mail')";

if (mysql_query($query1, $db) AND mysql_query($query2, $db))

echo "L'articolo è stato inserito correttamente";

else

echo "Erorre durante l'inserimento $query";

endif;

foot();

?>

Spero che qualche anima gentile possa aiutarmi a risolvere questo problema, vi ringrazio anticipatamente.

risposto 11 anni fa
gohan079
X 0 X

Aiutatemi sto impazzendo

risposto 11 anni fa
gohan079
modificato 11 anni fa
X 0 X

L'errore che ricevi è causato dal fatto che quando viene eseguito lo script, per qualche ragione che devi scoprire, viene incluso più di una volta lo script top_foot.inc.php

Poichè in quello script viene dichiarata una funzione, PHP si trova 2 volte di fronte alla stessa funzione e pertanto segnala l'errore.

Controlla quindi perché lo script top_foot.inc.php viene incluso 2 volte.

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Io credo che sia perchè includo il file insert.php, infatti in quest'ultimo vi è già l'inclusione del file top_foot.inc.php, difatti se tolgo l'inclusione il file non mi riporta l'errore ma , quello che succede è che non mi riconosce la password e non mi fa andare avanti, in più posso dire che ho provato a sostituire la variabile che contiene la password con la stringa della password stessa (non so se sono stato chiaro) ma il problema permane.

risposto 11 anni fa
gohan079
X 0 X

Ora il problema mi è più chiaro, ho provato a commentare la riga che mi effettuava il controllo, ho inserito tutti i dati, nei campi, ma avendo inserito un controllo sui campi per verificare se sono vuoi, il messaggio che mi esce è che i campi deono essere riempiti, quindi tirando le somme il problema è che non preleva le informazioni che scrivo nelle text area del form presente nel file inser.php oppure il pulsante invia del form non invia le informazioni contenute nelle text area del file.

risposto 11 anni fa
gohan079
X 0 X

Per evitare le inclusioni multiple di uno stesso file si può utilizzare il comando include_once('nomefile') in modo che il PHP ingnori le ulteriori inclusioni dello stesso file.

Per quanto riguarda la password ed in generale dei dati del form il problema è diverso.

Il tuo script per funzionare richiede che nel php.ini la direttiva register_global sia ad ON. Infatti nello script la variabile $password (come tutte le altre) vengono direttamente dal form. Ma questa cosa funziona SOLO con il register_global attivato.

In caso contrario per riferirsi ai dati provenienti da un form si usa l'array $_POST. Ad esempio $_POST['password'], $_POST['titolo'], $_POST['autore'] ecc..

Tieni presente che ormai da parecchio tempo l'impostazione register_global è ad OFF di default per ragioni di sicurezza, quindi conviene che modifichi lo script in modo da usare l'array $_POST.

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

potresti spiegarmi meglio come usare questaltro metodo (cioè al posto di cosa va inserito)

 :'(, in verità non ho nemmeno capito in quale file devo fare la modifica (credo nel file inser.php)

risposto 11 anni fa
gohan079
X 0 X

Lo script che stai usano molto probabilmente è vecchio. Lo si deduce da come maneggia i dati provenienti dal form.

Per poterlo utilizzare hai 2 possibilità:

1) avvisare il PHP di comportarsi "alla vecchia maniera". Devi modificare il file php.ini (probabilmente si trova nella cartella in cui hai installato PHP, oppure nella cartella di windows).

Cerca la riga "register_globals = Off" e mettila ad On. Non dimenticarti di riavviare Apache.

2) adeguare il tuo script al nuovo comportamento di PHP.

Nel tuo form hai dei campi per inserire i seguenti dati:

titolo, giorno, mese, anno, autore, mail, testo, password

Lo script che li memorizza nel db (save.php) utilizza le seguenti variabili per recuperare tali informazioni:

$titolo, $giorno, $mese, $anno, $autore, $mail, $testo, $password

Queste variabili però sono disponibili SOLO se la direttiva register_globals è ad On. In caso contrario, al loro posto devi usare:

$_POST['titolo'], $_POST['giorno'], $_POST['mese'], $_POST['anno'], $_POST['autore'], $_POST['mail'], $_POST['testo'], $_POST['password']

Quindi nel file save.php potresti sostituire alle vecchie variabili queste che ti ho suggerito.

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Ok funziona, un ultimo problema e forse riesco ad inserire i dati nel database:

Nel file save.php ho le righe:

$query1 = "INSERT INTO wood (titolo, testo, data, nome) VALUES ('$titolo', '$testo', '$data', '$autore')";

$query2 = "INSERT IGNORE INTO autori (nome, mail) VALUES ('autore', '$mail')";

per quanto detto ho pensato di modificare le righe come segue:

$query1 = "INSERT INTO wood (titolo, testo, data, nome) VALUES ('$_POST['titolo']', '$_POST['testo']', '$_POST['data']', '$_POST['autore']')";

$query2 = "INSERT IGNORE INTO autori (nome, mail) VALUES ('$_POST['autore']', '$_POST['mail']')";

ma mi da errore, allora ho modificato in questo modo:

$query1 = "INSERT INTO wood (titolo, testo, data, nome) VALUES ($_POST['titolo'], $_POST['testo'], $_POST['data'], $_POST['autore'])";

$query2 = "INSERT IGNORE INTO autori (nome, mail) VALUES ($_POST['autore'], $_POST['mail'])";

ma mi da errore,  nella sua veste originale :

$query1 = "INSERT INTO wood (titolo, testo, data, nome) VALUES ('$titolo', '$testo', '$data', '$autore')";

$query2 = "INSERT IGNORE INTO autori (nome, mail) VALUES ('$autore', '$mail')";

almeno no mi da erroe nel linguaggio ma comunque non riesce ad inserire id dati, riporto la sezione di codice deputata alla verifica:

if (mysql_query($query1, $db) AND mysql_query($query2, $db))

echo "L'articolo è stato inserito correttamente";

else

echo "Erorre durante l'inserimento $query";

endif;

Mi sai dire qualcosa di cosa succede ora :-((

P.S.: Potresti indicarmi una buona guida del linguaggio, vedo che ne sai molto potresti indicarmi una buona guida !!!

risposto 11 anni fa
gohan079
modificato 11 anni fa
X 0 X

Niente di grave. E' la gestione degli array all'interno di stringhe.

Quando vuoi inserire il valore di un array in una stringa (con i doppi apici ovviamente) devi riportare l'array senza le virgolette, in questo modo:

$query1 = "INSERT INTO wood (titolo, testo, data, nome) VALUES ('$_POST[titolo]', '$_POST[testo]', '$_POST[data]', '$_POST[autore]')";

$query2 = "INSERT IGNORE INTO autori (nome, mail) VALUES ('$_POST[autore]', '$_POST[mail]')";

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Ciao, deve esserci qualche altro problema, l'errore permane, ti riporto nuovamento il codice:

<?

//include("insert.php");

include("config.inc.php");

include("top_foot.inc.php");

top();

if ($_POST['pass'] != $password):

echo "Password errata";

elseif (trim($_POST['titolo'])=="" OR trim($_POST['testo'])==""):

echo "I campi Titolo e Testo devono essere riempiti!";

else:

$titolo = addslashes(stripslashes($titolo));

$autore = addslashes(stripslashes($autore));

$mail = addslashes(stripslashes($mail));

$testo = addslashes(stripslashes($testo));

$titolo = str_replace("<", "&lt;", $titolo);

$titolo = str_replace(">", "&gt;", $titolo);

$autore = str_replace("<", "&lt;", $autore);

$autore = str_replace(">", "&gt;", $autore);

$testo = str_replace("<", "&lt;", $testo);

$testo = str_replace(">", "&gt;", $testo);

$testo = nl2br($testo);

$data=mktime("0", "0", "0", $_POST['mese'], $_POST['giorno'], $_POST['anno']);

$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 che si occupa dell'insersione

$query1 = "INSERT INTO wood (titolo, testo, data, nome) VALUES ('$_POST[titolo]', '$_POST[testo]', '$_POST[data]', '$_POST[autore]')";

$query2 = "INSERT IGNORE INTO autori (nome, mail) VALUES ('$_POST[autore]', '$_POST[mail]')";

if (mysql_query($query1, $db) AND mysql_query($query2, $db))

echo "L'articolo è stato inserito correttamente";

else

echo "Erorre durante l'inserimento $query";

endif;

foot();

?>

P.S.: Non dimenticare di indicarmi una buona guida. ciao

risposto 11 anni fa
gohan079
X 0 X

Non ci sono errori di sintassi. Che tipo di errore ricevi?

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

ciao, non è un errore proprio, ma il controllo che ho inserito per verificare se i dati sono stati inseriti non va avanti, cioè il controllo mi dice che i dati non sono stati inseriti, mi riferisco alle linee di codice :

if (mysql_query($query1, $db) AND mysql_query($query2, $db))

echo "L'articolo è stato inserito correttamente";

else

echo "Erorre durante l'inserimento $query";

endif;

risposto 11 anni fa
gohan079
X 0 X

Le query non vanno a buon fine perché non hai sostituito TUTTE le vecchie variabili con le nuove che ti ho suggerito.

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Ciao, mi sento avvilito, ho cambiato tutte le var. ma il controllo non riesco comunque a passarlo, non riesco ad inserire nulla nel db, mi puoi dare qualche altro aiuto ??

Riporto il codice modificato:+

<?

//include("insert.php");

include("config.inc.php");

include("top_foot.inc.php");

top();

if ($_POST['pass'] != $password):

echo "Password errata";

elseif (trim($_POST['titolo'])=="" OR trim($_POST['testo'])==""):

echo "I campi Titolo e Testo devono essere riempiti!";

else:

$titolo = addslashes(stripslashes($_POST['titolo']));

$autore = addslashes(stripslashes($_POST['autore']));

$mail = addslashes(stripslashes($_POST['mail']));

$testo = addslashes(stripslashes($_POST['testo']));

$titolo = str_replace("<", "&lt;", $_POST['titolo']);

$titolo = str_replace(">", "&gt;", $_POST['titolo']);

$autore = str_replace("<", "&lt;", $_POST['autore']);

$autore = str_replace(">", "&gt;", $_POST['autore']);

$testo = str_replace("<", "&lt;", $_POST['testo']);

$testo = str_replace(">", "&gt;", $_POST['testo']);

$testo = nl2br($_POST['testo']);

$data=mktime("0", "0", "0", $_POST['mese'], $_POST['giorno'], $_POST['anno']);

$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 che si occupa dell'insersione

$query1 = "INSERT INTO wood (titolo, testo, data, nome) VALUES ('$_POST[titolo]', '$_POST[testo]', '$_POST[data]', '$_POST[autore]')";

$query2 = "INSERT IGNORE INTO autori (nome, mail) VALUES ('$_POST[autore]', '$_POST[mail]')";

if (mysql_query($_POST['query1'], $db) AND mysql_query($_POST['query2'], $db))

echo "L'articolo è stato inserito correttamente";

else

echo "Erorre durante l'inserimento $query";

endif;

foot();

?>

risposto 11 anni fa
gohan079
X 0 X

Prova così (ho sistemato le variabili della query):

<?php
//include("insert.php");
include("config.inc.php");
include("top_foot.inc.php");
top();
if ($_POST['pass'] != $password):
echo "Password errata";
elseif (trim($_POST['titolo'])=="" OR trim($_POST['testo'])==""):
echo "I campi Titolo e Testo devono essere riempiti!";
else:
$titolo = addslashes(stripslashes($_POST['titolo']));
$autore = addslashes(stripslashes($_POST['autore']));
$mail = addslashes(stripslashes($_POST['mail']));
$testo = addslashes(stripslashes($_POST['testo']));

$titolo = str_replace("<", "&lt;", $_POST['titolo']);
$titolo = str_replace(">", "&gt;", $_POST['titolo']);
$autore = str_replace("<", "&lt;", $_POST['autore']);
$autore = str_replace(">", "&gt;", $_POST['autore']);
$testo = str_replace("<", "&lt;", $_POST['testo']);
$testo = str_replace(">", "&gt;", $_POST['testo']);
$testo = nl2br($_POST['testo']);
$data=mktime("0", "0", "0", $_POST['mese'], $_POST['giorno'], $_POST['anno']);
$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 che si occupa dell'insersione
$query1 = "INSERT INTO wood (titolo, testo, data, nome) VALUES ('$titolo', '$testo', '$data', '$autore')";
$query2 = "INSERT IGNORE INTO autori (nome, mail) VALUES ('$autore', '$mail')";

if (mysql_query($_POST['query1'], $db) AND mysql_query($_POST['query2'], $db))
echo "L'articolo è stato inserito correttamente";
else
echo "Erorre durante l'inserimento $query";
endif;
foot();
?>
risposto 11 anni fa
Gianni Tomasicchio
modificato 11 anni fa
X 0 X

Ho capiato ed incollato il codice nella pagina, il discorso non cambia, pagina bianca con la scritta Errore durante l'inserimento della query, il controllo non viene superato rileva ancora che l'inserimento non viene effettuato. non so più cosa fare.

risposto 11 anni fa
gohan079
X 0 X

Visto che è sabato...prova così ed eventualmente riporta l'errore:

<?php
//include("insert.php");
include("config.inc.php");
include("top_foot.inc.php");
top();

if ($_POST['pass'] != $password) {
   echo "Password errata";
}
elseif (trim($_POST['titolo'])=='' OR trim($_POST['testo'])=='') {
   echo "I campi Titolo e Testo devono essere riempiti!";
}
else
{
   if (!get_magic_quotes_gpc()) {
      $titolo = addslashes($_POST['titolo']);
      $autore = addslashes($_POST['autore']);
      $mail = addslashes($_POST['mail']);
      $testo = addslashes($_POST['testo']);
   }

   $titolo = htmlspecialchars($titolo);
   $autore = htmlspecialchars($autore);
   $testo = htmlspecialchars($testo);
   $testo = nl2br($testo);

   $data = mktime(0, 0, 0, $_POST['mese'], $_POST['giorno'], $_POST['anno']);

   $db = mysql_connect($db_host, $db_user, $db_password);
   if(!$db) {
      die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
   }

   $db_selected = mysql_select_db($db_name, $db);
   if(!$db_selected) {
      die ("Errore nella selezione del database. Verificare i parametri nel file  config.inc.php");
   }

   //Query che si occupa dell'inserimento
   $query1 = "INSERT INTO wood (titolo, testo, data, nome) VALUES ('$titolo', '$testo', '$data', '$autore')";

   $query2 = "INSERT IGNORE INTO autori (nome, mail) VALUES ('$autore', '$mail')";

   $result = mysql_query($query1, $db);
   if (!$result) {
      die('Errore nella query: ' . mysql_error());
   }
   
   $result = mysql_query($query2, $db);
   if (!$result) {
      die('Errore nella query: ' . mysql_error());
   }

   echo "L'articolo è stato inserito correttamente";
}
foot();
?>

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Ciao, non so come ringraziarti per tutto quello che hai fatto fino ad ora, cmq il problema non è ancora risolto, questo è il problema che mi si presente:

Errore nella query: Unknown column 'nome' in 'field list'

risposto 11 anni fa
gohan079
X 0 X

Il problema è causato dalla query che fa riferimento ad un campo della tabella "wood" di MySQL dal nome "nome". L'errore dice che tale campo non esiste. Devi quindi controllare la struttura della tabella "wood" e  verificare il nome corretto del campo che memorizza l'autore.

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

ciao, il problema è sempre lo stesso, ora ti riporto lo script che mi crea le due tabelle (questo funziona perchè le tabelle vengono create e mi conferma la creazione:

<?

include("config.inc.php");

$db = mysql_connect($db_host, $db_user, $db_password);

if($db == FALSE)

die ("Errore nella connesione. Verificare i parametri di connessione in config.inc.php");

mysql_select_db($db_name, $db)

or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");

$query1 = "CREATE TABLE Wood (id INT (5) UNSIGNED not null AUTO_INCREMENT,

titolo VARCHAR (255) not null , testo TEXT not null , data INT (11) , autore VARCHAR (50) , mail VARCHAR (50) ,

PRIMARY KEY (id))";

$query2 = "CREATE TABLE autori (nome VARCHAR(50) not null , mail VARCHAR(50) , PRIMARY KEY (nome))";

if (mysql_query($query1, $db) AND mysql_query($query2, $db))

echo "L'installazione è stata eseguita correttamente";

else echo "Errore durante l'installazione:<br>" .mysql_error();

mysql_close($db);

?>

Dopo devo inserire i dati nelle tabelle tramite lo script del file insert.php

<?

include ("config.inc.php");

include ("top_foot.inc.php");

//intestazione

top();

?><style type="text/css">

<!--

body {

   background-color: #FFFFCC;

}

-->

</style>

<form method="POST" action="save.php">

  <p>Titolo:

    <input type="text" size=40 name="titolo">

  Data:

  <select name=giorno>

      <?

for ($i=1; $i<=31; $i++)

echo "<option value=$i>$i";

?>

  </select>

  <select name=mese>

      <option value=1>Gennaio

      <option value=2>Febbraio

      <option value=3>Marzo

      <option value=4>Aprile

      <option value=5>Maggio

      <option value=6>Giugno

      <option value=7>Luglio

      <option value=8>Agosto

      <option value=9>Settembre

      <option value=10>Ottobre

      <option value=11>Novembre

      <option value=12>Dicembre

    </select>

  <select name=anno>

      <option value=2001>2001

      <option value=2002>2002

      <option value=2003>2003

      <option value=2004>2004

      <option value=2005>2005

    </select>

  <br>

  <br>

Autore

<input type="text" size=40 name="autore">

E-mail:

<input type="text" size=40 name="mail">

</p>

  <p>Testo<br>

    <textarea name="testo" cols=100 rows=35></textarea>

</p>

  <p>Password:

    <input type="password" size=40 name="pass">

    <input name="submit" type=submit value=Invia>

    </p>

  </form>

<?

// chiusura pagina

foot();

?>

questo è solo un forma a sua volta manda i dati al file save.php che ha il compito di inserire i dati nelle tabelle:

<?php

//include("insert.php");

include("config.inc.php");

include("top_foot.inc.php");

top();

if ($_POST['pass'] != $password) {

   echo "Password errata";

}

elseif (trim($_POST['titolo'])=='' OR trim($_POST['testo'])=='') {

   echo "I campi Titolo e Testo devono essere riempiti!";

}

else

{

   if (!get_magic_quotes_gpc()) {

      $titolo = addslashes($_POST['titolo']);

      $autore = addslashes($_POST['autore']);

      $mail = addslashes($_POST['mail']);

      $testo = addslashes($_POST['testo']);

   }

   $titolo = htmlspecialchars($titolo);

   $autore = htmlspecialchars($autore);

   $testo = htmlspecialchars($testo);

   $testo = nl2br($testo);

   $data = mktime(0, 0, 0, $_POST['mese'], $_POST['giorno'], $_POST['anno']);

   $db = mysql_connect($db_host, $db_user, $db_password);

   if(!$db) {

      die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");

   }

   $db_selected = mysql_select_db($db_name, $db);

   if(!$db_selected) {

      die ("Errore nella selezione del database. Verificare i parametri nel file  config.inc.php");

   }

   //Query che si occupa dell'inserimento

   $query1 = "INSERT INTO wood (titolo, testo, data, nome) VALUES ('$titolo', '$testo', '$data', '$autore')";

   $query2 = "INSERT IGNORE INTO autori (nome, mail) VALUES ('$autore', '$mail')";

   $result = mysql_query($query1, $db);

   if (!$result) {

      die('Errore nella query: ' . mysql_error());

   }

   $result = mysql_query($query2, $db);

   if (!$result) {

      die('Errore nella query: ' . mysql_error());

   }

   echo "L'articolo è stato inserito correttamente";

}

foot();

?>

Ora mi chiedo perchè i valori della prima tabella vengono presi mentre quelli della seconda (vedi nome) mi danno errore ? Quello che devo realizzare è una relazione tra la tabella autori che contiene i dati nome e mail e i restanti dati presenti nella tabella wood.

risposto 11 anni fa
gohan079
X 0 X

vai nello script che ti ho postato prima e sostituisci:

$query1 = "INSERT INTO wood (titolo, testo, data, nome) VALUES ('$titolo', '$testo', '$data', '$autore')";

con

$query1 = "INSERT INTO wood (titolo, testo, data, autore) VALUES ('$titolo', '$testo', '$data', '$autore')";

Nella tabella wood non c'è un campo "nome" ma "autore"  ;)

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda