Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Lista przebojów w php i mysql
Forum PHP.pl > Forum > Bazy danych > MySQL
mtq
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
msulik
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.
mtq
[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]
Seth
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.
msulik
UNSIGNED w wolnym tłumaczeniu znaczy "BEZ ZNAKU", a w MySQL oznacza liczbę nieujemną (czyli dodatnią lub zero).
mtq
Dzieki wszystkim, spróbuję zrobić tę listę jak będzie gotowa to dam znać biggrin.gif :wink: :!:
mtq
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:
mtq
Już się nie musicie głowić 8) listę zrobiłem:
http://mtq.div.pl/lista.php
Zapraszam do głosowania :mrgreen:
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.