- Home
- Categorie
- Coding e Sistemistica
- PHP
- Perdita variabile
-
Perdita variabile
Ciao a tutti da Danny, ho un problema, a priva vista sembrerebbe semplice, ma in realtà mi sta facendo impazzire, premetto che è la prima volta che faccio questo tipo di operazione.
Prima di postare il cosice vi spiego cosa succede, in una pagina ho una select con all'interno delle voci, scelgo una voce dall'elenco e clicco su cerca e fin quà tutto bene la ricerca va bene, il problema c'è lo con le pagine, faccio visualizzare 5 articoli per pagina, ma quando clicco sul numero 1 o 2 dipende dalla quantità di articoli, mi visualizza una pagina bianca. Secondo me perdo la variabile delle vocine nella select, voi cosa dite?
[php]
<?php
require 'connessione/Config.php';
require 'connessione/Connect.php';if(isset($_POST['cmb_costruttore']))
{
$cerca=trim($_POST['cmb_costruttore']);
if(get_magic_quotes_gpc())
{
$cerca=stripslashes($cerca);
}
$cerca=htmlspecialchars($cerca);
$cerca=mysql_real_escape_string($cerca);$query_presenza_veicoli = mysql_query("SELECT COUNT(id_veicolo) as num_art FROM veicoli WHERE id_costruttore = $cerca")
or die("errore nella query;".mysql_error());
$presenza_veicoli = mysql_fetch_array($query_presenza_veicoli);if(!isset($_GET['numero_pagina']))
{
$numero_pagina=1;
}
else
{
$numero_pagina=$_GET['numero_pagina'];
}$limite_inferiore=($numero_pagina-1)*5;
if($presenza_veicoli[0]==false)
{
print"
<table cellspacing='0' cellpadding='0' border='0' width='400'>
<tr>
<td width='5'></td>
<td class='font_2'>NON CI SONO VEICOLI DA VISUALIZZARE PER QUESTA MARCA</td>
</tr>
</table>";
}
else
{
$query_veicolo = mysql_query("SELECT veicoli., costruttori.
FROM veicoli, costruttori
WHERE costruttori.id_costruttore = veicoli.id_costruttore
&& costruttori.id_costruttore = $cerca
ORDER BY id_veicolo DESC LIMIT $limite_inferiore,5")
or die("errore nella query;".mysql_error());for($a = 0; $a < mysql_num_rows($query_veicolo); $a++)
{
$risultato_query_veicolo = mysql_fetch_assoc($query_veicolo);print" <table cellspacing='0' cellpadding='0' border='0' bordercolor='#000099'> <tr><td colspan='4' height='5'></td></tr> <tr> <td width='18'></td> <td class='font_2'>MARCA</td> <td width='18'></td> <td colspan='2' class='font_3' width='200'> $risultato_query_veicolo[desc_costruttore] </td> </tr> </table>"; }
}
$pagine=ceil($presenza_veicoli[0]/5);
print"
<table cellpadding='0' cellspacing='0' border='0'>";
print"
<tr>";
for($b = 1; $b <= $pagine; $b++)
{
print"
<td class='font_2'>
<a href='index.php?lehekülg=ricveicoli&numero_pagina=$b'>$b</a>
</td>";
}
print"
</tr>";
print"
</table>";
}
?>
[/php]
Grazie per l'aiuto da danny
-
Ciao danny1975,
come cicli le query e controlli se restituisce un risultato non è il massimo come codice, ma dovrebbe funzionare.
Se la pagina è bianca proprio, dovrebbe essere un errore di sintassi, controlla se la visualizzazione degli errori nel file di configurazione è impostata su ON.
-
Grazie Thedarkita, sto impazzendo da stanotte, ma niente da fare, per quanto riguarda la cosa che mi hai detto che non è il massimo, confido in un tuo aiuto per rendere il tutto più professionale. La programmazione è come quel proverbio che dice tutte le strade portano a Roma, però un conto è farne una sterrata, ed un altro è farne una bella asfaltata. Confido in te per migliorare, Grazie.
Posto le pagine che fanno l'operazione, le ho semplificate
index.php
[PHP]
<?php
require 'connessione/Config.php';
require 'connessione/Connect.php';$query_costruttore=mysql_query("Select * From costruttori ORDER BY desc_costruttore")
or die("errore nella query Costruttori;".mysql_error());
?>
<div align="center">
<form method="post" action="index.php?lehekülg=ricveicoli">
<table background="images/testata.jpg" cellpadding="0" cellspacing="0" width="900" height="471" border="0">
<tr>
<td></td>
</tr>
</table>
<table background="images/bottom_testata.jpg" cellpadding="0" cellspacing="0" width="900" height="47" border="0" bordercolor="#003300">
<tr>
<td width="510"></td>
<td width="105" class="font_1">Seleziona Marca</td>
<td width="130">
<?php
print"
<select name='cmb_costruttore' class='select_1'>";
for($a=0; $a<mysql_num_rows($query_costruttore);$a++)
{
$a_elenco_costruttore=mysql_fetch_assoc($query_costruttore);
print"
<option value='".intval($a_elenco_costruttore['id_costruttore'])."'>
".$a_elenco_costruttore['desc_costruttore']."
</option>";
}
print"
</select>";
?>
</td>
<td><input type="image" value="cerca" img src="images/t_cerca.jpg" /></td>
<td width="20"></td>
</tr>
</table>
<table background="images/corpo.jpg" cellpadding="0" cellspacing="0" width="900" height="500" border="0" bordercolor="#CC3300">
<tr>
<td valign="top" width="40"></td>
<td valign="top" width="550">
<?php
if(isset($_GET['lehekülg']))
{
$pagina = $_GET['lehekülg']. '.php';
if (file_exists($pagina))
{
include($pagina);
}
else
{
include('veicoli.php');
}
}
else
{
include('veicoli.php');
}
?>
</td>
<td valign="top">
<table background="images/menu.jpg" cellspacing="0" cellpadding="0" width="237" height="362" border="0" bordercolor="#00CC00">
<tr>
<td height="13"></td>
<td></td>
<td width="40"></td>
</tr>
<tr>
<td width="20" height="37"></td>
<td><a href="index.php?lehekülg=veicoli"><img src="images/tasto_menu.gif" border="0"></a></td>
<td width="40"></td>
</tr>
<tr>
<td width="20" height="37"></td>
<td><a href="quad"><img src="images/tasto_menu.gif" border="0"></a></td>
<td width="40"></td>
</tr>
<tr>
<td width="20" height="37"></td>
<td><a href="pit"><img src="images/tasto_menu.gif" border="0"></a></td>
<td width="40"></td>
</tr>
<tr>
<td width="20" height="37"></td>
<td><a href="moto"><img src="images/tasto_menu.gif" border="0"></a></td>
<td width="40"></td>
</tr>
<tr>
<td width="20" height="37"></td>
<td><a href="scooter"><img src="images/tasto_menu.gif" border="0"></a></td>
<td width="40"></td>
</tr>
<tr>
<td width="20" height="37"></td>
<td><a href="noleggio"><img src="images/tasto_menu.gif" border="0"></a></td>
<td width="40"></td>
</tr>
<tr>
<td width="20" height="37"></td>
<td><a href="azienda"><img src="images/tasto_menu.gif" border="0"></a></td>
<td width="40"></td>
</tr>
<tr>
<td width="20" height="37"></td>
<td><a href="login"><img src="images/tasto_menu.gif" border="0"></a></td>
<td width="40"></td>
</tr>
<tr>
<td width="20"></td>
<td></td>
<td width="40"></td>
</tr>
</table>
</td>
</tr>
</table>
<table background="images/bottom.jpg" cellpadding="0" cellspacing="0" width="900" height="79" border="0">
<tr>
<td></td>
</tr>
</table>
</form>
[/PHP]
pagina ricveicoli.php
[PHP]
<?php
require 'connessione/Config.php';
require 'connessione/Connect.php';if(isset($_POST['cmb_costruttore']))
{
$cerca=trim($_POST['cmb_costruttore']);
if(get_magic_quotes_gpc())
{
$cerca=stripslashes($cerca);
}
$cerca=htmlspecialchars($cerca);
$cerca=mysql_real_escape_string($cerca);$query_presenza_veicoli = mysql_query("SELECT COUNT(id_veicolo) as num_art FROM veicoli WHERE id_costruttore = $cerca")
or die("errore nella query;".mysql_error());
$presenza_veicoli = mysql_fetch_array($query_presenza_veicoli);if(!isset($_GET['numero_pagina']))
{
$numero_pagina=1;
}
else
{
$numero_pagina=$_GET['numero_pagina'];
}$limite_inferiore=($numero_pagina-1)5;
if($presenza_veicoli[0]==false)
{
print"
<table cellspacing='0' cellpadding='0' border='0' width='400'>
<tr>
<td width='5'></td>
<td class='font_2'>NON CI SONO VEICOLI DA VISUALIZZARE PER QUESTA MARCA</td>
</tr>
</table>";
}
else
{
$query_veicolo = mysql_query("SELECT veicoli., costruttori., tipologie.
FROM veicoli, costruttori, tipologie
WHERE costruttori.id_costruttore = veicoli.id_costruttore
&& tipologie.id_tipologia = veicoli.id_tipologia
&& costruttori.id_costruttore = $cerca
ORDER BY id_veicolo DESC LIMIT $limite_inferiore,5")
or die("errore nella query;".mysql_error());for($a = 0; $a < mysql_num_rows($query_veicolo); $a++)
{
$risultato_query_veicolo = mysql_fetch_assoc($query_veicolo);print" <table background='images/contenitore.jpg' cellspacing='0' cellpadding='0' width='501' height='119' border='0' bordercolor='#000099'> <tr> <td width='12'></td> <td width='120' height='8'></td> <td width='400'></td> <td></td> </tr> <tr> <td></td> <td><img src='images/auto.jpg'></td> <td valign='top'> <table cellspacing='0' cellpadding='0' border='0' bordercolor='#0000CC'> <tr><td colspan='4' height='5'></td></tr> <tr> <td width='18'></td> <td class='font_2'>MARCA</td> <td width='18'></td> <td colspan='2' class='font_3' width='200'> $risultato_query_veicolo[desc_costruttore] </td> </tr> <tr><td colspan='4' height='5'></td></tr> <tr> <td width='18'></td> <td class='font_2'>MODELLO</td> <td width='18'></td> <td colspan='2' class='font_3'> $risultato_query_veicolo[modello] </td> </tr> <tr><td colspan='4' height='5'></td></tr> <tr> <td width='18'></td> <td class='font_2'>TIPOLOGIA</td> <td width='18'></td> <td colspan='2' class='font_3'> $risultato_query_veicolo[desc_tipologia] </td> </tr> <tr><td colspan='4' height='5'></td></tr> <tr> <td width='18'></td> <td class='font_2'>IMMATRICOLAZIONE</td> <td width='18'></td> <td colspan='2' class='font_3'> $risultato_query_veicolo[immatricolazione] </td> </tr> <tr><td colspan='4' height='5'></td></tr> <tr> <td width='18'></td> <td class='font_2'>CHILOMETRI</td> <td width='18'></td> <td class='font_3'> $risultato_query_veicolo[chilometri] </td> <td align='right'> <a href='index.php?lehekülg=dveicoli&raamat=$risultato_query_veicolo[id_veicolo]'> <img src='images/scheda.png' border='0'></a> </td> </tr> </table> </td> <td></td> </tr> <tr> <td></td> <td width='120' height='8'></td> <td></td> <td></td> </tr> </table>"; }
}
$pagine=ceil($presenza_veicoli[0]/5);
print"
<table cellpadding='0' cellspacing='0' border='0'>";
print"
<tr>
<td height='5'></td>
<td height='5'></td>
</tr>
<tr>";
for($b = 1; $b <= $pagine; $b++)
{
print"
<td width='7' height='5'></td>
<td background='images/case.jpg' width='27' height='30'>
<table cellpadding='0' cellspacing='0' border='0'>
<tr>
<td width='11'></td>
<td class='font_2'>
<a href='index.php?lehekülg=ricveicoli&numero_pagina=$b&costruttore=$cerca'>$b</a> </td>
</tr>
</table>
</td>";
}
print"
</tr>";
print"
</table>";
}
?>
[/PHP]
queste sono le pagine, non riesco a capire cosa non gli passo,
non voglio pensare che l'intoppo sta nel fatto che quando faccio la ricerca dalla select si riazzera, nel senso come prima voce ho Alfa Romeo, quando cerco Fiat che si trova nella terza posizione, la ricerca viene fatta, ma la select si rimette su Alfa Romeo. BoooCiao e grazie da danny
-
Allora intanto:
[php]
for($a = 0; $a < mysql_num_rows($query_veicolo); $a++)
{
$risultato_query_veicolo = mysql_fetch_assoc($query_veicolo);
[/php]
È molto meglio fare:
[php]
while($risultato_query_veicolo = mysql_fetch_assoc($query_veicolo))
{
[/php]Gli include in quel modo sarebbero anche sconsigliabili, chi mi impedisce di inserire in file che voglio io editando il valore della variabile?
Per il problema vero e proprio, ottieni quindi una pagina senza nessun output?
-
Grazie, si per il problema ottengo proprio una pagina in bianco
per gli include intendi questo
[PHP]<a href='index.php?lehekülg=dveicoli&raamat=$risultato_query_veicolo[id_veicolo]'>
[/PHP]
-
Hai controllato al configurazione per abilitare la visualizzazione degli errori?
-
A dirti la verità non lo mai fatto, non saprei nemmeno dove andare
-
Stai provando in locale?
-
@Thedarkita said:
Stai provando in locale?
Si giusto
La stessa cosa mi fa in un'altra pagina dove vedo in dettagliio l'articolo, ho provato ad inserire un tasto per tornare indietro e mi da lo stesso risultato, pagina bianca. Secondo me risolto uno è risolto anche l'altro
-
Devi cercare il file php.ini nel tuo pc.
-
@Thedarkita said:
Devi cercare il file php.ini nel tuo pc.
ho trovato questo
php.ini-distma non penso che sia lui:?
in cambio nella cartelle Apache/Conf ho trovato 2 file di testo
httpd, httpd.default
-
Ciao, nella cartella php, c'è un file.txt "php", all'interno ho trovato
register_globals = Off [Security, Performance]
è questo che devo modificare?
-
Intanto graazie, ho caricato il progetto sul web per farti vedere l'errore di che si tratta il sito è xxx.annunciitaliani.it, prova a fare la ricerca per marca lamborghini e ti renderei conto quando vorrai andare sulla pagina 2
-
È normale questo in quanto la variabile POST la perdi se cambi pagina, ti conviene utilizzare il metodo GET in maniera da poter rigenerare l'url correttamente anche per le pagine successive.
-
@Thedarkita said:
È normale questo in quanto la variabile POST la perdi se cambi pagina, ti conviene utilizzare il metodo GET in maniera da poter rigenerare l'url correttamente anche per le pagine successive.
Ho provato, ma inserendo get non funziona bene la ricerca
-
Se modifichi sia il form impostandolo su GET che lato php cambiando da POST a GET dovrebbe andare correttamente.
-
@Thedarkita said:
Se modifichi sia il form impostandolo su GET che lato php cambiando da POST a GET dovrebbe andare correttamente.
[php]
if(isset($_GET['cmb_costruttore']))
{
$cerca=trim($_GET['cmb_costruttore']);
if(get_magic_quotes_gpc())
{
$cerca=stripslashes($cerca);
}
$cerca=htmlspecialchars($cerca);
$cerca=mysql_real_escape_string($cerca);
[/php][php]
<form method="GET" action="index.php?lehekülg=ricveicoli">
[/php]ho mandato tutto in rete puoi vedere il risultato, non effettua bene la ricerca
Pensavo che fosse più semplice a dirti la verità
-
Ho provato a semplificare una pagina chiamata ricveicoli_prova.php
ho tolto tutto quello ambarapà della variabile $_POST e funziona, quindi il problema è che quando mi visualizza il risultato della ricerca in qualche modo perdo la variabile $cerca
ricveicoli_prova.php
[php]
<?php
require 'connessione/Config.php';
require 'connessione/Connect.php';$query_presenza_veicoli = mysql_query("SELECT COUNT(id_veicolo) as num_art FROM veicoli WHERE id_costruttore = 4")
or die("errore nella query;".mysql_error());
$presenza_veicoli = mysql_fetch_array($query_presenza_veicoli);if(!isset($_GET['numero_pagina']))
{
$numero_pagina=1;
}
else
{
$numero_pagina=$_GET['numero_pagina'];
}$limite_inferiore=($numero_pagina-1)*5;
if($presenza_veicoli[0]==false)
{
print"
<table cellspacing='0' cellpadding='0' border='0' width='400'>
<tr>
<td width='5'></td>
<td class='font_2'>NON CI SONO VEICOLI DA VISUALIZZARE PER QUESTA MARCA</td>
</tr>
</table>";
}
else
{
$query_veicolo = mysql_query("SELECT veicoli., costruttori., tipologie.*
FROM veicoli, costruttori, tipologie
WHERE costruttori.id_costruttore = veicoli.id_costruttore
&& tipologie.id_tipologia = veicoli.id_tipologia
&& costruttori.id_costruttore = 4
ORDER BY id_veicolo DESC LIMIT $limite_inferiore,5")
or die("errore nella query;".mysql_error());for($a = 0; $a < mysql_num_rows($query_veicolo); $a++)
{
$risultato_query_veicolo = mysql_fetch_assoc($query_veicolo);print" <table cellspacing='0' cellpadding='0' border='0' bordercolor='#000099'> <tr><td colspan='4' height='5'></td></tr> <tr> <td width='18'></td> <td class='font_2'>MARCA</td> <td width='18'></td> <td colspan='2' class='font_3' width='200'> $risultato_query_veicolo[desc_costruttore] </td> </tr> </table>"; }
}
$pagine=ceil($presenza_veicoli[0]/5);
print"
<table cellpadding='0' cellspacing='0' border='0'>";
print"
<tr>";
for($b = 1; $b <= $pagine; $b++)
{
print"
<td class='font_2'>
<a href='ricveicoli_prova.php?numero_pagina=$b&id_costruttore=4'>$b</a>
</td>";
}
print"
</tr>";
print"
</table>";
?>
[/php]Non voglio dire sciocchezze perchè non ne ho idea di come fare
comunque è visibile sul web
-
Allora intanto per iniziare:
[php]
<form method="GET" action="index.php?lehekülg=ricveicoli">
[/php]
Non si può fare, ma devi fare:
[php]
<form method="GET" action="index.php">
<input type="hidden" name="lehekülg" value="ricveicoli" />
[/php]Le query che hai postato non utilizzi comunque $cerca ma hai impostato una costante.
-
@Thedarkita said:
Allora intanto per iniziare:
[php]
<form method="GET" action="index.php?lehekülg=ricveicoli">
[/php]
Non si può fare, ma devi fare:
[php]
<form method="GET" action="index.php">
<input type="hidden" name="lehekülg" value="ricveicoli" />
[/php]Le query che hai postato non utilizzi comunque $cerca ma hai impostato una costante.
Hai ragione, ma avevo fatto una prova per avere conferma dell'errore