Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Lista przebojów w php i mysql
mtq
post 12.04.2002, 19:47:51
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 12.04.2002
Skąd: Kraków

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


Witam,

Pisz´ list´ przebojów na moj? stron´. Moja tabela w bazie danych wygl?da nast´puj?co:

-----------------------------
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
_39 TEXT,
Action_This_Day TEXT,
A_Kind_Of_Magic TEXT,
All_Dead_All_Dead TEXT,
All_Gods_People TEXT,
Another_One_Bites_The_Dust TEXT,

...
[ razem jest 168 utworow]
...

You_Dont_Fool_Me TEXT,
Youre_My_Best_Friend TEXT,
You_Take_My_Breath_Away TEXT
-----------------------------

I teraz mam problem. Chcia?bym, aby w rz?dku 1 (id=1) znajdowa?a sie liczba g?osów oddanych na utwór. Nast´pnie u˝y?bym instrukcji:
SELECT * FROM lpt WHERE id=1 ORDER BY....by co? Co napisaç w klauzuli ORDER BY?

Prosz´ wszystkich o pomoc, to dla mnie b. wa˝ne

pozdrawiam,
mtq
Go to the top of the page
+Quote Post
msulik
post 13.04.2002, 16:00:30
Post #2





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 31.03.2002
Skąd: Toruń

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


Fan Queen, huh?

To zapytanie zwróci tylko pierwszy rekord.

Twoja tabela jest bez sensu. Proponowałbym zrobić taką tabelę:
Kod
CREATE TABLE piesni (

id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,

tytul VARCHAR(255),

glosy INT UNSIGNED DEFAULT 0)


VARCHAR będzie lepszy niż TEXT, bo z tego, co wiem, to akurat żadna piosenka Queen nie ma tytułu dłuższego niż 255 znaków.

Poniższe zapytanie
Kod
SELECT * FROM piesni ORDER BY glosy DESC, tytul ASC

zwraca rekordy z utworami posortowane malejąco według ilości głosów (a więc od tego z największą ilością głosów), a utwory z tą samą liczbą głosów posortowane będą rosnąco względem tytułu.


--------------------
misiu | chór

"Zdeterminowany programista potrafi stworzyć fatalny kod w każdym języku"
Allen Holub
Go to the top of the page
+Quote Post
mtq
post 13.04.2002, 18:45:09
Post #3





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 12.04.2002
Skąd: Kraków

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


[quote]Fan Queen, huh?
[/quote]
Yeah!
[quote]
Twoja tabela jest bez sensu. Proponowa3bym zrobić taką tabelę:
Kod
CREATE TABLE piesni (

id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,

tytul VARCHAR(255),

glosy INT UNSIGNED DEFAULT 0)

[/quote]

OK - powiedz tylko, co znaczy UNSIGNED, DEFAULT 0 I PRIMARY KEY

[quote]
VARCHAR będzie lepszy niż TEXT, bo z tego, co wiem, to akurat żadna piosenka Queen nie ma tytu3u d3uższego niż 255 znaków.
[/quote]

Masz racje

[quote]
Poniższe zapytanie
Kod
SELECT * FROM piesni ORDER BY glosy DESC, tytul ASC

zwraca rekordy z utworami posortowane malejąco wed3ug ilości g3osów (a więc od tego z największą ilością g3osów), a utwory z tą samą liczbą g3osów posortowane będą rosnąco względem tytu3u.[/quote]

Dobre, dzi´ki!!!

----------
I wtedy, pisywac kolejno utwory:
INSERT INTO piesni (tytul) VALUES "A Kind Of Magic" WHERE id=1
Tak?
[/quote]
Go to the top of the page
+Quote Post
Seth
post 14.04.2002, 09:45:03
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

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


Cytat
OK - powiedz tylko, co znaczy UNSIGNED, DEFAULT 0 I PRIMARY KEY


INT UNSIGNED to typ danych,
DEFAULT to warotsc domyslna pola,
a PRIMARY KEY to klucz podstawowy w tabeli.

Mam nadzieje, ze wszystko juz jest jasne.
Go to the top of the page
+Quote Post
msulik
post 14.04.2002, 10:08:35
Post #5





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 31.03.2002
Skąd: Toruń

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


UNSIGNED w wolnym tłumaczeniu znaczy "BEZ ZNAKU", a w MySQL oznacza liczbę nieujemną (czyli dodatnią lub zero).


--------------------
misiu | chór

"Zdeterminowany programista potrafi stworzyć fatalny kod w każdym języku"
Allen Holub
Go to the top of the page
+Quote Post
mtq
post 14.04.2002, 10:40:20
Post #6





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 12.04.2002
Skąd: Kraków

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


Dzieki wszystkim, spróbuję zrobić tę listę jak będzie gotowa to dam znać biggrin.gif :wink: :!:
Go to the top of the page
+Quote Post
mtq
post 15.06.2002, 12:46:46
Post #7





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 12.04.2002
Skąd: Kraków

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


Wczoraj się wziąłem do pracy i już prawie działa, ale coś się głosy niepoprawnie zliczają angrysmiley.gif
Tzn. mam 5 list rozwijanych do wybierania utworów:
Kod
<select name="listaa">

<?php include("res/lista_opt.inc"); ?></select>



<p><select name="listab">

<?php include("res/lista_opt.inc"); ?></select>



<p><select name="listac">

<?php include("res/lista_opt.inc"); ?></select>



<p><select name="listad">

<?php include("res/lista_opt.inc"); ?></select>



<p><select name="listae">

<?php include("res/lista_opt.inc"); ?></select>


Teraz pobieram z bazy liczbę aktualnych głosów na wybrane utwory, doaję do nich 1 i wpisuję z powrotem do tabeli. ta część skryptu wygląda tak:
Kod
$gl1 = "SELECT glosy FROM listat WHERE tytul='$listaa'";

$akt_gl1a = mysql_query($gl1);

$glosy1 = $akt_gl1a + 1;

$gl2 = "SELECT glosy FROM listat WHERE tytul='$listab'";

$akt_gl2b = mysql_query($gl2);

$glosy2 = $akt_gl2b + 1;

$gl3 = "SELECT glosy FROM listat WHERE tytul='$listac'";

$akt_gl3c = mysql_query($gl3);

$glosy3 = $akt_gl3c + 1;

$gl4 = "SELECT glosy FROM listat WHERE tytul='$listad'";

$akt_gl4d = mysql_query($gl4);

$glosy4 = $akt_gl4d + 1;

$gl5 = "SELECT glosy FROM listat WHERE tytul='$listae'";

$akt_gl5e = mysql_query($gl5);

$glosy5 = $akt_gl5e + 1;

$wpisz_query1 = "UPDATE listat SET glosy='$glosy1' WHERE tytul='$listaa'";

$wpisane1 = mysql_query($wpisz_query1);

$wpisz_query2 = "UPDATE listat SET glosy='$glosy2' WHERE tytul='$listab'";

$wpisane2 = mysql_query($wpisz_query2);

$wpisz_query3 = "UPDATE listat SET glosy='$glosy3' WHERE tytul='$listac'";

$wpisane3 = mysql_query($wpisz_query3);

$wpisz_query4 = "UPDATE listat SET glosy='$glosy4' WHERE tytul='$listad'";

$wpisane4 = mysql_query($wpisz_query4);

$wpisz_query5 = "UPDATE listat SET glosy='$glosy5' WHERE tytul='$listae'";

$wpisane5 = mysql_query($wpisz_query5);

Aha i jeszcze dodam, że tabela wygląda tak:

id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
tytul VARCHAR(40),
glosy INT UNSIGNED DEFAULT 0

Nie wiem już co robić, wydaje mi się, że błąd tkwi w powyższym fragmencie. Wg mnie (jestem początkujący) wszystko wydaje się OK, ale może komuś od razu rzuci się w oczy okropny błąd (brak znaku $, hehe) Bardzo proszę o pomoc, jeśli trzeba coś więcej to służę :wink:


--------------------
pozdrawiam,
mtq
Go to the top of the page
+Quote Post
mtq
post 22.06.2002, 18:27:13
Post #8





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 12.04.2002
Skąd: Kraków

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


Już się nie musicie głowić 8) listę zrobiłem:
http://mtq.div.pl/lista.php
Zapraszam do głosowania :mrgreen:


--------------------
pozdrawiam,
mtq
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 26.04.2024 - 07:21