Autor | Zpráva | ||
---|---|---|---|
Rellik Profil |
#1 · Zasláno: 30. 1. 2007, 21:20:28
Zdravím měl bych jeden problém. Potřebuju v DB z jedné tabulky sečíst kolik obsahuje řádků. Poradí někdo? :) Díky.
|
||
Joker Profil |
#2 · Zasláno: 30. 1. 2007, 21:30:54
SELECT COUNT(*) FROM tabulka
|
||
Rellik Profil |
#3 · Zasláno: 30. 1. 2007, 21:36:10
JJ dik už sem to našel jinde. Jak by to šlo pak použít v naásledujícím scriptu?
$kolik=mysql_query('select * from galerie'); $celkove_zaznamu = MySQL_Num_Rows($kolik); $nahodne = rand(1,$celkove_zaznamu); $vypis = mysql_query("SELECT * FROM galerie WHERE co tady doplnit?? = $nahodne"); prostě aby to náhodně vybralo jeden řádek a ten sem si mohl vypsat podle potřeby. |
||
Joker Profil |
#4 · Zasláno: 30. 1. 2007, 21:45:12
:-D To je dobrý: Jak tu někdo může vědět, jaký sloupec patří do toho dotazu, když neznáme strukturu tabulky?
Ohledně toho počtu bych to dělal takhle: - Pokud jde o zjištění čistě jenom počtu řádků, volil bych SELECT COUNT(*) FROM tabulka. Ještě moje domněnka: předpokládám, že z pohledu výkonu by bylo lepší nevybírat podle všech sloupců, ale jen podle primárního klíče, tedy například SELECT COUNT(id) FROM tabulka. - Pokud potřebuju provést nějaký dotaz a kromě toho potřebuju i vědět, kolik řádků ten dostaz vrátil, na to je mysql_num_rows() Jinak ten kód výše mi připadá na vrácení náhodného záznamu dost neefektivní, když už, tak: $kolik=mysql_query('select * from galerie'); $celkove_zaznamu = MySQL_Num_Rows($kolik); $nahodne = rand(1,$celkove_zaznamu); for($i = 0; $i < $nahodne; $i++){ $zaznam = mysql_fetch_row(); // zahodím všechny předchozí řádky } $zaznam = mysql_fetch_row(); // náhodný řádek |
||
Rellik Profil |
#5 · Zasláno: 30. 1. 2007, 21:48:57 · Upravil/a: Rellik
Jo podle ID me to taky napadlo, ale když neěco smažu tak už tam to ID nebude a tudíž ho pak nemůžu zobrazit...
Jinak tabulka je jednoduchá: CREATE TABLE `galerie` ( `id` int(11) NOT NULL auto_increment, `nazev` text character set cp1250 collate cp1250_czech_cs NOT NULL, `slozka` text character set cp1250 collate cp1250_czech_cs NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci AUTO_INCREMENT=1; Abych to vysvětlil do DB si ukládám názvy galeriií a složek ve kterých je ta patřičná galerie. Na stránku dělám zobrazení náhodného odrázku z náhodné galerie. A nějak to potřebuju dát dohtomady s tou DB. |
||
djlj Profil |
#6 · Zasláno: 30. 1. 2007, 21:49:53 · Upravil/a: djlj
Jinak ten kód výše mi připadá na vrácení náhodného záznamu dost neefektivní
A ten tvůj je efektivní? :) Na vybrání náhodných záznamů z databáze zapomeňte na php a používejte SELECT neco FROM tabulka ORDER BY RAND(). P.S.: samozřejmě je třeba použít LIMIT pro počet záznamů, které chcete zobrazit ;) |
||
Rellik Profil |
#7 · Zasláno: 30. 1. 2007, 22:10:17 · Upravil/a: Rellik
Vyřešeno! Díky za rady a za nakopnutí! :)
Udělal sem to tak: $kolik=mysql_query('select * from galerie'); $celkove_zaznamu = MySQL_Num_Rows($kolik); $obrazek = rand(1,$celkove_zaznamu); $vypis = mysql_query("SELECT * FROM galerie limit ".$obrazek); .... Šlo o ty náhodné obrázky pod menu... http://firstpage.profitux.cz/my_rs/ |
||
Joker Profil |
#8 · Zasláno: 30. 1. 2007, 22:37:13
A ten tvůj je efektivní? :)
Efektivnější než ten předtím, IMHO ;-) Ale to ORDER BY RAND() je asi nejlepší, jsem přemýšlel, jak to udělat přímo v SQL, ale tady tohle mě teda nenapadlo... nebo spíš, že to bude fungovat :-) |
||
25k Profil * |
#9 · Zasláno: 31. 1. 2007, 00:37:24
>>
$kolik=mysql_query('select * from galerie'); $celkove_zaznamu = MySQL_Num_Rows($kolik); Proboha ... |
||
Kajman_ Profil * |
#10 · Zasláno: 31. 1. 2007, 10:22:19
Někdy může být užitečné použít
select SQL_CALC_FOUND_ROWS sloupecky... pak mysql_num_rows vrátí i při limitu počet řádků, které by to vyplivlo, kdyby tam nebyl limit. |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0