Warning: count(): Parameter must be an array or an object that implements Countable in /home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line 820

Topic: Eiluciu skaiciavimas didejimo tvarka pagal kito laukelio skaiciu

Sveiki.
Yra lentele:

ID | Name | Score

1   | Testas| 54
2   |Testas2| 21
3   |Testas3| 78
....

ir kaip padaryti jog visus duomenys rikiuotu taip:

1   | Testas2| 21
2   |Testas| 54
3   |Testas3| 78

didejimo tvarka pagal score skaiciu.

Visa PMA isminkiau bet niekas nesigavo arba tai neimanoma.
Jei neimanoma kaip uzklausa turetu atrodyt , kad istraukiant  pvz `Testas` rezultatas butu toks:
2 testas 54
su php $id = 0; $id++; ir ?

Re: Eiluciu skaiciavimas didejimo tvarka pagal kito laukelio skaiciu

Užklausoje panaudok:

SELECT ...
FROM ...
WHERE ...
ORDER BY `Score` ASC

3 (edited by Avice 2010-12-13 17:33:31)

Re: Eiluciu skaiciavimas didejimo tvarka pagal kito laukelio skaiciu

tai darau

mysql_query("SELECT * FROM xx WHERE `x` = '116112' AND `on` = '2' ORDER BY score ASC");

ir kaip dabar padaryt , kad parodytu ta id ?
pagal score taskus tos eilutes id turetu but  2

Re: Eiluciu skaiciavimas didejimo tvarka pagal kito laukelio skaiciu

Paprasti PHP pavyzdžiai, kaip išvesti duomenis iš duomenų bazės:
http://www.php.net/manual/en/function.mysql-query.php

Re: Eiluciu skaiciavimas didejimo tvarka pagal kito laukelio skaiciu

o pacioje duomenu bazeje neimanoma rikiuot duomenu? pagal score?
Dabar pasidariau taip:

<?php
$result = mysql_query("SELECT * FROM serveriai where `servkodas` = '116112' ORDER BY `score` ASC");
$z = 0;
while($row = mysql_fetch_array($result))
$z++;
  {
  echo $row['server'];
  }
?>

ir dabar reikia kaipnors pagamint , kad rodytu ta id pagal score .
bet nelabai sugalvoju kaip

Re: Eiluciu skaiciavimas didejimo tvarka pagal kito laukelio skaiciu

Avice wrote:

o pacioje duomenu bazeje neimanoma rikiuot duomenu? pagal score?

Ne.

Avice wrote:

ir dabar reikia kaipnors pagamint , kad rodytu ta id pagal score .
bet nelabai sugalvoju kaip

Tai $row masyve yra ir id stulpelis, tik echo padaryk.

Re: Eiluciu skaiciavimas didejimo tvarka pagal kito laukelio skaiciu

na jis yra , bet tik visus duomenys atvaizdavus suzinociau koks yra to laukelio id pagal score naudojant $id++;
, o neimanoma padaryt kad atvaizduotu tik 1 laukely su tam tikru id.
pvz rezultatas butu toks :

maziausiai tasku turi :
Nr   Name
25. Tomas

Re: Eiluciu skaiciavimas didejimo tvarka pagal kito laukelio skaiciu

Tai viskas yra įmanoma.

Jeigu tau reikia vieno įrašo su mažiausiu stulpeliu, tai rūšiuok didejimo tvarka (ORDER BY .. ASC) ir apribok įrašų skaičių iki 1 (LIMIT 1).

Jeigu tau reikia įrašo su konkrečiu id tai WHERE salygoje taip ir nurodyk: ... WHERE `id` = 15

Re: Eiluciu skaiciavimas didejimo tvarka pagal kito laukelio skaiciu

Tai as tai zinau , bet yra beda su tuo id [Nr] kaip gauti ta nr pvz:
maziausiai tasku turi :

Nr   Name
25. Tomas

jeigu duomenu bazeje nera id ?
tai su $x = 0; $x++;
bet kaip gauti butent ta skaiciu pagal score?

Re: Eiluciu skaiciavimas didejimo tvarka pagal kito laukelio skaiciu

Avice wrote:

Tai as tai zinau , bet yra beda su tuo id [Nr] kaip gauti ta nr pvz:
maziausiai tasku turi :

Nr   Name
25. Tomas

jeigu duomenu bazeje nera id ?

Daryk su LIMIT

11 (edited by Avice 2010-12-13 21:24:40)

Re: Eiluciu skaiciavimas didejimo tvarka pagal kito laukelio skaiciu

tai kaip man su tuo limt gauti ta nr[skaiciu] :D
gal ne taip paaiskinau?

Lentele:
id      name     score
0     Tomas     25
1     Tadas     34
2     Ugne      15
3     zilve     45
4     Katynas    3
5    Pele        5

ir dabar pavizdziui noriu istraukt Ugne duomenys:

"SELECT * FROM serveriai where `name` = 'Ugne' ORDER BY `score` ASC "
$id = 0;
while($row = mysql_fetch_array($result))
$id++;
  {
  echo " ".$id." ".$row['name']." ".$row['score']." ";

  }

bet id bus 1 , o kaip padaryt kad id butu [4]  skaiciuojant pagal score mazejimo tvarka .
?
niekaip nepavyksta. Nerandu funkcijos tokios

Re: Eiluciu skaiciavimas didejimo tvarka pagal kito laukelio skaiciu

Avice wrote:

bet id bus 1 , o kaip padaryt kad id butu [4]  skaiciuojant pagal score mazejimo tvarka .
?
niekaip nepavyksta. Nerandu funkcijos tokios

Tokios funkcijos ir nėra.

Eiliškumą prie kažkokių sąlygų reikia išskaičiuoti dinamiškai.

Tą galima padaryti tiek su PHP tiek su MySQL'u, bet... čia yra papildomai naudojami serverio resursai. Todėl darant tokias sistemas rekomenduotina tą tavo "eiliškumą" ir užsaugoti lentelėje, o suskaičiuoti tada, kai perskaičiuojamas score.

Kaip SQL pagalva sukurti dinaminį skaitliuką:

SET @skaitliukas = 0;
SELECT `id`,
  @skaitliukas := @skaitliukas + 1 AS eile
FROM `...`
WHERE ...
ORDER BY ...

Realiai tą "eiliškumą" reikėtų skaičiuoti tik tada, kada jis pasikeičia ir daryti lentelės UPDATE.

p.s.: bandyti išvengti pradinės skaitliuko reikšmės nustatymo galima, bet nepatyrusiems programuotojams nerekomentuojama (-;

Re: Eiluciu skaiciavimas didejimo tvarka pagal kito laukelio skaiciu

nu dekui .
bandysiu kaip nors padaryt , kad su cronjob update eilutes