baba
30.05.2003, 19:18:18
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
30.05.2003, 19:28:39
pokarz ten kod (ten z miejsca błędu), pokarz jak robisz ten rezultat!
uboottd
30.05.2003, 21:34:08
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
31.05.2003, 06:56:25
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
3.06.2003, 10:53:18
Uff... ale udalo Ci sie byka wcisnac w ten kod

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...
hmz... przetrawie i jak zrozumiem to poprawie
dzieki za pomoc... jakby co bede meczyc dalej...
Cytat
Uff... ale udalo Ci sie byka wcisnac w ten kod

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
6.06.2003, 12:59:23
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]
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().
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
przysiegam poprawic ale za chwile... na razie ciesze oczy tym co mam...
KaMeLeOn
6.06.2003, 13:21:16
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.
[fisher]
9.06.2003, 02:14:20
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
9.06.2003, 02:18:28
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]
9.06.2003, 02:25:47
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 ;-)