PDA

View Full Version : [PHP] array richiama sempre ultima lettera


kulosia
07-10-2012, 14:49
Salve,

stò cercando di creare un array che fa l'impaginazione alfabetica dalla a alla z,
ma ho un problema, quando vado sulla pagina escono tutti i link delle lettere che posso scegliere, ma qualsiasi lettera clicco prende sempre l'ultima dell'array cioè
la Z.

Ecco lo script:


<?


$caratteri = array('#','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
$n = count($caratteri);


foreach ($caratteri as $lettere) {

$querycaratteri = 'Select num,title,visionato FROM film WHERE title like "' . $lettere . '%" ORDER BY title ASC';
$risultatocaratteri = mysql_query($querycaratteri);
$rows = mysql_fetch_array($risultatocaratteri);
$count = $rows[0];

if ($count > 0) {
$link = '<a href="./mapsite.php?letter=' .
strtolower($lettere) . '">' . $lettere . '</a>';
$class='link';
}
else {
$link = $lettere;
$class='plaintext';
}
echo "<span class=\"$class\">$link</span>";



}


?>

<?

$queryalfabetica = 'Select num,title,visionato FROM film WHERE title like "' . $lettere . '%" ORDER BY title ASC';
$risultatoalfanumerica = mysql_query($queryalfabetica);
if (!$risultatoalfanumerica) {

echo "Nessun risulvato trovato!";
echo 'MySQL Error: ' . mysql_error();

exit();

}

while ($rowalfa = mysql_fetch_assoc($risultatoalfanumerica)) {
?>

<tr>

<p align='left'><b> <a href="film.php?id=<?php echo $rowalfa['num']; ?>"><?php echo $rowalfa['title']; ?> - Visionato: <?php echo $rowalfa['visionato']; ?></a>



<?php
}

mysql_free_result($risultatoalfanumerica);

?>




Sembra funzionare solo ed esclusivamente con l'ultima lettera dell'array con qualsiasi lettera clicco.
infatti ho provato a mettere come ultima lettera B ed esce infatti la B.

http://imageshack.us/photo/my-images/802/infod.jpg/

idoido
07-10-2012, 16:19
la query

$queryalfabetica = 'Select num,title,visionato FROM film WHERE title like "' . $lettere . '%" ORDER BY title ASC';

contiene $lettere, ma hai già chiuso il foreach che scorre l'array
foreach ($caratteri as $lettere)

di conseguenza in quella query $lettere conterrà il valore dell'ultimo elemento dell'array

kulosia
07-10-2012, 16:54
Si però se chiudo l'array alla fine
mi esce tutto dalla a alla z invece che solo la lettera che decido.

Cioè avevo chiuso prima per il semplice motivo che dava tutte le lettere dalla A alla Z cliccabili e volevo fare in modo che quando cliccava una lettera vedeva con l'altra query solo quella determinata lettera.

idoido
07-10-2012, 16:57
dovresti guardare come funziona il passaggio di parametri tramite GET se vuoi fare quello.

kulosia
07-10-2012, 17:10
il metodo GET lo messo stesso dove sta l'array,
però non capisco dove sia l'errore che comunque esce sempre la Z finale.




<?


$caratteri = array('#','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');

$lettera = FilterText($_GET['lettera']);

foreach ($caratteri as $lettera) {

$querycaratteri = 'Select num,title,visionato FROM film WHERE title like "' . $lettera . '%" ORDER BY title ASC';
$risultatocaratteri = mysql_query($querycaratteri);
$rows = mysql_fetch_array($risultatocaratteri);
$count = $rows[0];

if ($count > 0) {
$link = '<a href="./mapsite.php?lettera=' .
strtolower($lettera) . '">' . $lettera . '</a>';
$class='link';
}
else {
$link = $lettera;
$class='plaintext';
}
echo "<span class=\"$class\">$link</span>";


}



?>

<br><br><br><br>


<?

$queryalfabetica = 'Select num,title,visionato FROM film WHERE title like "' . $lettera . '%" ORDER BY title ASC';
$risultatoalfanumerica = mysql_query($queryalfabetica);
if (!$risultatoalfanumerica) {

echo "Nessun risulvato trovato!";
echo 'MySQL Error: ' . mysql_error();

exit();

}

while ($rowalfa = mysql_fetch_assoc($risultatoalfanumerica)) {
?>

<tr>

<p align='left'><b> <a href="film.php?id=<?php echo $rowalfa['num']; ?>"><?php echo $rowalfa['title']; ?> - Visionato: <?php echo $rowalfa['visionato']; ?></a>



<?php
}

mysql_free_result($risultatoalfanumerica);

?>

kulosia
07-10-2012, 17:26
Ah si risolto che stupido avevo dimenticato di mettere:

$queryalfabetica = 'Select num,title,visionato FROM film WHERE title like "' . $_GET["lettera"] . '%" ORDER BY title ASC';

il get nella query :D

però ora c'è solo un ultima cosa che dovrei fare e non ho idee come farla.
ora è dalla A alla Z e se vorrei mettere anche i numeri prima della A cioè vede tutti i numeri da 0-9 tutti insieme come potrei fare?