Skrypt. Problem z SubStr();

0

Pomoze ktoś? Mecze sie z jednym skryptem, jakos daje rade, ale ten blad mnie przerosl...

Fatal error: Maximum execution time of 30 seconds exceeded in /virtual/k/l/**********/wyniki.php on line 46

a tutaj fragment kodu:

	$przec = 0;
	for( $q =0 ; $q <= (strlen($rezultat)) ; $q++ )
	{
	$tymcz = substr($rezultat, $q, 1);
	if ($tymcz == ",") ++$przec;
	}
	$r = 0;
	$w = 0;
		do 
			{
			while ((substr($rezultat,$r,1))!=",")
				{
				$wyniki[$w] = $wyniki[$w].(substr($rezultat,$r,1));
				$r++;
				}
			echo $wyniki[$w];
			$w++;
			$r++;
			}
		while ($w<=$przec);

Linia 44 to ta z substr()... W kodzie chodzi o to, ze w zmiennej rezultat przechowywany jest wynik przeszukiwania bazy. zawiera ona ID kolejnych rekordow, ktore nalezy wyswietlic oddzielone przecinkami. Pierwsza petla FOR zlicza ile jest tych przecinkow, a dwie pozostale petle maja za zadanie oddzielic kolejne liczby od siebie bez przecinkow.

Dodam, że jak sie usunie z konca kodu to "$r++" to nie wywala tego bledu, ale wycina tylko pierwsza liczbe ze zmiennej rezultat. A jak $r++ tam jest to wycina wszystkie ale pojawia sie ten wlasnie blad... W zasadzie blad wyswietla sie w miejscu, gdzie powinna sie pojawic tabela z danymi z bazy... Wiec moze to cos z baza? Tylko znowuz bez $r++ dobrze wyswietla ten 1 rekord z bazy...

0

Skrypt wykonuje się dłużej niż 30 sekund i stąd ten błąd.
Dwie opcje, albo w php.ini zwiększysz 'maximum_execution_time' lub dodaj na początku skryptu set_time_limit(3600);
btw. moja odpowiedź to pierwszy wynik z g.

0

Okey. Umiem troche angielski i wiec co znaczy ten blad, ale chodzi wlasnie o to ze te 30 sekund to jest bardzo dlugo i nie zadawala mnie to. Na forum napisalem raczej dlatego ze nie mam pojecia skad sie ten blad wzial i chcialbym wyeliminowac go ze skryptu

0

Ja dziś nie mam głowy do ogarnięcia ani linii kodu, ale pewnie ktoś tu zaraz wpadnie i pokaże Ci gdzie tkwi błąd, bo pętla się przymula. ;-)

0

Ok ale dzieki za zainteresowanie:) Wyglada na to ze, kiedy zwiekszam to $r to zawsze jest spelniany ten warunek petli... wycina mi te liczby, ale pozniej dalej chce wycinac "puste miejsca"(bo warunek jest spelniony - " "<>",") Wie ktos jak sie tego pozbyc?

0

Oj.. i do takiego zadania takie pętle. Ten skrypt zdecydowanie do skasowania.
Pobaw się wyrażeniami regularnymi:

preg_match_all('#([0-9]+),?#', $dane_z_bazy, $tablica);

Albo przynajmniej użyj funkcji explode:

$tablica_liczb = explode(',', $dane_z_bazy);
0

Kur*aaa... Explode... Jak moglem zapomniec... Dodalem warunek do mojej petli while i dziala, ale jak pomysle jak latwo byloby to zrobic uzywajac explode to mnie krew zalewa... a ja sie tyle meczylem. Dzieki wielkie kubARek!!

1 użytkowników online, w tym zalogowanych: 0, gości: 1