Call to undefined function (era: connessione con mysql)

Salve a tutti.

Ho il seguente problema.

Lancio il mio index e viene visualizzata la mia home page.

Tutto bene per quanto riguarda la connessione al database.

Però quando clicco su una delle categorie che comunque sono presenti nel database ecco cosa ottengo:

Fatal error: Call to undefined function: get_table_campo() in c:\programmi\easyphp\www\miosito\include\header.inc on line 32

line 32: <param name="movie" value="flash/<?php echo get_table_campo("header_flash","nome","attivato","1");?>">

Indirizzo browser: http://localhost/prisma/public_html/cat.html?cat=266

Grazie anticipatamente per l'aiuto che spero mi arriverà. :bye:

inviato 11 anni fa
franco
modificato 11 anni fa
Gianni Tomasicchio
X 0 X

L'errore non dipende da MySQL ma dallo script che stai usando. La pagina header.inc chiama una funzione dal nome "get_table_campo" alla riga 32 ma questa funzione non è stata dichiarata.

Dovresti quindi controllare se la funzione "get_table_campo" esiste in uno dei files del tuo script e come mai questo file non sia stato caricato.

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

La funzione get_table_campo sta in util.php nella cartella c:\..\miosito\include

function get_table_campo($table,$campo,$where,$value)

{

   $sql="select $campo from $table where $where='$value'";

   $res=mysql_query($sql)or die("Errore : $sql");

   $row=mysql_fetch_array($res);

   return $row[$campo];

In index.html che sta in c:\..\miosito\public_html c'è:

<?php include ("C:\Programmi\EasyPHP\www\miosito\include\prepend.inc");?>

<?php

dove prepend.inc che sta in c:\..\mio sito\include contiene

<?php

   setlocale (LC_ALL,"italian");

   include("openDB.php");

   include("util.php");

   include("util2.php");

?>

Quindi pare che la funzione get_table_campo sia stata caricata!!

 :bye:

risposto 11 anni fa
franco
X 0 X

se fosse stata caricata non ti avrebbe dato quell'errore...

controlla bene i percorsi,

Adesso devo scappare, buon fine settimana.

Se non risolvi fammi sapere

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Ho controllato tutti i path e pare che vadano bene.

 :bye:

risposto 11 anni fa
franco
X 0 X

Ho riletto i tuoi script e credo di aver trovato l'errore: quando usi dei percorsi relativi devi considerarli relativi al percorso del file chiamato dal browser, ovvero dal primo file che viene lanciato. Nel tuo caso il primo file è index.html (strana estensione per un file php...) che si trova nella cartella "public_html". Questo file chiama "include\prepend.inc" e questo a sua volta chiama "util.php" che così come sta scritto verrà cercato nella cartella "public_html" e non nella cartella "include".

Per risolvere o usi tutti percorsi assoluti (C:\...) oppure i corretti percorsi relativi. Nel caso ci util.php sarebbe "..\include\util.php"

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Tutti i path sono assoluti.

Anche mettendo in ...\include\prepend.inc

<?php

   setlocale (LC_ALL,"italian");

   include("c:\programmi\easyphp\www\miosito\include\openDB.php");

   include("C:\programmi\easyphp\www\miosito\include\util.php");

   include("c:\programmi\easyphp\www\miosito\include\util2.php");

?>

ho lo stesso risultato di prima.

 :bye:

risposto 11 anni fa
franco
X 0 X

Una cosa non mi è chiara: qual'è lo script che include "header.inc"? Ed in quale momento?

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Header.inc è incluso in cat.html con path assoluto

<?php include("c:\programmi\easyphp\www\miosito\include\header.inc");?>

Comunque adesso c'è un fatto nuovo.

Se clicco su una delle categorie ho:

Parse error: parse error, unexpected T_STRING, expecting ',' or ';' in c:\programmi\easyphp\www\miosito\include\header.inc on line 32

Warning: Accès refusé pour l'utilisateur: 'ODBC@localhost' (mot de passe: NON) in c:\programmi\easyphp\www\miosito\public_html\cat.html on line 8

Warning: MySQL Connection Failed: Accès refusé pour l'utilisateur: 'ODBC@localhost' (mot de passe: NON) in c:\programmi\easyphp\www\miosito\public_html\cat.html on line 8

Warning: MySQL: A link to the server could not be established in c:\programmi\easyphp\www\miosito\public_html\cat.html on line 8

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\programmi\easyphp\www\miosito\public_html\cat.html on line 9

Fatal error: Call to undefined function: display_percorso() in c:\programmi\easyphp\www\miosito\public_html\cat.html on line 13

line 8 e 9 di cat.html ho:

$result = mysql_query ("select * from notizie where categoria ='$cat'");

$numrows = mysql_num_rows($result);

line 13 di cat.html ho:

echo display_percorso($cat);

 :bye:

risposto 11 anni fa
franco
X 0 X

inizia a risolvere questo errore:

Parse error: parse error, unexpected T_STRING, expecting ',' or ';' in c:\programmi\easyphp\www\miosito\include\header.inc on line 32

Si tratta di un errore di sintassi, è stata trovata una stringa ma il php si aspettava invece una virgola o un punto e virola.

P.S.: butta via easy php

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Ho messo a posto la linea 32 di header.inc (avevo io incluso delle cose che poi non avevo cancellato) e quindi sono al punto di prima.

Pare quindi che la la linea 32 di header.inc

<param name="movie" value="flash/<?php echo get_table_campo("header_flash","nome","attivato","1");?>">

non venga eseguita.

C'è forse qualche errore di sintassi?

 :bye:

risposto 11 anni fa
franco
X 0 X

per capire se ci sono altri errori nascosti metti come prima riga del primo script chiamato la seguente istruzione:

error_reporting (E_ALL);

Non mi sembra che la riga che hai riportato contenga errori.

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

In prepend.inc ho messo

error_reporting (E_ALL);

Ecco cosa ottengo:

Notice: Use of undefined constant id - assumed 'id' in C:\Programmi\EasyPHP\www\miosito\public_html\index.html on line 177

Notice: Use of undefined constant titolobreve - assumed 'titolobreve' in C:\Programmi\EasyPHP\www\miosito\public_html\index.html on line 177

Notice: Use of undefined constant immagine - assumed 'immagine' in C:\Programmi\EasyPHP\www\miosito\public_html\index.html on line 201

Seguono altri Notice (una ventina).

Linea 177 ho:

echo '<a href="cat.html?cat='.$row_[id].'" class="a1">'.$row_[titolobreve].'</a>';?>

Linea 201 ho:

if($row_[immagine])

echo '<img src="show_image.php?cat='.$row_[id].'" width="118" align="left" style="margin-right:10px" alt="">';

 :bye:

risposto 11 anni fa
franco
X 0 X

Purtroppo questi sono errori di programmazione che però, nella maggior parte dei casi non compromettono il risultato e non credo siano correlati con il problema della funzione get_table_campo.

Comunque per risolvere quei notices ti basta mettere degli apici all'interno delle parentesi quadre, così:

$row_['immagine'] al posto di $row_[immagine]

Ti consiglio di fare queste modifiche così le rimanenti segnalazioni di errore ti aiuteranno a capire cosa stia succedendo.

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Sono spariti tutti i notice.

Adesso ho:

Notice: Use of undefined constant foto_anteprima - assumed 'foto_anteprima' in C:\Programmi\EasyPHP\www\miosito\public_html\php52.tmp on line 339

Seguono altre notice dello stesso tipo.

Non so dov'è php52.tmp

 :bye:

risposto 11 anni fa
franco
X 0 X

stai usando il dreamweaver? in tal caso potrebbe essere un suo file temporaneo, altrimenti non so... :dunno:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Secondo me bisognerebbe configurare il file php.ini.

Il problema è il motore php. :bye:

risposto 11 anni fa
franco
X 0 X

sto provando tutto con dzsoft php editor 3.1.2

Se clicco su una delle categorie ecco cosa ottengo:

« Precedente   \n"; } if ( $pages != 1 ) { for ($i=1;$i<=$pages;$i++) { $newoffset=$limit*($i-1); if ( ((($offset)/$limit)==($i-1)) ) { echo "$i   \n"; } else { echo "$i   \n"; } } } if (!((($offset)/$limit)+1==$pages) && $pages!=1) { $newoffset=$offset+$limit; echo "Avanti »

\n"; } ?>

 :bye:

risposto 11 anni fa
franco
X 0 X

Secondo me bisognerebbe configurare il file php.ini.

Il problema è il motore php. :bye:

 :nono: non credo proprio, questi non sono errori di configurazione

sto provando tutto con dzsoft php editor 3.1.2

Se clicco su una delle categorie ecco cosa ottengo:

« Precedente \n"; } if ( $pages != 1 ) { for ($i=1;$i<=$pages;$i++) { $newoffset=$limit*($i-1); if ( ((($offset)/$limit)==($i-1)) ) { echo "$i \n"; } else { echo "$i \n"; } } } if (!((($offset)/$limit)+1==$pages) && $pages!=1) { $newoffset=$offset+$limit; echo "Avanti »

\n"; } ?>

e questa è la conferma! Inizia a cambiare le estensioni dei files da html a php

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Ho cambiato i file html in php. Non succede niente.

Il file cat.html è necessario.

Non so più cosa fare.

 :bye:

risposto 11 anni fa
franco
X 0 X

L'indirizzo è http://localhost/miosito/public_html/cat.html?cat=266

Sembra che non riesca ad accedere a cat=266

L'errore che mi da è questo:

<BODY onload="<br />

<b>Notice</b>:  Undefined variable:  PHP_SELF in <b>c:\programmi\easyphp\www\mio sito\include\header.inc</b> on line <b>25</b><br />

Alla linea 25 di header.inc ho

<BODY onload="<?php if(strstr($PHP_SELF,"cat.html")) echo "initdoc();";?>"

 :bye:

risposto 11 anni fa
franco
X 0 X

cambia $PHP_SELF con $_SERVER['PHP_SELF']

un po' datato questo script...  :coolsmiley:

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Ho cambiato $PHP_SELF con $_SERVER['PHP_SELF']

in header.inc

Mozilla mi da

Fatal error: Call to undefined function: get_table_campo() in c:\programmi\easyphp\www\miosito\include\header.inc on line 32

IE parte molto lentamente

Dzsoft invece da

« Precedente   \n"; } if ( $pages != 1 ) { for ($i=1;$i<=$pages;$i++) { $newoffset=$limit*($i-1); if ( ((($offset)/$limit)==($i-1)) ) { echo "$i   \n"; } else { echo "$i   \n"; } } } if (!((($offset)/$limit)+1==$pages) && $pages!=1) { $newoffset=$offset+$limit; echo "Avanti »

\n"; } ?>

 :bye:

risposto 11 anni fa
franco
X 0 X

devi risolvere questo errore:

Fatal error: Call to undefined function: get_table_campo()

Segui l'ordine di caricamento dei vari files inclusi e controlla che quando viene lanciata la funzione get_table_campo() il file che ne contiene la dichiarazione sia stato caricato correttamente.

 :dunno:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

La catena di S. Antonio è

index.html include prepend.inc

che a sua volta include opendb.inc, util.inc e util2.inc

però non ho capito quando parte cat.html che include header.inc

 :bye:

risposto 11 anni fa
franco
X 0 X

le istruzioni PHP per le inclusioni sono: include, include_once, require, require_once

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Ho visto che cat.html viene invocato da index.html la prima volta così:

<?php

$sql_="select * from categorie where homepage=1 order by ordine";

$res_=mysql_query($sql_)or die("Errore :$sql_");

$row_=mysql_fetch_array($res_);

echo '<a href="cat.html?cat='.$row_['id'].'" class="a1">'.$row_['titolobreve'].'</a>';

?>

La seconda volta:

<?php

if($row_['immagine'])

echo '<img src="show_image.php?cat='.$row_[id].'" width="118" align="left" style="margin-right:10px" alt="">';

if($row_['id'])

{

echo '<img src="images/dot3.jpg" align="middle" alt="">&nbsp;

<label class="title2">'.$row_['titolobreve'].'</label>

<div style="padding-top:3px ">

<label class="text1">'.substr($row_['descrizione'],0,400).'...&nbsp;&nbsp;</label>

<a href="cat.html?cat='.$row_['id'].'" class="a1"><strong>continua</strong></a>

<img src="images/arr2.jpg" align="middle" alt="">

</div>';

}

?>

la terza volta così:

div class="t10" style="padding-top:16px; padding-left:25px; font-weight: bold; color: #696338;">

<a class="a1" href="cat.html?cat=270">PARTNERSHIP</a>

</div>

In cat.html c'è poi l'include di header.inc con percorso assoluto.

 :bye:

risposto 11 anni fa
franco
X 0 X

Ho risolto il problema!!!

Mancava il prepend.inc in header.inc

Infatti header.inc aveva bisogno dei file opendb.inc util.inc util2.inc

Grazie per la collaborazione e al prossimo problema.

 :bye: :bye:

risposto 11 anni fa
franco
X 0 X

 :clapping:

 :bye:

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