Telle rader i mysql

Diskusjoner som omhandler databaser og SQL postes her.

Telle rader i mysql

Innlegg moonunit » 03.03.2013 13:33

Hei,

jeg trenger litt hjelp med mysql og PHP.

Jeg har en satt opp en side for bryllupet vårt, men jeg trenger en måte å telle antall gjester i databasen.
Databasen heter bryllup og tabellen heter deltager, videre har jeg to rader som heter henholdvis gjest1 og gjest2
Parantes verdien angår hva radene heter i tabellen.

Registerings ID: 1 (ID)
Gjest 1: Ola (gjest1)
Gjest 2: Kari (gjest2)
Mobil: 22222222 (mobil)
E-post: kari@kari.no (epost)
Overnatting: Ja (overnatte)
Kommer: Kommer i bryllupet (kommer)
Kommentar: (comment)


Jeg trenger et php script som sjekker radene gjest1 og gjest2, teller de som har en verdi (NOT NULL) og samler de i en verdi jeg kan printe, type:

print "Det er nå $rows gjester som har registert seg";

Er så lenge siden at jeg drevet med dette at jeg ikke husker noen verdens ting.

Noen gode forslag?

Frank
moonunit
Nytt medlem
 
Innlegg: 4
Registrert: 03.03.2013 13:27

Re: Telle rader i mysql

Innlegg adeneo » 03.03.2013 14:27

Kode: Merk alt
$mysqli = new mysqli("localhost", "brukernavn", "passord", "db");

if ($result = $mysqli->query("SELECT * FROM tabell WHERE rad IS NOT NULL;")) {
    $row_cnt = $result->num_rows;

    printf("Det er nå %d gjester som har registert seg", $row_cnt);

    $result->close();
}
 


Du kan vel kanskje bruke count() til noe, men kjenner ikke noe særlig til det :

Kode: Merk alt
$mysqli->query("SELECT COUNT(*) FROM tabell")) 
adeneo
Medlem
 
Innlegg: 628
Registrert: 08.04.2011 21:09

Re: Telle rader i mysql

Innlegg moonunit » 03.03.2013 14:53

Hei adeneo!

Denne funksjonen teller jo bare hvor lange som har svart, altså hvor mange rows som er i tabellen totalt!
Svaret på dette er 24, slik som tabellen ser ut nå..

MEN på noen entries har begge gjestene svart, altså både gjest1 og gjest2, mens på andre har bare gjest1 svar og ikke gjest2

Med andre ord, denne funksjonen teller bare antall rows(rader) den teller faktisk ikke hvor mange entries det er av gjest1 og gjest2.

Frank
Sist endret av moonunit den 03.03.2013 15:11, endret 1 gang
moonunit
Nytt medlem
 
Innlegg: 4
Registrert: 03.03.2013 13:27

Re: Telle rader i mysql

Innlegg adeneo » 03.03.2013 15:10

Da må du nok først sjekke om begge radene er null da vel:

Kode: Merk alt
SELECT * FROM tabell WHERE gjest1 IS NOT NULL AND gjest2 IS NOT NULL; 


slik at du henter all rader hvor ikke begge er null, og så lage et script som teller 1 eller 2, basert på om en eller to personer kommer osv.

Kode: Merk alt
$count = 0;

while ($row = mysqli_fetch_array($result))  {
  if ( $row['gjest1'] ) $count++;
  if ( $row['gjest2'] ) $count++;
}
 


eller noe sånt?
adeneo
Medlem
 
Innlegg: 628
Registrert: 08.04.2011 21:09

Re: Telle rader i mysql

Innlegg moonunit » 03.03.2013 15:20

Kode: Merk alt
<?php


$count = 0;

    $mysqli = new mysqli("localhost", "xxx", "xxx", "xxx");

    $result = $mysqli->query("SELECT * FROM deltager WHERE gjest1 IS NOT NULL AND gjest2 IS NOT NULL;");


while ($row = mysqli_fetch_array($result))   {
  if ( $row['gjest1'] ) $count++;
if ( $row['gjest2'] ) $count++;

        $result->close();
     }

print $count;
?>


Resultat = 2

Men det er nok litt flere enn 2 gitt ;) Med andre ord kjører while løkka bare en gang.. ?
moonunit
Nytt medlem
 
Innlegg: 4
Registrert: 03.03.2013 13:27

Re: Telle rader i mysql

Innlegg moonunit » 03.03.2013 15:23

Never mind.. close statementet sto innenfor while løkka, flytta den, da stemmer det overens med det jeg har telt for hand ;)

Tusen hjertelig takker for hjelpen :)
Da satt den!

Frank
moonunit
Nytt medlem
 
Innlegg: 4
Registrert: 03.03.2013 13:27

Re: Telle rader i mysql

Innlegg Matsemann » 03.03.2013 16:23

Kode: Merk alt
SELECT count(gjest1) + count(gjest2) as gjester FROM deltager;


eller lignende bør også gå. Men nå har du jo en fungerende løsning, så trenger kanskje ikke styre med det.
Master i Datateknikk, NTNU
Brukerens avatar
Matsemann
Moderator
 
Innlegg: 2133
Registrert: 05.02.2005 19:13


Gå til SQL og databaser

Hvem er i forumet

Brukere som leser i dette forumet: Ingen registrerte brukere og 3 gjester