Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][php] Rotator Banerów =) Oceńcie i sprawdzcie :)
dawhol
post
Post #1





Grupa: Zarejestrowani
Postów: 256
Pomógł: 0
Dołączył: 19.07.2006
Skąd: Ostrów Wielkopolski

Ostrzeżenie: (0%)
-----


W tabeli mamy trzy pola:
"adres" - adres do strony
"obrazek" - adres do obrazka
"wyswietlen" - ilos wyswietlen (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Pliku z formularzem nie daje bo chyba kazdy wie jak wygląda (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Pliku gdzie jest wykonywana funkcja która dodaje do bazy MySQL tez nie daje poniewaz tego nie chce abyscie oceniali bo niema tam co zwykle zapytani (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) zalezy mi na ocenie skryptu który wyświetla banery (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) rotacyjnie co odswierzenie strony (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . Oto jego kod:

  1. <?php
  2. $zapytanie = "SELECT * FROM cms_bannery WHERE id BETWEEN 1 AND 3 AND wyswietlen<1000 ORDER BY rand() LIMIT 1";
  3. $wykonaj = mysql_query($zapytanie);
  4.  
  5. if($dane=mysql_fetch_array($wykonaj)) 
  6. {
  7. echo ('<a href="'.$dane['adres'].'"><img src="'.$dane['obrazek'].'"></a>');
  8. } 
  9. else 
  10.  
  11. $wysw = $dane['wyswietlen'];
  12. $adres = $dane['adres'];
  13. $up = 1;
  14.  
  15. $ilwysw = $wysw+$up;
  16.  
  17. $zapytanie2 = "UPDATE cms_bannery SET wyswietlen='$ilwysw' WHERE adres='$adres'";
  18. $wykonaj2 = mysql_query($zapytanie2);
  19.  
  20. if($wykonaj2) 
  21. {
  22. echo ('');
  23. } 
  24. else 
  25. ?>


Oczywiscie skrypt po kazdym wyswietleniu banera dodaje 1 do jego liczby wyswietlen (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Prosze o oceny i ew. rady co i jak poprawic (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) moj drugi skrypcik po 4-5 dniach nauki (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował dawhol 25.07.2006, 08:14:14
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




  1. <?php
  2. if($dane=mysql_fetch_array($wykonaj)) 
  3. {
  4. echo ('<a href="'.$dane['adres'].'"><img src="'.$dane['obrazek'].'"></a>');
  5. } 
  6. else 
  7. ?>

Te mysql_error() powinno byc po mysql_query a nie po mysql_fetch_array(). W przypadku bledu zapytania dostaniesz jeszcze niepotrzebne bledy przy mysql_fetch_array() gdyz wykonywac sie bedzie na blednych danych.
Gdy zapytanie nic ci nie zwroci, to wygenereuje sie mysql_error(), czyli nic sie nie wygeneruje, gdy errora mysql nie bedzie.
Krotko mowiac: w zlym miejscu dalej mysql_error() (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

  1. ...id BETWEEN 1 AND 3...
czemu tak? mozna tylko 3 banery losowac i to tylko z zadanym id?
Go to the top of the page
+Quote Post
dawhol
post
Post #3





Grupa: Zarejestrowani
Postów: 256
Pomógł: 0
Dołączył: 19.07.2006
Skąd: Ostrów Wielkopolski

Ostrzeżenie: (0%)
-----


stwierdzilem terasz ze trzeba by poprawic to tak aby wszystko wzgledem ID bylo albo obrazka a nie adresu bo czasem mozna dac dwa rozne banery pod jeden adres =)

w sumie trzeba by to popraiwc tam jes BETWEN 1 and 3 poniewaz chce aby losowal mi liczbe pomiedzy tymi trzema bo obecnie mam 3 banery w bazie ale trzeba by tam dac ostatni id z bazy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) zamiast tej 3 zapomniałem to zrobic (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
ale trzeba by tam dac ostatni id z bazy
Ale po co? Po co wogole warunek na te id, skoro mają byc losowane wszystkie rekordy? wystarczy warunek na wyswietlenia.
Go to the top of the page
+Quote Post
dawhol
post
Post #5





Grupa: Zarejestrowani
Postów: 256
Pomógł: 0
Dołączył: 19.07.2006
Skąd: Ostrów Wielkopolski

Ostrzeżenie: (0%)
-----


no spoko ale jak nie bylo tego to mi losowal liczbe której niema w bazie a moze mialem inny blad (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
musze to sprawdzic (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) poziej (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) bo teraz lece do pracy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
no spoko ale jak nie bylo tego to mi losowal liczbe której niema w bazie

jak moze losowac ci z bazy cos czego nie ma? Losuje po rekordach, ktore są
Go to the top of the page
+Quote Post
Astarot
post
Post #7





Grupa: Zarejestrowani
Postów: 90
Pomógł: 4
Dołączył: 5.02.2006

Ostrzeżenie: (0%)
-----


W swoim rotatorze nie uwzględniłeś danych osadzonych w skryptach JS, a także banerków flashowych. Pozatym dodaj alt="coś" bo walidator będzie krzyczał.

<img src="'.$dane['obrazek'].'" alt="cos" />

pozdr.

Ten post edytował Astarot 25.07.2006, 09:27:42
Go to the top of the page
+Quote Post
dawhol
post
Post #8





Grupa: Zarejestrowani
Postów: 256
Pomógł: 0
Dołączył: 19.07.2006
Skąd: Ostrów Wielkopolski

Ostrzeżenie: (0%)
-----


~nospor moze i masz racje widocznie mialem inny blad (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) i jak go poprawilem to zapomnialem tego zmienic (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) no ale w koncu ucze sie od paru dni wiec odrazy nie napisze skryptół bezbłędnyc po to je tu daje zeby je ocenic i ew. podac jakies uwagi (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

~astarot fatk zapomniałem o tym (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) zdarza sie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) trzn w pierwszej wersji to było ale w pierwszej wersji nie mialem za to ilosci wyswietlen a teraz dodalem i zapomnialem o tym (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Nightwalker
post
Post #9





Grupa: Zarejestrowani
Postów: 180
Pomógł: 0
Dołączył: 5.02.2006
Skąd: Bytom

Ostrzeżenie: (10%)
X----


w Twoim kodzie nie ma jakże ważnego

mysql_free_result" title="Zobacz w manualu php" target="_manual
Go to the top of the page
+Quote Post
dawhol
post
Post #10





Grupa: Zarejestrowani
Postów: 256
Pomógł: 0
Dołączył: 19.07.2006
Skąd: Ostrów Wielkopolski

Ostrzeżenie: (0%)
-----


~Nightwalker zaraz to dodam u siebie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) dzieki za poinformowanie mnie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) nawet nie znalem takiej funkcji (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ale teraz juz bede o niej pamietał (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) w koncu czlowiek uczy sie na blędach (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




bez przesady... jak juz podajecie linki to czytajcie chociaz:
Cytat
mysql_free_result() używa się tylko w wypadkach obawy zajęcia zbyt dużej ilości pamięci przez zapytania zwracające duże ilości danych. Cała pamięć przydzielona wynikowi skojarzonemu z podanym identyfikatorem wyniku będzie automatycznie zwolniona.

Skrypt tutaj zwraca jeden rekord, ktory ma sie nijak do " duże ilości danych."

edit (po poscie ponizej): z tresci posta wnioskowalem jednak ze to jest wymog dla tego skryptu a nie dobry nawyk (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
Nightwalker
post
Post #12





Grupa: Zarejestrowani
Postów: 180
Pomógł: 0
Dołączył: 5.02.2006
Skąd: Bytom

Ostrzeżenie: (10%)
X----


Cytat(nospor @ 25.07.2006, 13:29 ) *
bez przesady... jak juz podajecie linki to czytajcie chociaz:

Skrypt tutaj zwraca jeden rekord, ktory ma sie nijak do " duże ilości danych."



Takie coś rodzi złe nawyki, dlatego to napisałem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Edit do posta powyżej: źle się wyraziłem, ale lepiej opróżniać ZAWSZE i później nie zapominać, niż na odwrót (przynajmniej takie jest moje zdanie w tej sprawie) (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Ten post edytował Nightwalker 25.07.2006, 17:33:59
Go to the top of the page
+Quote Post
Turgon
post
Post #13





Grupa: Zarejestrowani
Postów: 800
Pomógł: 0
Dołączył: 26.11.2005
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


Według mnie przydałoby się mysql_num_rows, gdyż wykonujemy selecta id z bazy bez warunków, czyli mamy wszystkie rekordy kolumny id. Następnie ta prosta komenda i skrypt wie spośród jakich liczb losowac.
Go to the top of the page
+Quote Post
dawhol
post
Post #14





Grupa: Zarejestrowani
Postów: 256
Pomógł: 0
Dołączył: 19.07.2006
Skąd: Ostrów Wielkopolski

Ostrzeżenie: (0%)
-----


Dobra to powiem co poprawilem i moderator moze zamknac temat (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) jak chce ofc (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

1) usubołem warunek id BETWEEN 1 AND ... (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) i działą moj bład był jakis (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
2) dodałem pole opis w bazie oraz alt w obrazku i title w linku (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
3) zrobiłem echo mysql_error w funkcji warunkowej (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) przy mysql_query (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) tak jak radzil ~nospor
4) dodałem w tabeli pole max wyswietlen i zamiast 1000 w pierwsyzsm zapytaniu sql dalem 'maxwyswietlen' tzn:
  1. SELECT * FROM cms_bannery WHERE wyswietlen<maxwyswietlen ORDER BY rand() LIMIT 1


działa pięknie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) jeszcze pozniej sie pobawei aby wyszczególnic banery gif od flasha i innych (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ale to pozniej (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował dawhol 25.07.2006, 17:19:51
Go to the top of the page
+Quote Post
Nightwalker
post
Post #15





Grupa: Zarejestrowani
Postów: 180
Pomógł: 0
Dołączył: 5.02.2006
Skąd: Bytom

Ostrzeżenie: (10%)
X----


I jeszcze jedno, dlaczego wyciągasz wszystko z bazy (SELECT *) zamiast wyciągnąć tylko potrzebne pola, przykładowo

  1. SELECT `pole1`, `pole2`, `pole3` FROM `tabela`


?

Komentarz do wpisu poniżej: nie znam struktury bazy, a przeważnie potrzebne jest tylko kilka pól...

Ten post edytował Nightwalker 25.07.2006, 18:52:49
Go to the top of the page
+Quote Post
dawhol
post
Post #16





Grupa: Zarejestrowani
Postów: 256
Pomógł: 0
Dołączył: 19.07.2006
Skąd: Ostrów Wielkopolski

Ostrzeżenie: (0%)
-----


no bo wszystko jest mi potrzbne (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) to chyba logiczne (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 19:22