Ciao a tutti,
io ho creato una pagina chiamata classe_ricerca.php contenente questo codice:
Codice PHP:
<?php
class Ricerca
{
/********DICHIARO 3 VARIABILI COMUNI A TUTTI I METODI DELLA CLASSE********/
public $magg_uno = "
<table>
<tr>
<th colspan='5'>
RICERCA PER TITOLO EFFETTUATA
Parametro di ricerca: <strong class='trovato'>$titolo
$albi albi trovati[/b]
</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
Parametro di ricerca: <strong class='trovato'>$titolo
$albi albo trovato[/b]
</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
Parametro di ricerca: <strong class='trovato'>$titolo
Spiacente, nessuna corrispondenza[/b]
</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);
}
}
?>
e una pagina chiamata ricerca_dati.php contentente questo:
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>
ma ciò che ottengo aprendo il file ricerca_dati.php dal browser è solo una pagina bianca ad eccezione del codice html inserito prima del php, praticamente fino al titolo "Ricerca albo".
mentre invece modificando il file classe_ricerca.php in questo modo funziona benissimo:
Codice 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 3 VARIABILI DIRETTAMENTE ALL'INTERNO DEL METODO********/
$magg_uno = "
<table>
<tr>
<th colspan='5'>
RICERCA PER TITOLO EFFETTUATA
Parametro di ricerca: <strong class='trovato'>$titolo
$albi albi trovati[/b]
</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
Parametro di ricerca: <strong class='trovato'>$titolo
$albi albo trovato[/b]
</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
Parametro di ricerca: <strong class='trovato'>$titolo
Spiacente, nessuna corrispondenza[/b]
</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);
}
}
?>
In pratica ho solo dichiarato le variabili all'interno del metodo invece che fuori. Ma mi domando, dov'è che ho sbagliato prima? Anche perché così è vero che ho risolto, ma volendo aggiungere altri metodi di ricerca all'interno della classe, dovrei ogni volta ridichiarare le 3 variabili all'interno di ogni metodo.
Grazie per l'attenzione.