Gå til innhold

Telle rader for uleste meldinger til egen konto?


Anbefalte innlegg

Skrevet (endret)

Heisann :)

 

Holder på med et brukerpanel bare for å utvide mine erfaringer og lurer derfor på en sak her..

 

Tabellstrukturen ser slik ut:

id | fra | til | tid | dato | lest | melding | ip

 

 

Jeg vil ha ut et tall, altså nye uleste meldinger.

 

For å gjøre dette er "lest" feltet 1 når meldingen er lest og 0 når meldingen er ulest.

 

I tillegg kan det kun telle meldinger som er til den brukeren som er innlogget altså $_SESSION['brukernavn'] ..

 

Altså for å oppsumere litt, jeg skulle hatt et script som teller rader med lest="0" og til="$_SESSION['brukernavn']"..

 

Jeg vil ha ut et tall som det som står under "Du er logget inn som: goggen90" her, altså f.eks (3)

 

Noen som kan hjelpe? :)

Endret av goggen90
Videoannonse
Annonse
Skrevet

Hvor mye PHP eller SQL kan du egentlig?

Spørsmålet ditt er et fullblods SQL-spørsmål med unntak av utskriften.

SELECT COUNT(lest) as num_meldinger FROM Meldinger_tabell WHERE lest != 1 AND bruker_navn = $_SESSION['brukernavn']

 

Såh, les her

http://dev.mysql.com/doc/refman/4.1/en/index.html

 

Du burde undersøke litt på egenhånd først før du stiller spørsmål, dette er helt grunnleggende PHP og SQL, og burde ikke være vanskelig for en som har lest litt om hver av dem.

Skrevet

Sjønner ikke problemstillingen? det er jo bare å kjøre den som hvilken som helst annen sql spørring?

 

deretter er det jo bare å skrive ut resultatet.

Skrevet

Nazgul:

Problemet er ikke at jeg ikke vet hvordan jeg kobler til databasen og kan hente ut informasjon..

 

Jeg bruker mySQL sammen med PHP på hele hjemmesiden min..

 

Det som er problemet er hvordan jeg skal skrive ut

SELECT COUNT(lest) as num_meldinger FROM Meldinger_tabell WHERE lest != 1 AND bruker_navn = $_SESSION['brukernavn']

 

$link = mysql_connect ($mysql_host, $mysql_user, $mysql_pass) or die ("ERROR!");
if (mysql_select_db ($mysql_db)) {
mysql_query("SELECT COUNT(lest) as num_meldinger FROM Meldinger_tabell WHERE lest != 1 AND bruker_navn = $_SESSION['brukernavn']");

//hva skal jeg bruke nå?

 

Å gi 6 linker til manualen gjør det ikke akkuratt lettere å forstå ;)

Skrevet

Kanskje det har noe med at du ikke lærer noe hvis du får servert hele koden? "Svaret" står i de linkene, du må bare skjønne hva det er snakk om og hva de gjør ...

Skrevet

Du har brukt mysql_connect riktig.

I mysql_quqery tar du ikke vare på resultatet, og da er du allerede ute og kjøre.

Lagre resultatet fra mysql_query og bruk det på en av de ovenfornevnte funksjonene (4 siste). Disse 4 funksjonene gjør stort sett samme greia, nemlig å returnere et resultat fra databasen, men det er forskjell på hvordan de gjør det.

I starten kan mysql_fetch_array være enklest, men du burde ha kjennskap til de andre også.

 

 

Jeg er ferdig med å servere ferdig kode på trivielle ting som står så godt forklart i manualen.

Skrevet (endret)

$resultat = mysql_query ("SELECT COUNT(lest) as num_meldinger FROM Meldinger_tabell WHERE lest != 1 AND bruker_navn = $_SESSION['brukernavn']");
while ($row = mysql_fetch_array($resultat)) {

//hva skal jeg gjøre nå?

 

Det er slik jeg bruker når jeg har hentet ut info til nå..

 

Da har jeg nå brukt f.eks

$row['rad'] for å hente ut info fra raden "rad"..

 

Men, da har jeg ikke brukt "as num_meldinger" vist du sjønner, og dermed vet jeg ikke hva jeg skal skrive nå, om jeg skal bruke $row['num_meldinger'] eller noe annet?

 

Hadde vært mye bedre av med et fullverdig eksempel... :yes:

Endret av goggen90
Skrevet

Prøv.

Ta f.eks. var_dump() på $row, så ser du fort hvilke assosiasjoner som finnes i arrayet.

 

Dessuten returnerer den spørringen bare én rad, ettersom den summerer/teller.

Skrevet (endret)

Hmm

 

<?php

session_start();

include("db.php");
$link = mysql_connect ($mysql_host, $mysql_user, $mysql_pass) or die ("ERROR!");
if (mysql_select_db ($mysql_db)) {


$mysql_tabell  = "meldinger";
$brnavn  	= $_SESSION['brukernavn'];

$resultat = mysql_query("SELECT COUNT(lest) as meldinger FROM $mysql_tabell WHERE lest ='0' AND til = $brukernavn");
$row = mysql_fetch_array($resultat);

$meldinger = $row['meldinger'];

echo("$meldinger");
}

?>

 

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

Endret av goggen90
Skrevet

$brnavn   = $_SESSION['brukernavn'];

$resultat = mysql_query("SELECT COUNT(lest) as meldinger FROM $mysql_tabell WHERE lest ='0' AND til = $brukernavn");

Ser du en feil her? $brnavn brukes ikke, men det gjør $brukernavn.

 

Et array må vel uansett loopes gjennom selv om det bare skal returnere ett svar.

Gjør det på samme måte du som alltid gjør når du skal printe noe fra en tabell.

Skrevet (endret)
$brnavn   = $_SESSION['brukernavn'];

$resultat = mysql_query("SELECT COUNT(lest) as meldinger FROM $mysql_tabell WHERE lest ='0' AND til = $brukernavn");

Ser du en feil her? $brnavn brukes ikke, men det gjør $brukernavn.

 

Et array må vel uansett loopes gjennom selv om det bare skal returnere ett svar.

Gjør det på samme måte du som alltid gjør når du skal printe noe fra en tabell.

7041505[/snapback]

Neidu, veit du at en spørring alltid vil returnerer en enkelt rad trenger du virkelig ikke noe mer enn litt if-setninger for å håndtere det hele. Jeg vil si det er intet mindre enn stygt å plassere noe slikt inni en loop.

Endret av Ernie
Skrevet

Dersom du bare skal ha én verdi fra en array, hvorfor skal du egentlig loope?

 

goggen: du tester ikke for false på resultatet før du bruker det i mysql_fetch_array, dette er vist i eksemplene på http://no.php.net/mysql_query.

 

Ellers har du riktig, bortsett fra at du bruker feil variabel i spørringen (som Martin sier)

Skrevet

<?php

session_start();

include("db.php");
$link = mysql_connect ($mysql_host, $mysql_user, $mysql_pass) or die ("ERROR!");
if (mysql_select_db ($mysql_db)) {


$mysql_tabell  = "meldinger";
$brnavn  	= $_SESSION['brukernavn'];

$resultat = mysql_query("SELECT COUNT(lest) as meldinger FROM $mysql_tabell WHERE lest ='0' AND til = $brnavn");
if (!$resultat) {
  die('Feil spørring: ' . mysql_error());
}
$row = mysql_fetch_array($resultat);

$meldinger = $row['meldinger'];

echo("$meldinger");
}

?>

Feil spørring: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Skrevet
Strenger må i SQL legges inn i en ' ' (ev. " " eller noe annet hvis db-en bruker det).

7041762[/snapback]

Bare presisere at tall _ikke_ trenger anførselstegn.

(Du har gjort motsatt i koden din, goggen)

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...