webForumDet fria alternativet

uppräkning kraschar i firefox

PHP

8 svar · 415 visningar · startad av kittlos

Medlem sedan sep. 2002205 inlägg
Frågan#1

På den här sidan:
http://www.revolver.nu/albumarkivkron.php
räknas alla album i arkivet upp.

Sidan fungerar utmärkt i IE, men i Firefox händer något märkligt. Sidan slutar visa poster efter ett visst (fast) antal. Tittar man på källkoden finns dock alla poster med.

sidans php-kod:

$query = "SELECT ...osv";
$result = mysql_query("$query") OR DIE(mysql_error());
$rows = mysql_numrows($result);

$show="";

for($index=0; $index<$rows; $index++)
{
$article_id = mysql_result($result,$index,"articles.id");
$image = mysql_result($result,$index,"image");

$artist = mysql_result($result,$index,"artists.name");
$sortname = mysql_result($result,$index,"artists.sortname");
$date = mysql_result($result,$index,"articles.date");
$dateparts = split("-",$date);
$year = $dateparts[0];
$month = $dateparts[1];

if($old_month=="$month") $newline="<br>";
else{
	if($month=='01')$show_month='Januari';
	elseif($month=='02')$show_month='Februari';
	elseif($month=='03')$show_month='Mars';
	elseif($month=='04')$show_month='April';
	elseif($month=='05')$show_month='Maj';
	elseif($month=='06')$show_month='Juni';
	elseif($month=='07')$show_month='Juli';
	elseif($month=='08')$show_month='Augusti';
	elseif($month=='09')$show_month='September';
	elseif($month=='10')$show_month='Oktober';
	elseif($month=='11')$show_month='November';
	elseif($month=='12')$show_month='December';
$newline="<p>$show_month $year<br>";
}

$old_month=$month;

$title = mysql_result($result,$index,"headline");
$puff = mysql_result($result,$index,"puff");
$puff = str_replace('"',"''",$puff);

$show = $show . "\n$newline<span class=\"small\"><b>$artist - </span><a href=\"albumrecension.php?article_id=$article_id\" class=\"small\" title=\"$puff\">$title</b></a><span class=\"small\"> $date";

}

Någon som fattar vad det är som händer?

Medlem sedan maj 20018 027 inlägg
#2

Inte för att jag förstår vad som händer, annat än att jag kan bekräfta att det gäller även firefox för linux. Men väljer man att visa källkod i firefox, visar källkoden faktiskt allt ända tillbaka till 1999. Jag ser heller inget konstigt i den del som avbryts i firefox.

Medlem sedan dec. 2004225 inlägg
#3

Har du testat på andra datorer än din egen? Ditt kan ju vara så enkelt att det endast är ditt eget Firefox som strular.

Medlem sedan sep. 2002205 inlägg
#4

jo, jag har testat på flera olika datorer. Dessutom blir det samma sak i mozilla. Ingen som sett något liknande eller kan hitta nåt "mozilla-fientligt" i koden?

Medlem sedan aug. 20002 975 inlägg
#5

Det enda jag kan tänka mig är att du i slutet av varje rad har:

... <span class=\"small\"> $date";

Ändra till

... <span class=\"small\"> $date</span>";

Eventuellt kanske det finns en gräns för hur många nivåer Mozilla klarar av nästlade <span>.
I vilket fall ska den ändringen göras.

Sedan tycker jag du har ett omständigt sätt att hämta från databasen. Det borde snabba upp skriptet en del genom att ändra

$rows = mysql_numrows($result);

$show="";

for($index=0; $index<$rows; $index++)
{
$article_id = mysql_result($result,$index,"articles.id");
$image = mysql_result($result,$index,"image");

$artist = mysql_result($result,$index,"artists.name");
$sortname = mysql_result($result,$index,"artists.sortname");
$date = mysql_result($result,$index,"articles.date");
$dateparts = split("-",$date);

Till

$show="";

while ($row = mysql_fetch_assoc($result)) {

   extract($row);
   
   $dateparts = split("-",$date);
Medlem sedan sep. 2002205 inlägg
#6

Gud vad slarvigt av mig att missa det, och det var faktiskt där skon kämde...
Tack!

Angående ditt förslag så ser det ju onekligen smidigare ut, men var hamnar alla variabler som jag hämtar ut i min variant?

Medlem sedan aug. 20002 975 inlägg
#7

Har du en SQL-fråga något i stil med

SELECT articles.id, image, artists.name, artists.sortname, 
       articles.date, headline, puff
FROM tabell
......

så ska variablerna lägga sig i $id, $image, $name, $sortname o.s.v.

Medlem sedan sep. 2002205 inlägg
#8

i en array i $rows då? Fast jag kör ju SELECT * FROM tabell, så då funkar det kanske inte...?

Medlem sedan aug. 20002 975 inlägg
#9

Av din kod fick jag uppfattningen att du hämtade från 2 tabeller.

I $row kommer värdena att lägga sig i en array med fält/kolumnnamn som index.
När du kör extract() kommer variabler skapas där arrayindex blir variabelnamn innehållande elementets värde.

Du kan för skoj skull se vad du hämtar genom att skriva

while ($row = mysql_fetch_assoc($result)) {
   echo "<pre>";
   print_r($row);
   echo "</pre>";
268 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)