![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 51 Pomógł: 0 Dołączył: 19.05.2003 Skąd: Millhaven Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Mam liste piosenek ułożoną alfabetycznie...Chodzi o to aby przy tych zaczynających sie na 'a' była duża literka 'A' przy tych na 'b' - 'B' itd... A więc jest tak: [sql:1:a7b0f2982d] <? if(!is_numeric($_GET["id"])) { echo "A<br>"; if($q=mysql_query("SELECT id, nazwy FROM piosenki WHERE nazwy LIKE 'a%' ORDER BY nazwy ASC ")) { while($t=mysql_fetch_array($q)) { echo "<a href="teksty?id=".$t["id"]."">".$t["nazwy"]."</a><br>"; } } else { echo "Bład zapytania. Bład: ".mysql_error(); } } else { if($q=mysql_query("SELECT nazwy, teksty FROM piosenki WHERE id='".$_GET["id"]."'")) { $t=mysql_fetch_array($q); echo "<font size="2"><b>".$t["nazwy"]."</a></font><br><br>"; echo $t["teksty"]; } else { echo "Bład zapytania. Bład: ".mysql_error(); } } ?> [/sql:1:a7b0f2982d] I teraz pytanie: by napisać to samo do 'B' 'C' ... trzeba cały kod powtarzać czy może da się to jakoś łatwiej załatwić ? pozdrawiam -------------------- Tak kochamy marzenia, że boimy się je realizować ...
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarząd Postów: 1 512 Pomógł: 2 Dołączył: 22.04.2002 Skąd: Koszalin ![]() |
pierwsze
[sql:1:3378103c3e] "INSERT INTO piosenki ( nazwy, ......, pierwsza_litera ) VALUES (". $_POST['nazwa'].", ... ,LCASE( LEFT( ".$_POST['nazwa'].", 1 ) ) )"[/sql:1:3378103c3e] jest to zapytanie przy dodawaniu nowego rekordu. Istotne jest to ze musisz miec dodatkowa kolumne o nazwie [b]pierwsza_litera. LCASE - na poziomie mySQL-a zamienia wszystkie litery łańcucha znaków na małe LEFT - wyciąga określony ciąg znaków z łańcucha zaczynając od lewej strony a kończąc na określonym liczbowo - w tym wypadku jest to pierwszy znak. drugie w zmiennej $_GET['id'] daj litere alfabetu a, b ....... w ... [sql:1:3378103c3e] "SELECT * FROM piosenki where pierwsza_litera='LCASE( LEFT( ".$_GET['id'].", 1 ) )'" [/sql:1:3378103c3e] w przypadku gdyby ktos napisal w get wiecej znakow i tak zapytanie mysql je okroi i zamieni na male litery. plusy i minusy - dodawanie piosenki bedzie trwało troche wiecej czasu ale w zwiazku z tym ze to bedzie tylko 1 rekord to roznica nie bedzie miala znaczenia + wyszukiwanie po znaku a, b ....... w z pominienciem LIKE w znacznym stopmniu przyspieszy dzialanie mysql i nie bedziesz mial juz problemow z wielka litera A czy tez mala a. Pozdrawiam |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
[sql:1:1e6721a7ba]
SELECT * FROM piosenki where pierwsza_litera=LCASE( LEFT( '".$_GET['id']."', 1 ) ) [/sql:1:1e6721a7ba] Czy nie powinno być czasem bez apostrofów? Poza tym brakowało apostrofów w LEFT -------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 51 Pomógł: 0 Dołączył: 19.05.2003 Skąd: Millhaven Ostrzeżenie: (0%) ![]() ![]() |
Ok...co jest nie tak?Nie potrafie zapisać rekordu do tabeli...oto kod części strony:
[sql:1:6e15837b30] $dodaj=@mysql_query("INSERT INTO piosenki ( id, nazwy, teksty, pierwsza_litera ) VALUES (". $_POST['id'].", ". $_POST['nazwa'].", ". $_POST['tekst'].",LCASE( LEFT( ".$_POST['nazwa'].", 1 ) ) )"); [/sql:1:6e15837b30] Kod <FORM ACTION="dodaj_teksty.php" METHOD="POST">
<INPUT TYPE="TEXT" NAME="nazwa"> <TEXTAREA NAME="tekst"> <input type="submit" value="Dodaj" name="dodaj"> <INPUT TYPE="HIDDEN" name="id"> </FORM> I jeśli już to zostanie rozwikłane to nie rozumiem: Cytat w zmiennej $_GET['id'] daj litere alfabetu a, b ....... w ...
Więc ja całą regułkę tą którą napisałem na początku będę musiał za każdym razem powtarzać ? pozdrawiam -------------------- Tak kochamy marzenia, że boimy się je realizować ...
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Całkiem pomieszane...
Tak powinno być ok. [php:1:c575b3115d]<?php $pl=strtolower(substr($_POST["nazwa"],0,1)); $dodaj=@mysql_query("INSERT INTO piosenki ( id, nazwy, teksty, pierwsza_litera ) VALUES ('". mysql_escape_string($_POST['id'])."', '". mysql_escape_string($_POST['nazwa'])."', '". mysql_escape_string($_POST['tekst'])."', '".$pl."')"); ?>[/php:1:c575b3115d] -------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 51 Pomógł: 0 Dołączył: 19.05.2003 Skąd: Millhaven Ostrzeżenie: (0%) ![]() ![]() |
Działa:)
Ale dalej nie rozumiem gdzie to wcisnąć: [sql:1:14856b3914] SELECT * FROM piosenki WHERE pierwsza_litera=LCASE( LEFT( '".$_GET['id']."', 1 ) ) [/sql:1:14856b3914] i jak przypisać $_GET['id'] litere alfabetu ... :/ Nie wiem czy dostanę też od razu odpowiedz i na to wiec spytam od razu! Czy całe to : [php:1:14856b3914]<?php if(!is_numeric($_GET["id"])) { echo "A<br>"; if($q=mysql_query("SELECT id, nazwy FROM piosenki WHERE nazwy LIKE 'a%' ORDER BY nazwy ASC ")) { while($t=mysql_fetch_array($q)) { echo "<a href="teksty?id=".$t["id"]."">".$t["nazwy"]."</a><br>"; } } else { echo "Bład zapytania. Bład: ".mysql_error(); } } else { if($q=mysql_query("SELECT nazwy, teksty FROM piosenki WHERE id='".$_GET["id"]."'")) { $t=mysql_fetch_array($q); echo "<font size="2"><b>".$t["nazwy"]."</a></font><br><br>"; echo $t["teksty"]; } else { echo "Bład zapytania. Bład: ".mysql_error(); } } ?>[/php:1:14856b3914] będę musiał pisać dla każdej z liter ? pozdrawiam! -------------------- Tak kochamy marzenia, że boimy się je realizować ...
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 51 Pomógł: 0 Dołączył: 19.05.2003 Skąd: Millhaven Ostrzeżenie: (0%) ![]() ![]() |
Baaaardzo bym prosił o odpowiedź .... tak te wcześniejsze odpowiedzi nie miałyby sensu
![]() pozdrawiam! -------------------- Tak kochamy marzenia, że boimy się je realizować ...
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 29.06.2025 - 14:01 |