nree Skrevet 9. oktober 2006 Skrevet 9. oktober 2006 (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 9. oktober 2006 av goggen90
Peter Skrevet 9. oktober 2006 Skrevet 9. oktober 2006 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.
nree Skrevet 9. oktober 2006 Forfatter Skrevet 9. oktober 2006 (endret) Hehe, man kan ikke lære alt? Hvordan bruker jeg denne sammen med PHP? Endret 9. oktober 2006 av goggen90
Kellendil Skrevet 9. oktober 2006 Skrevet 9. oktober 2006 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.
nree Skrevet 9. oktober 2006 Forfatter Skrevet 9. oktober 2006 Kellendil: akkuratt det jeg spørr om hvordan kodinga skal være..
Peter Skrevet 9. oktober 2006 Skrevet 9. oktober 2006 http://no2.php.net/mysql_connect http://no2.php.net/mysql_query http://no2.php.net/manual/en/function.mysql-fetch-array.php eller http://no2.php.net/manual/en/function.mysql-fetch-row.php eller http://no2.php.net/manual/en/function.mysql-fetch-assoc.php eller http://no2.php.net/manual/en/function.mysql-result.php
nree Skrevet 10. oktober 2006 Forfatter Skrevet 10. oktober 2006 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å
Ernie Skrevet 10. oktober 2006 Skrevet 10. oktober 2006 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 ...
Peter Skrevet 10. oktober 2006 Skrevet 10. oktober 2006 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.
nree Skrevet 10. oktober 2006 Forfatter Skrevet 10. oktober 2006 (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... Endret 10. oktober 2006 av goggen90
Peter Skrevet 10. oktober 2006 Skrevet 10. oktober 2006 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.
nree Skrevet 10. oktober 2006 Forfatter Skrevet 10. oktober 2006 (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 10. oktober 2006 av goggen90
Martin A. Skrevet 10. oktober 2006 Skrevet 10. oktober 2006 $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.
Ernie Skrevet 10. oktober 2006 Skrevet 10. oktober 2006 (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 10. oktober 2006 av Ernie
Peter Skrevet 10. oktober 2006 Skrevet 10. oktober 2006 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)
nree Skrevet 10. oktober 2006 Forfatter Skrevet 10. oktober 2006 <?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
Ernie Skrevet 10. oktober 2006 Skrevet 10. oktober 2006 Strenger må i SQL legges inn i en ' ' (ev. " " eller noe annet hvis db-en bruker det).
Peter Skrevet 10. oktober 2006 Skrevet 10. oktober 2006 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)
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå