Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

selectarea ultimului rand adaugat
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> MySQL
Subiectul anterior :: Subiectul următor  
Autor Mesaj
_5pId3r_



Data înscrierii: 14/Noi/2004
Mesaje: 40

Trimis: Joi Dec 02, 2004 5:42 pm    Titlul subiectului: selectarea ultimului rand adaugat  

Salut.
Am un tabel in mysql in care sunt introdusi toti userii care se inregistreaza pe site.
Vreau sa ii printez pe pagina doar pe ultimii 4 inregistrati.

Asta ca sa vedeti ce vreau sa fac , poate ajuta.

Problema e ca nu stiu cum pot sa fac sa selectez ultimul rand adaugat , ultimul user inregistrat. Din php.
multumesc
Sus  
boo



Data înscrierii: 24/Mar/2004
Mesaje: 223
Locație: Ploiesti

Trimis: Joi Dec 02, 2004 8:27 pm    Titlul subiectului:  

Cod:
$query=SELECT useri FROM tabel;
$res=mysql_query($query);
$arr=array();
while($row=mysql_fetch_array($res)){
$arr=array_merge($arr, $row['0']);
}
sort($arr);
reset($arr);
for($i=0;$i<=4;$i++){
echo $arr[$i];
}

Sper sa mearga ca nu l-am verificat.
Sus  
_5pId3r_



Data înscrierii: 14/Noi/2004
Mesaje: 40

Trimis: Joi Dec 02, 2004 10:57 pm    Titlul subiectului:  

merge dar imi afiseaza pimii inregistrati nu ultimii inregistrati din tabel..
de ce?
multumesc
Sus  
TheWanderer



Data înscrierii: 05/Apr/2004
Mesaje: 142
Locație: Bucuresti

Trimis: Vin Dec 03, 2004 6:31 pm    Titlul subiectului:  

De fapt ii arata in ordine alfabetica !!! Daca vrei sa ii iei pe ultimul introdus adaugi un id (cheie primara, not null, autoincrement) si dupa insertie apelezi :
mysql_insert_id(); si vei avea ultimul id inserat. Dupa ce ai ultimul ID e simplu.
Sus  
boo



Data înscrierii: 24/Mar/2004
Mesaje: 223
Locație: Ploiesti

Trimis: Vin Dec 03, 2004 6:55 pm    Titlul subiectului:  

Cod:
$query=SELECT useri FROM tabel;
$res=mysql_query($query);
$tot=mysql_num_rows($query)-1;
$patru=$tot-4;
$arr=array();
while($row=mysql_fetch_array($res)){
$arr=array_merge($arr, $row['0']);
}
for($i=$patru;$i<=$tot;$i++){
echo $arr[$i];
}


Acum sper sa mearga, nici de data asta nu am verificat. Sorry se mai grabeste omu'
Sus  
TheWanderer



Data înscrierii: 05/Apr/2004
Mesaje: 142
Locație: Bucuresti

Trimis: Vin Dec 03, 2004 11:37 pm    Titlul subiectului:  

:evil: Aha... si executa tu codul de mai sus pe o tabela cu 10 000 inregistrari si vezi ce zice ! De ce trebuie sa ii selectezi pe toti daca ai nevoie doar de ultimii patru ?!

Faci un select count(*) intai si dai un query cu select * from x limit count(*)-4, 4 si ai eliberat mult memoria iar scriptul ruleaza eficient.

Un query de count se executa instantaneu pe cand returnarea celor 10 000 de inregistrari ia timp si consuma memorie. In codul tau poti nici sa nu le mai parcurgi secvential, poti sa faci seek direct.
Sus  
arond



Data înscrierii: 11/Mar/2004
Mesaje: 580
Locație: 127.0.0.1

Trimis: Sâm Dec 04, 2004 1:22 am    Titlul subiectului:  

Problema e chiar mai simpla decat atat, si cred ca analiza are trebui sa se desfasoare cam asa:

1. Ce inseamna "ultimii n" ? Inseamna ca exista o anume relatie de ordonare in tabelul respectiv... fie dupa data inscrierii, dupa un id autoincrement (generat secvential-crescator in cazul MySQL), etc...

2. Cunoscand relatia de ordonare lamurita la punctul 1, treaba se reduce la:

SELECT * FROM tabel ORDER BY camp_ordine DESC LIMIT 0, n

unde:

tabel - numele tabelului
camp_ordine - campul care determina ordinea dupa criteriul de la punctul 1, iar in exemplul de mai sus se presupune ca utilizatorii sunt mai noi daca au camp_ordine mai mare (asta functioneaza si la data inregistrarii si la id autoincrement)
n - numarul de utilizatori de care e nevoie

Numa' bune.
Sus  
roverdc



Data înscrierii: 27/Noi/2004
Mesaje: 21
Locație: Piatra-Neamt

Trimis: Sâm Dec 04, 2004 2:19 pm    Titlul subiectului:  

As avea si yo o problema, daca poate cineva sa ma ajute... Eu am intr-un tabel vizualizari la niste pagini am vreo 1500 de vizualizari ... nu unice.. exemplu( Cel mai mare este 15203, dupa aia 9323, 9200 etc. ) Si as vrea sa le arate exact asa in ordine de la nr mare la numarul mic primele 30..
Eu am incercat codul:
Cod:
$query = "SELECT * FROM name order by viewd desc limit 30";
si imi arata 30 dar arata pana la 9 si ar trebuii cel mare 15203... Stie cineva dc ??? Va rog frumos.
Sus  
mihnea sim



Data înscrierii: 20/Aug/2004
Mesaje: 149
Locație: Alexandria

Trimis: Sâm Dec 04, 2004 5:33 pm    Titlul subiectului:  

daca nu ma insel sintaxa corecta este limit 0,30 - adica incepand cu randul 0 al selectului, urmatoarele 30 .. dar poate ma mai insel si eu si o merge si ca tine
Sus  
roverdc



Data înscrierii: 27/Noi/2004
Mesaje: 21
Locație: Piatra-Neamt

Trimis: Sâm Dec 04, 2004 5:51 pm    Titlul subiectului:  

da...am incercat dar nu inteleg de ce imi arata vreo 10 cu 6 vizualizari ... vreo 6 cu 9 vizualizari...cand trebuia sa le arate pe alea mari cu 15.000 de vizualizari...dar e limita pana 9 si nu inteleg de ce...va rog daca ma poate ajuta cineva sa iau cel mai mare numar din baza de date...

$query = "SELECT * FROM name order by viewd DESC limit 0,30";

am incercat si asa si tot nu merge..
Sus  
_5pId3r_



Data înscrierii: 14/Noi/2004
Mesaje: 40

Trimis: Dum Dec 05, 2004 12:10 am    Titlul subiectului:  

salut.
Wanderer cum exact fac ce ai spus tu cu count(*)?
multumesc
Sus  
aurelian



Data înscrierii: 01/Iun/2003
Mesaje: 833
Locație: Bucuresti

Trimis: Lun Dec 06, 2004 9:53 am    Titlul subiectului:  

http://dev.mysql.com/doc/mysql/en/Counting_rows.html
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> MySQL
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community