Kom ihåg mig?
Home Menu

Menu


Listning av förslag på namn

 
Ämnesverktyg Visningsalternativ
Oläst 2009-12-13, 12:27 #1
vidirs avatar
vidir vidir är inte uppkopplad
Medlem
 
Reg.datum: Jan 2004
Inlägg: 291
vidir vidir är inte uppkopplad
Medlem
vidirs avatar
 
Reg.datum: Jan 2004
Inlägg: 291
Standard Listning av förslag på namn

Hej!

jag har en php nominerings funktion som jag försöker laga.

Nu på visningssidan när jag listar upp nomineringarna ser det ut så här

Per
Kalle
Johan
Melissa
Andrea
Per
Per
Kalle
Johan
Melissa
melissa

Listan är lång och rörig

skulle vilja få det se ut såhär istället

Per
Kalle
Andrea
Per (2)
Kalle
Johan (2)
Melissa (2)

Om ett namn nomineras fler gånger upprepas inte namnet utan bara (antalet)

Vor hemskt tacksam för tips, eller vad en sådan funktion kallas så att man vet vad man skall googla efter.
vidir är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-12-13, 12:34 #2
qson qson är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Sep 2006
Inlägg: 513
qson qson är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Sep 2006
Inlägg: 513
Om du hämtar info från MySQL kan du använda COUNT(*) och "GROUP BY namn".

Info: http://dev.mysql.com/doc/refman/5.0/...functions.html
qson är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-12-13, 13:16 #3
Magnus_A Magnus_A är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: May 2006
Inlägg: 2 604
Magnus_A Magnus_A är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: May 2006
Inlägg: 2 604
Citat:
Ursprungligen postat av vidir Visa inlägg
Hej!

jag har en php nominerings funktion som jag försöker laga.

Nu på visningssidan när jag listar upp nomineringarna ser det ut så här

Per
Kalle
Johan
Melissa
Andrea
Per
Per
Kalle
Johan
Melissa
melissa

Listan är lång och rörig

skulle vilja få det se ut såhär istället

Per
Kalle
Andrea
Per (2)
Kalle
Johan (2)
Melissa (2)

Om ett namn nomineras fler gånger upprepas inte namnet utan bara (antalet)

Vor hemskt tacksam för tips, eller vad en sådan funktion kallas så att man vet vad man skall googla efter.
Det där var ingen större förbättring.
Vill du inte hellre att det ser ut så här:
Citat:
Andrea
Johan (2)
Kalle (2)
Melissa (3)
Per (3)
Alltså en(1) rad per namn, följt av totalt antal.
Vill du sortera efter namn eller antal nomineringar?
Som tidigare påpekats är det en barnlek om det är mysql och varje nominering ligger på en rad,
typ:
Citat:
select namn, count(namn) as antal from tabell group by namn order by [namn|antal desc]
Annars får du berätta hur du lagrar dina data idag. Vill du hantera olika stavningar som melissa/Melissa så blir det krångligare men inte omöjligt.
Magnus_A är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-12-13, 13:55 #4
vidirs avatar
vidir vidir är inte uppkopplad
Medlem
 
Reg.datum: Jan 2004
Inlägg: 291
vidir vidir är inte uppkopplad
Medlem
vidirs avatar
 
Reg.datum: Jan 2004
Inlägg: 291
tack för tipsen,,

db´ns tabeller är bara id och namn

<?
include("include/db_conn.php");
$xklo = "SELECT * FROM lista ORDER by id desc";
$xlop = mysql_query($xklo);
while($ras = mysql_fetch_array($xlop)) {
$namn = $ras["namn"];
?>

<?=$namn?> <br>

<?
}
?>

testar just nu med count som ovanstående men då visa ingenting , men jag vet iaf att det heter count() och måste bara lära mig detta..

åter,, tusen tack för tipsen.
vidir är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-12-13, 15:06 #5
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
Hur ser din kod ut när du använder count?
__________________
Full-stack developer, free for smaller assignments
tartareandesire är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-12-13, 21:44 #6
vidirs avatar
vidir vidir är inte uppkopplad
Medlem
 
Reg.datum: Jan 2004
Inlägg: 291
vidir vidir är inte uppkopplad
Medlem
vidirs avatar
 
Reg.datum: Jan 2004
Inlägg: 291
Hej!

jag hann inte testa långt med annat än
$xklo = "SELECT COUNT(*) FROM lista GROUP BY namn ORDER by id desc";
....... sedan dog internet i hela området... jag har ingen aning om jag lyckas med detta men skall försöka leka med deta under veckan
vidir är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-12-14, 00:06 #7
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
Citat:
Ursprungligen postat av vidir Visa inlägg
Hej!

jag hann inte testa långt med annat än
$xklo = "SELECT COUNT(*) FROM lista GROUP BY namn ORDER by id desc";
....... sedan dog internet i hela området... jag har ingen aning om jag lyckas med detta men skall försöka leka med deta under veckan
Du måste välja namn också om du vill skriva ut detta
__________________
Full-stack developer, free for smaller assignments
tartareandesire är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-12-14, 09:04 #8
allstars allstars är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Apr 2006
Inlägg: 2 126
allstars allstars är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Apr 2006
Inlägg: 2 126
Citat:
Ursprungligen postat av vidir Visa inlägg
Hej!

jag hann inte testa långt med annat än
$xklo = "SELECT COUNT(*) FROM lista GROUP BY namn ORDER by id desc";
....... sedan dog internet i hela området... jag har ingen aning om jag lyckas med detta men skall försöka leka med deta under veckan
Jag hade gjort så här:
SELECT COUNT(Id) AS `antal`, Namn FROM Lista GROUP BY namn ORDER By Namn ASC

Kollat av "namn" om den är skiljt från 1 och då skriva ut antalet efter namnet.
allstars är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-12-14, 02:11 #9
BjörnJ BjörnJ är inte uppkopplad
Mycket flitig postare
 
Reg.datum: May 2009
Inlägg: 971
BjörnJ BjörnJ är inte uppkopplad
Mycket flitig postare
 
Reg.datum: May 2009
Inlägg: 971
Något i den här stilen:
INSERT INTO nomineringar (namn,antal) VALUES ("$namn",1) ON DUPLICATE KEY UPDATE antal=antal+1;

namn-kolumnen ska vara unique eller primary.
Tänk på att $namn måste vara säkrad mot SQL injection.
Kanske formatera $namn först så gemener/versaler blir rätt.

Edit:
Man kanske även borde ha någon kontroll så att inte samma person kan nominera flera gånger. Eller att samma person får nominera flera olika personer, men högst en nominering per nominerad person. I det senare fallet får man nog titta på någon annan lösning än ON DUPLICATE KEY. I det första fallet kan man sätta en flagga i någon annan tabell när personen har använt sin nominering.

Senast redigerad av BjörnJ den 2009-12-14 klockan 03:31
BjörnJ är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-12-14, 15:41 #10
vidirs avatar
vidir vidir är inte uppkopplad
Medlem
 
Reg.datum: Jan 2004
Inlägg: 291
vidir vidir är inte uppkopplad
Medlem
vidirs avatar
 
Reg.datum: Jan 2004
Inlägg: 291
Tack allihop, det löste sig. Allstars, jag använde din lösning "SELECT COUNT(Id) AS `antal`, Namn FROM Lista GROUP BY namn ORDER By Namn ASC" det löste det för denna gång nomineringen hade liksom redan börjat och nu får man bättre vy av alla namn men nästa gång blir det filtrering av A a samt göra tabell unique eller primary som BjörnJ tipsade om.

Tusen tack!

Senast redigerad av vidir den 2009-12-14 klockan 15:43
vidir är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 10:56.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017