Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kolejnosc zmiennych w funkcji
Forum PHP.pl > Forum > PHP
baba
Jest sobie kawalek kodu:

[php:1:461d1c31e0]<?php
echo '<table cellspacing=0 cellpadding=0 border=0 background="" width=100%><tr><td class=nagl width=100%>';

if ($op == 'foto') show_foto($id, $k);
elseif ($d == '') {
show_wpisy();
show_kalendarz_months();
} else {
show_wpisy($d);
}

echo '</td></tr></table><br>';
?>[/php:1:461d1c31e0]

Na stronie prezentuje sie to tak, ze wpisy pojawiaja sie na gorze a archiwum w postaci kalendarza na dole.

Chcialabym ta kolejnosc odwrocic, zrobilam wiec tak:

[php:1:461d1c31e0]<?php
echo '<table cellspacing=0 cellpadding=0 border=0 background="" width=100%><tr><td class=nagl width=100%>';

if ($op == 'foto') show_foto($id, $k);
elseif ($d == '') {

show_kalendarz_months();
show_wpisy();

} else {
show_wpisy($d);
}

echo '</td></tr></table><br>';
?>[/php:1:461d1c31e0]

Ale wtedy na stronie pojawia mi sie nastepujacy blad:
Warning: Supplied argument is not a valid MySQL result resource in ......bullowate/include/wyniki_ast.inc.php on line 96

A pod tym wszystkim w najlepszym pozadku pojawiaja sie wpisy ktore do tej pory byly na dole.

jakis trop moze podacie?
Jabol
pokarz ten kod (ten z miejsca błędu), pokarz jak robisz ten rezultat!
uboottd
Przypuszczenie:

show_wpisy() robi zapytanie do bazy i przechowuje wynik w zmiennej globanej (yuck!), a ta druga funkcja zaklada ze otrzyma uchwyt do tego wyniku wlasnie przez ta zmienna globalna (yuck^2!).

Tak wiec kolejnosc wywolywania jest scisle okreslona. Powinno pomoc wydzielenie tego zapytania do oddzielnej funkcji, i wtedy najpierw wywolywac ta fukncje a potem pozostale juz w dowolnej kolejnosci.

Ale moze tez sie okazac ze to nie wsyatrczy - bez pokazania zrodel tych funkcji nic wiece nie doradze.
baba
ok oto zrodlo:

[php:1:63d4d7f044]<?php
$pageurl = basename($PHP_SELF);

function show_foto($id,$k) {
global $conn, $MaxBigImgWidth, $MaxMiniImgWidth, $nazwabazy, $PHP_SELF;

$result = mysql_db_query($nazwabazy, "select * from bullowate_wynikibt where id = '$id'", $conn);

$miasto = @mysql_result($result, $x, "miasto");
$data = @mysql_result($result, $x, "data");
$data = substr($data, 8, 2).'.'.substr($data, 5, 2).'.'.substr($data, 0, 4);

echo '<center><b>'.$miasto.' - '.$data.'</b><br><br>';

echo '<a href="java script: history.go(-1)">';
$zdjecie = plik_zdjecia("wyst_".$id."_".$k);
$wymiary = @getimagesize($zdjecie);
if ($wymiary[0] > $MaxBigImgWidth) echo '<img src="'.$zdjecie.'" width='.$MaxBigImgWidth.' border=0" align=center>'; else echo '<img src="'.$zdjecie.'" border=0 align=center>';
echo '</a></center><br><br><a href="java script: history.go(-1);">wstecz</a>';
}

function show_wpisy($date = '')
{
global $conn, $MaxBigImgWidth, $MaxMiniImgWidth, $nazwabazy, $PHP_SELF;

if ($date == '')
$result = mysql_db_query($nazwabazy, "select * from bullowate_wynikibt order by data desc limit 0, 1", $conn);
else
$result = mysql_db_query($nazwabazy, "select * from bullowate_wynikibt where data like '$date%' order by data desc", $conn);

$rows = mysql_num_rows($result);

echo '<table cellspacing=0 cellpadding=0 border=0 width=100%><tr><td style="font-size: 11px" align=center width=100%>';
echo '<table align="center" border="0" cellpadding="0" cellspacing="3">';

for ($x=0; $x<$rows; $x++) {
$fotka_mini = '';
$id = @mysql_result($result, $x, "id");
$rodzaj = @mysql_result($result, $x, "rodzaj");
$miasto = @mysql_result($result, $x, "miasto");
$stawki = @mysql_result($result, $x, "stawki");
$wyniki = @mysql_result($result, $x, "wyniki");
$osiagniecia = @mysql_result($result, $x, "osiagniecia");
$data = @mysql_result($result, $x, "data");
$data = substr($data, 8, 2).'.'.substr($data, 5, 2).'.'.substr($data, 0, 4);
$opisyfotek = explode('|&|', @mysql_result($result, $x, "opisy_fotek"));

for ($k = 0; $k<7; $k++) {
$zdjecie = plik_zdjecia('wyst_'.$id."_".$k);
$zdjecie_mini = plik_zdjecia('wyst_'.$id."_".$k, 'mini');

$wymiary = @getimagesize($zdjecie);
$wymiary_mini = @getimagesize($zdjecie_mini);
if ($zdjecie_mini != -1) {
if ($wymiary_mini[0]>$MaxMiniImgWidth) $strmini = '<img src="'.$zdjecie_mini.'" width='.$MaxMiniImgWidth.' border=0 alt="'.htmlspecialchars($opisyfotek[$k]).'" align=left hspace=10 vspace=10>'; else $strmini = "<img src="{$zdjecie_mini}" alt="".htmlspecialchars($opisyfotek[$k])."" border=0 align=left hspace=10 vspace=10>";
$fotka_mini[$k] = "<a href="$PHP_SELF?op=foto&id=".$id."&k=$k">".$strmini."</a>";

if ($zdjecie == -1) $fotka_mini[$k] = $strmini;
} elseif ($zdjecie != -1) {
if ($wymiary[0]>$MaxMiniImgWidth) $strmini = '<img src="'.$zdjecie.'" width='.$MaxMiniImgWidth.' border=0 alt="'.htmlspecialchars($opisyfotek[$k]).'" align=left hspace=10 vspace=10>'; else $strmini = "<img src="{$zdjecie}" border=0 alt="".htmlspecialchars($opisyfotek[$k])."" align=left hspace=10 vspace=10>";
if ($zdjecie == -1) $fotka_mini[$k] = $strmini;
}
}

echo '<tr><td colspan=2><b style="font-size: 12px">'.$miasto.' - '.$data.'</b></td></tr>';
echo '<tr><td colspan=2 background="gfx/kropki.gif"></td></tr>';
echo '<tr><td colspan=2><div style="margin-left: 20px"><b>Sędzia: </b>'.$rodzaj.'<br><br></div></td></tr>';
//echo '<tr><td colspan=2><div style="margin-left: 20px"><b>Stawki: </b><br>'.nl2br($stawki).'<br><br></div></td></tr>';
echo '<tr><td colspan=2><div style="margin-left: 20px">'.nl2br($wyniki).'<br><br></div></td></tr>';
//echo '<tr><td colspan=2><div style="margin-left: 20px"><b>Komentarze:</b><br>'.nl2br($osiagniecia).'<br></div></td></tr>';
echo '<tr><td colspan=2><div style="margin-left: 20px"><br><table align="center" border="0" cellpadding="0" cellspacing="0">';
echo '<tr>';
$z = 0;
for ($k = 0; $k < 7; $k++) {
if ($fotka_mini[$k] != '' ) {
echo '<td>'.$fotka_mini[$k].'</td>';
$z++;
}
if ($z > 2) { echo '</tr><tr>'; $z = 0; }
}
echo '</tr></table></div></td></tr>';
echo '<tr><td><br><br></td></tr>';
}
echo '</table>';

echo '</td></tr></table>';
if ($date != '') echo '<br><br><a href="java script: history.go(-1);">wstecz</a>';
}

function show_kalendarz_months() {
global $conn, $nazwabazy;
$miesiace = array ('01' => 'styczeń', '02' => 'luty', '03' => 'marzec', '04' => 'kwiecień', '05' => 'maj', '06' => 'czerwiec', '07' => 'lipiec', '08' => 'sierpień', '09' => 'wrzesień', '10' => 'paĽdziernik', '11' => 'listopad', '12' => 'grudzień');

$result = mysql_query ("select distinct(data) from bullowate_wynikibt order by data desc");
$rows = mysql_numrows($result);
for ($i=0; $i<$rows; $i++) {
$data = mysql_result ($result, $i, 'data');
$daty[substr($data, -5, 2).' '.substr($data, 0, 4)] = substr($data, 0, 7);
}

while (list($key, $value) = @each($daty)) {
$mnth = substr($key, 0, 2);
echo '<div style="margin-left:50px;"<b>::</b> <a href="'.$PHP_SELF.'?d='.$value.'">'.$miesiace[$mnth].' '.substr($key, -4).'</a></div><br>';
}
}

echo '<table cellspacing=0 cellpadding=0 border=0 background="" width=100%><tr><td class=nagl width=100%>';

if ($op == 'foto') show_foto($id, $k);
elseif ($d == '') {
show_wpisy();
show_kalendarz_months();
} else {
show_wpisy($d);
}

echo '</td></tr></table><br>';
?>[/php:1:63d4d7f044]

docelowo chcialabym tak:

$ROK
$MIESIAC

:: $miasto, $rodzaj - $data [jako link]

a dopiero pozniej calosc wynikow.
uboottd
Uff... ale udalo Ci sie byka wcisnac w ten kod winksmiley.jpg Ladny jest.

W funckji show_wpisy korzystasz z mysql_db_query natoamist w show_kalendarz z mysql_query. Roznica polega na tym ze ta pierwsza funkcje mozesz traktowac jako ciag mysql_select_db i mysql_query z odpowidnimi paramtetrami.

I teraz jest tak:
Po polaczeniu z serwerem widac nie wybierasz od razu bazy z ktorej chcesz korzystac. To nie jest blad ale: w pierwszej wersji najpierw wolasz show_wpisy ktore przy okazji niejawnie ustawiaja ci biezaca baze a potem wolasz show_kalendarz jak juz wiadomo jaka jest aktualna baza.

W drugim przypadku najpierw wolasz show_kalendarz i wtedy zapytanie z lini 95 nie ma ustawionej bazy ktorej dotyczy zapytanie, zwraca blad (czego nie sprawdzasz) i w tym momencie odwolanie sie do wyniku tego zapytania jest juz nieprawidlowe co jest sygnalizowane bledem w linii 96.

Rozwiazanie: albo wszedzie stosuj mysql_db_query, albo tam gdzie sie laczysz z serwerem zawolaj mysql_select_db i potem mozesz juz wszedzie dawac mysql_query.

Nie musisz tez uzywac zmiennej $conn - jest to parametr opcjonalny, jesli go nie podasz zostanie przyjete ostatnie nawiazane polaczenie z baza, a skoro laczysz sie tylko raz to...
baba
hmz... przetrawie i jak zrozumiem to poprawie smile.gif

dzieki za pomoc... jakby co bede meczyc dalej...
baba
Cytat
Uff... ale udalo Ci sie byka wcisnac w ten kod winksmiley.jpg Ladny jest.

W funckji show_wpisy korzystasz z mysql_db_query natoamist w show_kalendarz z mysql_query. Roznica polega na tym ze ta pierwsza funkcje mozesz traktowac jako ciag mysql_select_db i mysql_query z odpowidnimi paramtetrami.

Rozwiazanie: albo wszedzie stosuj mysql_db_query, albo tam gdzie sie laczysz z serwerem zawolaj mysql_select_db i potem mozesz juz wszedzie dawac mysql_query.


czyli teraz show_kalendarz powinno wygladac tak:

[php:1:94da3bd400]<?php
function show_kalendarz_months() {
global $conn, $nazwabazy;
$miesiace = array ('01' => 'styczeń', '02' => 'luty', '03' => 'marzec', '04' => 'kwiecień', '05' => 'maj', '06' => 'czerwiec', '07' => 'lipiec', '08' => 'sierpień', '09' => 'wrzesień', '10' => 'paĽdziernik', '11' => 'listopad', '12' => 'grudzień');

$result = mysql_db_query ("select distinct(data) from bullowate_wynikiast order by data desc");
$rows = mysql_numrows($result);
for ($i=0; $i<$rows; $i++) {
$data = mysql_result ($result, $i, 'data');
$daty[substr($data, -5, 2).' '.substr($data, 0, 4)] = substr($data, 0, 7);
}

while (list($key, $value) = @each($daty)) {
$mnth = substr($key, 0, 2);
echo '<b>::</b> <a href="'.$PHP_SELF.'?d='.$value.'">'.$miesiace[$mnth].' '.substr($key, -4).'</a><br>';
}
}
?>[/php:1:94da3bd400]

i dalej:

[php:1:94da3bd400]<?php
if ($op == 'foto') show_foto($id, $k);
elseif ($d == '') {
show_kalendarz_months();
show_wpisy();
} else {
show_wpisy($d);
}
?>[/php:1:94da3bd400]

Warning: Wrong parameter count for mysql_db_query() in /home/mail/bullterrier/public_html/bullowate/include/wyniki_ast.inc.php on line 95

Warning: Supplied argument is not a valid MySQL result resource in /home/mail/bullterrier/public_html/bullowate/include/wyniki_ast.inc.php on line 96

+ nizej wyniki ok.

a moze ja cos zle zrozumialam...
uboottd
mysql_db_quaery wymaga dwoch paremetrow (zobacz dla porownania jak to robisz w tej drugiej funkcji).
czyli powinno byc:

[code]$result = mysql_db_query ($nazwabazy,"select distinct(data) from bullowate_wynikiast order by data desc");
[code]
baba
ALLELUJA!!!!!!!!

niech ci bozia w czym tam sobie chcesz wynagrodzi! biggrin.gif biggrin.gif biggrin.gif biggrin.gif biggrin.gif biggrin.gif
DeyV
Cytat
Notatka: Od php 4.0.6 odradza sie stosowania tej funkcji. Nie używaj jej. W zamian korzystaj z mysql_select_db() i mysql_query().  
baba
Cytat
Cytat
Notatka: Od php 4.0.6 odradza sie stosowania tej funkcji. Nie używaj jej. W zamian korzystaj z mysql_select_db() i mysql_query().  


no i nie mozna sie w spokoju nacieszyc ze dziala smile.gif
przysiegam poprawic ale za chwile... na razie ciesze oczy tym co mam...
KaMeLeOn
Wogóle to wyciągnij to połączenie z funkcji...
Połącz się w skrypcie, a do funkcji przekazuj tylko identyfikator połączenia z bazą.

Straszny zamęt w tym kodzie.
DeyV
I'm sorry winksmiley.jpg
[fisher]
Cytat
pokarz ten kod (ten z miejsca błędu), pokarz jak robisz ten rezultat!


Panie Moderator pokaż piszemy przez 'ż' a nie przez 'rz'

No chyba ze pokarz znaczy ukarz (ukaraj) ;-)
KaMeLeOn
Cytat
"]Panie Moderator pokaż piszemy przez 'ż' a nie przez 'rz'

No chyba ze pokarz znaczy ukarz (ukaraj) ;-)

Panie [fisher] nie nabijamy sobie postów zbędnymi komentarzami...
Z takimi sprawami proszę się zwracać na PW...
Ostrzegam, bo następnym razem usunę. 8)
[fisher]
Cytat
Panie [fisher] nie nabijamy sobie postów zbędnymi komentarzami...
Z takimi sprawami proszę się zwracać na PW...
Ostrzegam, bo następnym razem usunę.  8)


Bynajmniej nie chodzi mi o jak to sie okresliles "nabijanie komentarzy".
Srednio mnie to rajcuje i dodam ze duza ich ilosc (komentarzy) nie swiadczy o niczym (przynajmniej dla mnie-moze w Twoim przypadku jest inaczej, ale to juz Twoja sprawa)

Nie to zebym sie czepial ale Moderus nie powinien robic takich kfiotkuf ortograficznych.

Z mojej strony to tyle co chcialem powiedziec

Zdroovka zycze ;-)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.