COUNTIF function

Her kan du få hjælp og stille spørgsmål til MySQL/MySQLi!
Besvar
wizzuriz
Begynder
Indlæg:5
Tilmeldt:9. sep 2011, 01:01
COUNTIF function

Indlæg af wizzuriz » 9. sep 2011, 01:06

Hej alle.

Jeg ville høre om der måske er nogle her som kan hjælpe mig med at tælle en value i en bestem row.

eksampel:

Columns,( user_id, column_1, column_2, column_3, column_4, column_5, )
her vil jeg gerne tælle hvor mange gange der står f.eks. 2 eller mere i column 1 til og med 5 WHERE user_id = $uid;

I excel kan man =COUNTIF(A3:Q3, ">=2") også for jeg et tal som er = hvor mange gange der er et tal på 2 eller over.

Hvis det er noget i kan finde ud af høre jeg meget gerne.

de bedste hilsner
Wizzurz.

Brugeravatar
ThomasI
Grundlægger
Grundlægger
Indlæg:1528
Tilmeldt:28. dec 2010, 10:49

Re: COUNTIF function

Indlæg af ThomasI » 9. sep 2011, 12:39

Hej!

Det du skal gøre er at gemme alle dine tabel værdier fra den givne ID i en array. Herefter bruger du

array_count_values() på denne array for de værdier du vil have talt.

F.eks

<?php
$array = array(1, 2, 1, 2, 1);
print_r(array_count_values($array));
?>

dette vil give

Array
(
[1] => 3
[2] => 2

)

Google evt. funktionen og se hvordan det fungere...

wizzuriz
Begynder
Indlæg:5
Tilmeldt:9. sep 2011, 01:01

Re: COUNTIF function

Indlæg af wizzuriz » 9. sep 2011, 14:48

Hej,

Mange tak for hjælpen, men det er sådan at jeg skal til at arbejde med de tal jeg får ud, F.eks.

hvis der er 3 gange 3 points så = score 1
hvis der er 5 gange 5 points så = score 2
hvis der er 7 gange 7 points så = score 3

Det som bliver mit problem er at jeg skal jo så lave en array_slice() men hvis der er flere tal end dem som jeg skal bruge skal jeg jo kunne tælle hvor mange gange der står 3 men hvis der er et 1 tal og et 2 tal, så er der flere values end 3 og hvis der ikke er hvordan ved jeg så hvilken key jeg skal tælle?

giver det noget mening det jeg prøver at sige?

De beste hilsner.
Wizzuriz

Brugeravatar
ThomasI
Grundlægger
Grundlægger
Indlæg:1528
Tilmeldt:28. dec 2010, 10:49

Re: COUNTIF function

Indlæg af ThomasI » 9. sep 2011, 20:54

Hej igen

Jeg har lavet en funktion som jeg måske tror kan løse dit problem:

Kode: Vælg alt

<?php


$a1=array( 3, 3, 5, 5, 3, 7, 7);
$new_array=array_count_values($a1);

while (list ($key, $val) = each ($new_array)) {
    
if ($key == 5 ) {
    

        if ($val == 5 ) {

         echo " vi har en med 5 ens 5´er" ;
         
         $point = 2;

        }

  }
  
  if ($key == 3 ) {
    
        if ($val == 3 ) {

         echo " vi har en med 3 ens 3´er" ;
         
        $point = 1;

        }

  }
  
    if ($key == 7 ) {
    
        if ($val == 7 ) {

         echo " vi har en med 7 ens 7´er" ;
         
        $point = 3;

        }

  }
  
 
  
  
}


echo ". Der gives " . $point . " Point";

?>
Den den gør er at den først har en array på 7 datasets. Så kigger den herefter på hvor mange der er af hver data set. Derefter spørges der f.eks i den første: Hvis der er en værdi 5 i min array, og den findes 5 gange...så gives der 2 point.

De 2 point bliver så gemt i variablen $point, som du så kan bruge senere...afhængig af din kobination a 3,5 og 7 i array´en vil den give forskellige points ( prøv selv at ændre på det ). Hvis der slet ikke er noget der matcher, så sker der intet...

Hvis der skulle snige sig et 1 tal ind et sted i din array, så vil dette ikke gøre nogen forskel...det ene 1 tal vil bare ikke blive talt med nogen steder.

Håber du kan bruge den....

wizzuriz
Begynder
Indlæg:5
Tilmeldt:9. sep 2011, 01:01

Re: COUNTIF function

Indlæg af wizzuriz » 10. sep 2011, 02:24

Hej igen.

Det spiller max at du har lavet den, jeg må sige det er bare i orden.

Jeg kommer til at tænke på hvis nu man har over 5 i score alt 5,5,5,6,5 så får han ikke de points er der mulighed for at lave noget if $val == 5 Or $val >=5 ?

Det ville spille max hvis jeg kunne få det med også pakke det hele ind i en function.

så bliver det jo godt nok noget med function($array['value1'], $array['value2'], OSV ){

men det ville være fedt..

Ps. hvis der er noget jeg kan hjæpe med ud over at sige til mine venner som lejer med code at de skal se på jeres site så siger du bare til.. :)

Igen mange tak for hjælpen..

De bedste hilsner
Wizzuriz.

Brugeravatar
ThomasI
Grundlægger
Grundlægger
Indlæg:1528
Tilmeldt:28. dec 2010, 10:49

Re: COUNTIF function

Indlæg af ThomasI » 10. sep 2011, 11:59

Hej igen

ja du kan sagten bare sætte $val >=5 ind istedet, så man bare min. skal have en score på fem 5 taller før at man får 2 point.

Den bedste hjælp du kan give er at forblive aktiv på dette forum og måske hjælpe andre, da jeg ikke altid kan nå at svare på alle spørgsmål.

Du kan under hvert forum "subscribe" / "abonere" på dem, så du får en mail hver gang der er et nyt indlæg. Så hvis du f.eks er god til PHP kan du jo subscribe til det...det gør du ovre i venstre side lige under forum navnet...

wizzuriz
Begynder
Indlæg:5
Tilmeldt:9. sep 2011, 01:01

Re: COUNTIF function

Indlæg af wizzuriz » 15. sep 2011, 04:39

Hej Thomas,

Jeg har arbejdet lidt med det og dette er blivet min function nu.

Kode: Vælg alt

/-------League Calculation--
function league_calculation(){
 
    $email = mysql_real_escape_string($email);
   
    $um = $_SESSION['email'];
 
    $sql = "SELECT `test_1`, `test_2`, `test_3`, `test_4`, `test_5`, `test_6`, `test_7`, `test_8`, `test_9`, `test_10`, `test_11`, `test_12`, `test_13`, `test_14`, `test_15`
           FROM
           `test_score` INNER JOIN `users`
           ON `test_score`.`user_id` = `users`.`user_id`
           WHERE  `user_email` = '{$um}'";
   
    $result = mysql_query($sql);
 
    $row = mysql_fetch_array($result);
 
    $new_array = array_count_values($row);
 
        while (list ($key, $val) = each ($new_array)) {
       
            if  ($key >= 0 ) {if ($val >= 0 )  { $league_cal = "Beginner League";}}
            if  ($key >= 1 ) {if ($val >= 1 )  { $league_cal = "Copper League";}}
            if  ($key >= 3 ) {if ($val >= 3 )  { $league_cal = "Bronze League";}}    
            if  ($key >= 5 ) {if ($val >= 5 )  { $league_cal = "Silver League";}}
            if  ($key >= 7 ) {if ($val >= 7 )  { $league_cal = "Gold League";}}
            if  ($key >= 10) {if ($val >= 10)  { $league_cal = "Platinum League";}}    
            if  ($key >= 12) {if ($val >= 12)  { $league_cal = "Elite League";}}
            if  ($key >= 15) {if ($val >= 14)  { $league_cal = "Super Elite League";}}
 
        else echo mysql_error ();
        }
        // $league_cal er nu den tekst jeg vil vise plus den viser den bedste league score når der er opnået flere
        return $league_cal;
}
 
 
du må meget gerne sige til hvis du mener der er noget som kunne gøres bedre.

de bedste hilsner
Wizzuriz

Ps. Det med at hjælpe andre vil jeg meget gerne, skal bare lige selv lære lidt er næsten helt ny.. :) Men giver gerne en hånd når jeg kan..

Brugeravatar
ThomasI
Grundlægger
Grundlægger
Indlæg:1528
Tilmeldt:28. dec 2010, 10:49

Re: COUNTIF function

Indlæg af ThomasI » 15. sep 2011, 08:25

Det ser jo fint ud med god orden! - det er sådan det skal være :D

Super at du vil hjælpe lidt med! - vi kan altid bruge nye øjne og hjerner her på forum!

Fortsat god dag!

Besvar