Gå til innhold

[Løst] Vise antall like valuer i columns


Anbefalte innlegg

Hei!

Si nå at jeg driver å lager et system, på et vis, hvor jeg allerede har lagt inn 3 forskjellige varemerker. La oss si at disse 3 varemerkene er Cola, Fanta og Pepsi. I min MySQL-database ligger det nå 5 rader med Cola, 3 rader med Fanta og 2 med Pepsi.

 

Vanligvis om man skulle printet ut denne, ville det sette noe alà slik ut:

Cola

Fanta

Cola

Pepsi

Cola

Cola

Fanta

Cola

Fanta

Pepsi

-------------------------------------

Jeg ønsker heller at dette skal vises på denne måten:

 

Cola x5

Fanta x3

Pepsi x2

-------------------------------------

Så kommer spørsmålet om hvordan jeg gjør dette. Altså hvordan jeg kan få, ved hjelp av PHP og MySQL, scriptet til å skjønne at den skal telle hvor mange rader som har column "NAME", også vise disse til meg som f.eks. "x4".

 

Noen kloke hoder dere ute som har litt peiling på dette? Har forresten gjort en god del søk på kjære Google, men dessverre uten hell..

Lenke til kommentar
Videoannonse
Annonse

Takk for svar!

 

Så en god del av disse når jeg søkte i sted, men problemet er at jeg ikke helt skjønner hvordan jeg skal få lempet dette inn til en PHP-kode?

 

Forresten, er det mulig å fjerne column-navnene, altså "NAME & antall", slik at den viser kun "Cola 1"?

Lenke til kommentar

Nja, ikke helt det jeg er på ute etter, selv om jeg kanskje burde lese meg godt opp på dette :green: .

Uansett, så trenger jeg igrunn kun hjelp med denne delen, fordi det er her jeg står litt fast..

 

Har prøvd meg frem med følgende:

<?php
$query = "SELECT * FROM bottles WHERE type = cola";
$results = mysql_query($query);
$rows = mysql_num_rows($results); 

echo $rows ;
?>

Men denne ser ikke ut til å fungere i praksis, gitt.. :hmm:

Lenke til kommentar

Den éne siden i tutorialen jeg lenket til i forrige innlegg beskriver akkurat det du ønsker å få til, det er tilogmed en fungerende kodesnutt på bunnen av siden, også er det bare å putte inn SQL-spørrigen som cronbatch alpha beskrev over her.

 

Det virker lite produktivt om vi bare skal gi deg et ferdig script som kombinerer de to.

 

Og mysql_query() funksjonen skal du holde deg langt unna.

Endret av Thorbear
Lenke til kommentar

Jeg forstår. Leste meg smått opp, og prøvde ut denne:

<?php
$db = @new mysqli('localhost', 'root', '', 'database');
if (mysqli_connect_errno()) {
    die ('Could not open a mysql connection: '.mysqli_connect_error().'('.mysqli_connect_errno().')');
}
$sql = 'SELECT type, count(*) AS type
FROM bottles
GROUP BY type';
$result = $db->query($sql);
if (!$result) {
    die ('Something is wrong with the query: '.$db->error);
}
while ($row = $result->fetch_assoc()) {  // NULL is equivalent to false
    // $row is now the array with the values.
    echo ' '.$row['type'].' ';
}

echo ' '.$result->num_rows.' ';

unset($result); // you can delete the variable with unset() as it isn't needed anymore.
?>

Dette vises som følgende på skjermen min:

5 4 2

 

Følgende informasjon er i databasen:

cd94d3f4fff1b09dc0fc468926376540.png

Tror jeg skjønner sånn noen lunde hvordan dette fungerer nå. Eneste problemet er at jeg gjerne skulle ønsket å ha det som illustrert nedenfor.

e630ede5ab813005eda7d8c2e15bcff8.png

 

Om dere skjønner..? :)

 

 

EDIT: Problemet er ikke å sette det opp med bilder og slikt, problemet er å få splittet opp de 3 sifrene som viser hvor mange av hver type det er i databasen.. I og med at (etter hva jeg vil tro), de drives med følgende koder:

    echo ' '.$row['type'].' ';

echo ' '.$result->num_rows.' ';
Endret av Hans-Martin
Lenke til kommentar
<?php
$db = @new mysqli('localhost', 'root', '', 'database');
if (mysqli_connect_errno()) {
    die ('Could not open a mysql connection: '.mysqli_connect_error().'('.mysqli_connect_errno().')');
}
$sql = 'SELECT barcode, price, image, type, count(*) AS count
FROM bottles
GROUP BY type';
$result = $db->query($sql);
if (!$result) {
    die ('Something is wrong with the query: '.$db->error);
}
while ($row = $result->fetch_assoc()) {  // NULL is equivalent to false
    // $row is now the array with the values.
    echo $row['barcode'] . ' | ' . $row['type'] . ' | ' . $row['image'] . ' | ' . $row['count'];
}

echo ' '.$result->num_rows.' ';

unset($result); // you can delete the variable with unset() as it isn't needed anymore.
?>

Burde fungere bedre. Problemet var at du kun echo()-et "type", som var satt til antallet. Og du spurte ikke om de andre kolonnene i databasen.

Lenke til kommentar

Ikke noe problem.

 

Tok meg tid til å rydde over koden bittelitt, og gjøre den konsekvent ved bruk av objektet ($db) du har, og ikke "procedural style" :-)

<?php
    $db = @new mysqli('localhost', 'root', '', 'database');
    
    if ($db->connect_error) {
        die ('Could not open a mysql connection: ' . $db->connect_error . ' (' . $db->connect_errno . ')');
    }
    
    $sql = '
        SELECT barcode, price, image, type, count(*) AS count
        FROM bottles
        GROUP BY type
    ';
    
    $result = $db->query($sql);
    
    if (!$result) {
        die ('Something is wrong with the query: ' . $db->error);
    }
    
    while ($row = $result->fetch_assoc()) {  // NULL is equivalent to false
        echo $row['barcode'] . ' | ' . $row['type'] . ' | ' . $row['image'] . ' | ' . $row['count'] . "<br>\n";
    }

    echo 'Antall rader: ' . $result->num_rows;

    unset($result, $row, $sql); // you can delete the variable with unset() as it isn't needed anymore.
?>
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...