szczalpi
29.03.2013, 13:06:39
Witam wszystkich.
Mam problem z zapytaniem w bazie mysql. Nie wiem dlaczego pobiera id takie samo dla wszystkich rekordów tj 5. Skrypt pobiera tytul, zdjecie i id, aby stworzyć link. Do wszystkich pięciu zdjęć przepisuje to samo id, ale zmienia się tytul, co powoduje niezgodny link. Skrypt działa na zasadzie slidu. Zapytanie jest zrobione, aby pominąć RAND BY. Niestety nie wiem, w którum miejscu tkwi błąd.
Proszę o pomoc.
<?
$sql="SELECT * FROM users AS r1
JOIN (SELECT ROUND(
RAND( ) * (
SELECT MAX( id ) FROM users)
) AS id
) AS r2
WHERE r1.id >= r2.id
LIMIT 5";
{
?>
<? $str=''.$row['id'].'_'.$row['nazwa_obiektu'].'';?>
<a href=
<? echo '"'.tytul_ogl
($str).',noclegi.html"';?> class="show">
<img src="users_fotos/
<? echo $row['photo_1']; ?>" width="580" height="360" title="" alt="" rel="
<? echo $row['nazwa_obiektu']; ?>"/>
</a>
<?
}
################################################################################
?>
mmmmmmm
29.03.2013, 14:57:28
Błąd tkwi w *.
NIGDY, PRZENIGDY nie używaj * - chyba że do Counta. Wypisz tylko te pola, które potrzebujesz.
Zastosowałeś gwiazdkę, czy MySQL przyjął, że bierzesz r1.*, r2.*, a to jest równoznaczne z r1.id, r1.nazwa_obiektu, r1.photo_1, ..., r2.id. Więc masz dwa pola id - jedno z r1, a jedno z r2. Z kolei PHP jest tak głupi, że do tablicy asocjacyjnej w przypadku napotkania dwóch pól o tej samej nazwie, wpisuje wartość z OSTATNIO napotkanej wartości. Dlatego ta 5, to jest z r2.id