Autor Zpráva
Rellik
Profil
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
SELECT COUNT(*) FROM tabulka
Rellik
Profil
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
:-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
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
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
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
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 *
>>
$kolik=mysql_query('select * from galerie');
$celkove_zaznamu = MySQL_Num_Rows($kolik);


Proboha ...
Kajman_
Profil *
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.
Toto téma je uzamčeno. Odpověď nelze zaslat.