[php] script laat explorer crashen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • whitehouse
  • Registratie: Maart 2000
  • Laatst online: 18-09-2019
ik heb een php-script met bijhorend sql- script dat op de een of andere nog onbekende reden mijn explorer laat crashen (blijft maar geheugen vreten)..

kan iemand mij vertellen waar in onderstaande script het fout gaat ?

ik heb de fout geisoleerd ... de fout zit ergens in de ge"//" e regels ..

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?PHP
$selectYear = "SELECT DISTINCT YEAR ( datum ) AS year FROM backup";
$resultYear = mysql_query($selectYear);

$maand_array = array("januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december");


while ($oRowYear = mysql_fetch_object($resultYear)) {
    $selectDate = "SELECT DISTINCT MONTH( datum ) AS datum,YEAR(datum) as year ,DAY(datum) as dag FROM backup where YEAR( datum ) = ".$oRowYear->year."  ";
    echo $selectDate;
    $result = mysql_query($selectDate);
    echo "<tr><td class=h3 colspan=2>".$oRowYear->year."</td></tr>";
    echo "<tr><td width=20>&nbsp;</td><td>";
    //while ($oRowMonth = mysql_fetch_object($result)) {
    //  echo "<a href=view.php?year=".$oRowYear->year."&month=".mysql_result($result,0,'datum').">".$maand_array[mysql_result($result,0,'datum')-1]."</a> ".mysql_result($result,0,'dag')."";
    //}
    echo "</td></tr>";
    
}

?>

| www.everythingisspiritual.com | www.mosaic.org |


Acties:
  • 0 Henk 'm!

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 07-11-2023

kvdveer

Z.O.Z.

Alleen de output van een script kan een browser laten crashen. Je zult dus moeten kijken naar de output, niet naar het script.
Wellicht moet je met een sniffer (zoals ethereal) aan de slag, want in een gecrasthe explorer kun je niet op "show source" drukken..., je kunt natuurlijk ook een andere browser proberen - een die niet crasht.

Localhost, sweet localhost


Acties:
  • 0 Henk 'm!

  • Johnny
  • Registratie: December 2001
  • Laatst online: 14:39

Johnny

ondergewaardeerde internetguru

Ik zie daar twee while() loops in elkaar, hoeveel rijen geven die in totaal terug?

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Wat Johnny al zegt, 't ligt hoogstwaarschijnlijk aan een waanzinnige hoeveelheid html die IE voor de kiezen krijgt... Probeer de queries eens te limiten op een vaste hoeveelheid gegevens en bekijk dan de output van je script.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • whitehouse
  • Registratie: Maart 2000
  • Laatst online: 18-09-2019
ik heb ff snel tijdens crashen de bron bekeken .. zag dat hij ontzettend aan het loopen is ..


de 1e resultset geeft maar 1 row terug (nl "2004") omdat er maar 1 distinct jaartal in zit..
dus de 1e while lus wordt maar 1 keer uitgevoerd :

de 2e query is dan :

SELECT DISTINCT MONTH( datum ) AS datum, YEAR( datum ) AS year,
DAY (
datum
) AS dag
FROM BACKUP WHERE YEAR( datum ) =2004

in mijn mysql-admin geeft deze query 2 rows terug..dus moet het in de php code zitten..

| www.everythingisspiritual.com | www.mosaic.org |


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Hm, ik zie het al:
Calls to mysql_result() should not be mixed with calls to other functions that deal with the result set.
Je verplaatst met de mysql_result calls elke keer de interne pointer weer naar row 0. Dat resulteert in een oneindige loop.

Je moet die mysql_result calls dus eruit halen en vervangen door:

PHP:
1
2
3
while ( $object = mysql_fetch_object ( $resultId ) ) {
   echo '....', $object->fieldname, ' ... ', $object->otherfieldname;
}

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 15:14

Creepy

Tactical Espionage Splatterer

Je PHP code word op de server uitgevoerd, dus deze kan nooit je IE laten crashen. Je weet toch wel het verschil tussen client side en serverside? Alleen de output van de PHP code kan IE laten crashen.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Creepy:
Je PHP code word op de server uitgevoerd, dus deze kan nooit je IE laten crashen. Je weet toch wel het verschil tussen client side en serverside? Alleen de output van de PHP code kan IE laten crashen.
Mja, da's natuurlijk muggenzifterij. De oorzaak is dan toch nog het PHP script, en niets anders ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • b19a
  • Registratie: September 2002
  • Niet online
drm schreef op zaterdag 11 december 2004 @ 15:00:
[...]
Mja, da's natuurlijk muggenzifterij. De oorzaak is dan toch nog het PHP script, en niets anders ;)
Mwoah... php laat indirect IE crashen via de output. Formulering moet dus idd php->output->crash zijn en niet php->crash.

Acties:
  • 0 Henk 'm!

  • pjonk
  • Registratie: November 2000
  • Laatst online: 20-09 21:53
Heb ook ervaring met dit soort problemen. De infiniite loop genereert oneindige HTML output en dit veroorzaakt een "Stack overlow" in IE. IMHO zou dit niet moeten kunnen en IE zou dit zelf moeten afvangen, maar het blijft natuurlijk wel een fout in het PHP script.
Helaas zijn de debugging faciliteiten voor PHP erg beperkt, want met een goede debugger spoor je dit soorten fouten veel sneller op. Voor professioneel gebruik zou ik aanraden om de ontwikkeltools van www.zend.com te gebruiken.

It’s nice to be important but it’s more important to be nice

Pagina: 1