Ciao a tutti, ho un problema nel dichiarare variabili all'interno di una classe.
Mi spiego:
ho creato una pagina 'ricerca_dati.php' contenente il seguente codice
il file 'classe_ricerca.php' contiene
e fin qui tutto ok, quando accedo a 'ricerca_dati.php' dal browser tutto funziona alla perfezione.
Poi però ho pensato di modificare la classe in questo modo
perché ho pensato che così facendo, volendo in futuro creare altri metodi di ricerca, non avrei dovuto ridefinire le 3 variabili all'interno di ogni metodo, ma basta richiamarle con $this. Invece ciò che ottengo accedendo a 'ricerca_dati.php' dal browser è una pagina bianca ad eccezione del codice html inserito prima del php, ovvero fino a
per il resto vuoto totale. Sicuramente sbaglio qualcosa nella dichiarazione delle variabili, ma non riesco a capire cosa....
Grazie per l'attenzione.
Mi spiego:
ho creato una pagina 'ricerca_dati.php' contenente il seguente codice
PHP:
<!DOCTYPE html>
<html>
<head>
[......]
</head>
<body>
<header>
<h1>Ricerca albo</h1>
</header>
<?php
$titolo = htmlentities($_GET["titolo"]);
$titolo = mysql_real_escape_string($titolo);
$self = htmlentities($_SERVER['PHP_SELF']);
$form = '
<form action="'.$self.'" method="GET">
<fieldset>
<legend>Cerca per titolo (o parte di esso)</legend>
<label for="titolo">
Titolo:<input type="text" id="titolo" name="titolo">
</label>
<input type="submit" value="Ricerca">
</fieldset>
<input type="submit" value="Ricerca">
</form>
';
/**********QUI INCLUDO IL FILE CLASSE_RICERCA.PHP**********/
require("classe_ricerca.php");
$Ricerca = new Ricerca();
if($titolo === '')
{
echo $form;
}
else if($titolo != '')
{
$Ricerca->titolo();
echo $form;
}
?>
</body>
</html>
PHP:
<?php
class Ricerca
{
/***********METODO COSTRUTTORE***********/
function Ricerca()
{
require_once("db_login_2.php");
$connect = mysql_connect($db_host, $db_user, $db_password);
if(!$connect)
{
die(mysql_error());
}
else{echo "connessione riuscita</br>";}
$data = mysql_select_db($db_database);
if(!$data)
{
die(mysql_error());
}
else{echo "database ".strtoupper($db_database)." selezionato</br>";}
}
/***********METODO DI RICERCA PER TITOLO***********/
function titolo()
{
$titolo = htmlentities($_GET["titolo"]);
$titolo = mysql_real_escape_string($titolo);
$cerca = "SELECT numeri,titoli,nome_testi,cognome_testi,
nome_disegni,cognome_disegni,tipo
FROM numeri
JOIN testi ON (numeri.id_testi=testi.id_testi)
JOIN disegni ON (numeri.id_disegni=disegni.id_disegni)
JOIN stampa ON (numeri.id_stampa=stampa.id_stampa)
WHERE numeri.titoli LIKE '%$titolo%'
ORDER BY numeri.numeri";
$result = mysql_query($cerca);
if(!$result)
{
die(mysql_error());
}
$albi = mysql_num_rows($result);
/********DICHIARO LE MIE 3 VARIABILI DIRETTAMENTE ALL'INTERNO DEL METODO********/
$magg_uno = "
<table>
<tr>
<th colspan='5'>
RICERCA PER TITOLO EFFETTUATA<br />
Parametro di ricerca: <strong class='trovato'>$titolo<br />
$albi albi trovati</strong>
</th>
</tr>
<tr>
<th>Numero</th>
<th>Titolo</th>
<th>Testi</th>
<th>Disegni</th>
<th>Stampa</th>
</tr>";
$uno = "
<table>
<tr>
<th colspan='5'>
RICERCA PER TITOLO EFFETTUATA<br />
Parametro di ricerca: <strong class='trovato'>$titolo<br />
$albi albo trovato</strong>
</th>
</tr>
<tr>
<th>Numero</th>
<th>Titolo</th>
<th>Testi</th>
<th>Disegni</th>
<th>Stampa</th>
</tr>";
$zero = "
<table>
<tr>
<th colspan='5'>
RICERCA PER TITOLO EFFETTUATA<br />
Parametro di ricerca: <strong class='trovato'>$titolo<br />
Spiacente, nessuna corrispondenza</strong>
</th>
</tr>
<tr>
<th>Numero</th>
<th>Titolo</th>
<th>Testi</th>
<th>Disegni</th>
<th>Stampa</th>
</tr>";
if($albi > 1)
{
echo $magg_uno;
}
else if($albi === 1)
{
echo $uno;
}
else
{
echo $zero;
}
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
$tit = strtoupper($row["titoli"]);
$num = $row["numeri"];
$tes1 = $row["nome_testi"];
$tes2 = $row["cognome_testi"];
$dis1 = $row["nome_disegni"];
$dis2 = $row["cognome_disegni"];
$sta = $row["tipo"];
echo "<tr>";
echo "<td>$num</td>";
echo "<td class='trovato'>$tit</td>";
echo "<td>$tes1 $tes2</td>";
echo "<td>$dis1 $dis2</td>";
echo "<td>$sta</td>";
echo "</tr>";
}
echo "</table>";
mysql_close($connect);
}
}
?>
Poi però ho pensato di modificare la classe in questo modo
PHP:
<?php
class Ricerca
{
/********DICHIARO SUBITO LE 3 VARIABILI IN MODO CHE SIANO COMUNI A TUTTI I METODI DELLA CLASSE********/
public $magg_uno = "
<table>
<tr>
<th colspan='5'>
RICERCA PER TITOLO EFFETTUATA<br />
Parametro di ricerca: <strong class='trovato'>$titolo<br />
$albi albi trovati</strong>
</th>
</tr>
<tr>
<th>Numero</th>
<th>Titolo</th>
<th>Testi</th>
<th>Disegni</th>
<th>Stampa</th>
</tr>";
public $uno = "
<table>
<tr>
<th colspan='5'>
RICERCA PER TITOLO EFFETTUATA<br />
Parametro di ricerca: <strong class='trovato'>$titolo<br />
$albi albo trovato</strong>
</th>
</tr>
<tr>
<th>Numero</th>
<th>Titolo</th>
<th>Testi</th>
<th>Disegni</th>
<th>Stampa</th>
</tr>";
public $zero = "
<table>
<tr>
<th colspan='5'>
RICERCA PER TITOLO EFFETTUATA<br />
Parametro di ricerca: <strong class='trovato'>$titolo<br />
Spiacente, nessuna corrispondenza</strong>
</th>
</tr>
<tr>
<th>Numero</th>
<th>Titolo</th>
<th>Testi</th>
<th>Disegni</th>
<th>Stampa</th>
</tr>";
/***********METODO COSTRUTTORE***********/
function Ricerca()
{
require_once("db_login_2.php");
$connect = mysql_connect($db_host, $db_user, $db_password);
if(!$connect)
{
die(mysql_error());
}
else{echo "connessione riuscita</br>";}
$data = mysql_select_db($db_database);
if(!$data)
{
die(mysql_error());
}
else{echo "database ".strtoupper($db_database)." selezionato</br>";}
}
/***********METODO DI RICERCA PER TITOLO***********/
function titolo()
{
$titolo = htmlentities($_GET["titolo"]);
$titolo = mysql_real_escape_string($titolo);
$cerca = "SELECT numeri,titoli,nome_testi,cognome_testi,
nome_disegni,cognome_disegni,tipo
FROM numeri
JOIN testi ON (numeri.id_testi=testi.id_testi)
JOIN disegni ON (numeri.id_disegni=disegni.id_disegni)
JOIN stampa ON (numeri.id_stampa=stampa.id_stampa)
WHERE numeri.titoli LIKE '%$titolo%'
ORDER BY numeri.numeri";
$result = mysql_query($cerca);
if(!$result)
{
die(mysql_error());
}
$albi = mysql_num_rows($result);
if($albi > 1)
{
echo $this->magg_uno;
}
else if($albi === 1)
{
echo $this->uno;
}
else
{
echo $this->zero;
}
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
$tit = strtoupper($row["titoli"]);
$num = $row["numeri"];
$tes1 = $row["nome_testi"];
$tes2 = $row["cognome_testi"];
$dis1 = $row["nome_disegni"];
$dis2 = $row["cognome_disegni"];
$sta = $row["tipo"];
echo "<tr>";
echo "<td>$num</td>";
echo "<td class='trovato'>$tit</td>";
echo "<td>$tes1 $tes2</td>";
echo "<td>$dis1 $dis2</td>";
echo "<td>$sta</td>";
echo "</tr>";
}
echo "</table>";
mysql_close($connect);
}
}
?>
HTML:
<!DOCTYPE html>
<html>
<head>
[......]
</head>
<body>
<header>
<h1>Ricerca albo</h1>
</header>
Grazie per l'attenzione.