Avatar billede blackunicorn Nybegynder
10. juni 2015 - 19:45 Der er 8 kommentarer og
1 løsning

Vis resultatet af count(*)

Jeg har en sqli database der indeholder mærke og model på en lang række biler.

Da det skal bruges til statistisk formål, kunne jeg godt tænke mig at tælle hvor mange forekomster der er af de forskellige mærker.

$alfa = SELECT COUNT(*) AS "a" FROM statistik WHERE make=2;

Mine spørgsmål er

1. Skal man have en linie for hvert mærke, eller kan det gøres mere simpelt ?

2. Hvordan får jeg vist resultatet af count ?
Avatar billede cht22 Professor
10. juni 2015 - 21:29 #1
1. Du kan bruge GROUP BY:

$alfa = SELECT make,COUNT(*) AS "a" FROM statistik GROUP BY make

2. Visning af databaseindhold:

<?php
$con = mysql_connect("$db_host","$db_user","$db_pass");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("$check_database_name", $con);

$parentid = 0;

while($row = mysql_fetch_array($alfa))
  {

  $count = $row['a'];

echo $count . " - " . $row['make'] . "<br>"

}

mysql_close($con);
?>
Avatar billede blackunicorn Nybegynder
10. juni 2015 - 21:48 #2
Får denne fejl

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in statistic.php on line 21

$alfa = "SELECT make,COUNT(*) AS \"a\" FROM statistik GROUP BY make";

$db_host = "local";
$database_name = "my_db";
$db_user = "user";
$db_pass = "pass";

$con = mysql_connect("$db_host","$db_user","$db_pass");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("$check_database_name", $con);

$parentid = 0;

while($row = mysql_fetch_array($alfa))
  {

  $count = $row['a'];

echo $count . " - " . $row['make'] . "<br>";

}

mysql_close($con);
?>
Avatar billede cht22 Professor
10. juni 2015 - 21:54 #3
Du mangler at definere databasenavn eller omdøbe variablen.

$check_database_name = "my_db";

Jeg ved ikke om det er det der er fejlen, du kan lige prøve at se om det virker.
Avatar billede cht22 Professor
10. juni 2015 - 21:58 #4
Jeg ved ikke hvorfor du sætter  \" omkring a det plejer der ikke være. Så der skal stå:

$alfa = "SELECT make,COUNT(*) AS a FROM statistik GROUP BY make";
Avatar billede blackunicorn Nybegynder
10. juni 2015 - 22:12 #5
<?php

$alfa = "SELECT make, COUNT(*) AS a FROM statistik GROUP BY make";


$db_host = "mysql1.gigahost.dk"; // Your host name
$database_name = "stengaard_cars";      // Your database name
$db_user = "stengaard";            // Your login userid
$db_pass = "SpUVumu7eR";            // Your password

$con = mysql_connect("$db_host","$db_user","$db_pass");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("$check_database_name", $con);

$parentid = 0;

while($row = mysql_fetch_array($alfa))
  {

  $count = $row['a'];

echo $count . " - " . $row['make'] . "<br>";

}

mysql_close($con);
?>
Avatar billede blackunicorn Nybegynder
10. juni 2015 - 22:16 #6
Ved godt at db_user og db_pass er udfyldt, men det er random data
Avatar billede cht22 Professor
10. juni 2015 - 22:22 #7
Du har ikke rettet $check_database_name.
Avatar billede michael_stim Ekspert
12. juni 2015 - 15:11 #8
Så er det ikke så smart at bruge det gamle mysql API. Kig hellere på MySQLi eller PDO.
Avatar billede blackunicorn Nybegynder
16. juni 2015 - 09:47 #9
Så fandt jeg en løsning der virker, og hvor jeg bruger MySQLi.

Dit forslag hjalp mig godt på vej, så tak for hjælpen cht22 :)


$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$parentid = 0;

$alfa = "SELECT make, model, COUNT(*) AS a FROM statistik GROUP BY make";

$result = $conn->query($alfa);

if ($result->num_rows > 0) {

    while($row = $result->fetch_assoc()) {

    $count = $row['a'];

    echo $count . " - " . $row['make'] . " - " . $row['model'] . "<br>";
    }
}
$conn->close();
?>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester