FAQ |
Kalender |
|
2009-12-13, 13:27 | #1 | |||
|
||||
Medlem
|
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. |
|||
Svara med citat |
2009-12-13, 13:34 | #2 | ||
|
|||
Mycket flitig postare
|
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 |
||
Svara med citat |
2009-12-13, 14:16 | #3 | |||
|
||||
Klarade millennium-buggen
|
Citat:
Vill du inte hellre att det ser ut så här: Citat:
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:
|
|||
Svara med citat |
2009-12-13, 14:55 | #4 | |||
|
||||
Medlem
|
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. |
|||
Svara med citat |
2009-12-13, 16:06 | #5 | ||
|
|||
Supermoderator
|
Hur ser din kod ut när du använder count?
__________________
Full-stack developer, free for smaller assignments |
||
Svara med citat |
2009-12-13, 22:44 | #6 | |||
|
||||
Medlem
|
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 |
|||
Svara med citat |
2009-12-14, 01:06 | #7 | ||
|
|||
Supermoderator
|
Du måste välja namn också om du vill skriva ut detta
__________________
Full-stack developer, free for smaller assignments |
||
Svara med citat |
2009-12-14, 10:04 | #8 | ||
|
|||
Klarade millennium-buggen
|
Citat:
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. |
||
Svara med citat |
2009-12-14, 03:11 | #9 | ||
|
|||
Mycket flitig postare
|
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 04:31 |
||
Svara med citat |
2009-12-14, 16:41 | #10 | |||
|
||||
Medlem
|
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 16:43 |
|||
Svara med citat |
Svara |
|
|