06. januar 2006 - 19:47Der er
17 kommentarer og 1 løsning
hvorfor virker denne mysql count kode ikke
$antal = mysql_result(mysql_query("SELECT COUNT (*) AS antal FROM kommentar WHERE valg = 'svar' AND forfatter = '$_SESSION[brugernavn]'") or die(mysql_error()));
if($antal > 1){ echo "Du kan kun svare én gang pr. spørgsmål"; } else { mysql_query("INSERT INTO kommentar (valg, besked, parent, dato, forfatter) VALUES ('$valg', '$besked', '$parent', '$dato', '$forfatter')"); // mysql_query("INSERT INTO kommentar VALUES (''$valg','$besked','$parent', '$dato', '$forfatter'')") or die(mysql_error()); }
---------- Fejl:
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 '*) AS antal FROM kommentar WHERE valg = 'svar' AND forfatter = 'jakob'' at line 1
grunden til at der står jakob i fejlen er at det var den bruger jeg forsøgte at teste det hele med :)
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
$antal = mysql_result(mysql_query("SELECT COUNT (*) AS antal FROM kommentar WHERE valg = 'svar' AND forfatter = '$_SESSION[brugernavn]'"), 0) or die(mysql_error()));
$antal = mysql_result(mysql_query("SELECT COUNT (*) AS antal FROM kommentar WHERE valg = 'svar' AND forfatter = '$_SESSION[brugernavn]'"), 0) or die(mysql_error());
Warning: mysql_result(): supplied argument is not a valid MySQL result resource in c:\wamp\www\mine filer\post.php on line 20 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 '*) AS antal FROM kommentar WHERE valg = 'svar' AND forfatter = 'jakob'' at line 1
Nu virker det delvist, jeg for udskrevet fejl meddelelsen, hvis jeg prøvet at oprette 2 svar, men jeg for også denne:
Warning: Cannot modify header information - headers already sent by (output started at c:\wamp\www\mine filer\post.php:23) in c:\wamp\www\mine filer\post.php on line 30
og linie 30 er en header, som senere brugeren til en side.. Hvordan kan det lige fixes ?
Du kan ikke have html-output før brugeren sendes videre (eller før headere generelt). Det bør klares ved at sende ham videre, før du viser ham fejlkoden f.eks.
Det kan også løses ved at smide ob_start(); i toppen og ob_end_flush(); i bunden - men det er ikke nogen synderlig pæn løsning.
Og så er det egentlig et php-spørgsmål og har intet med dit sql udtræk at gøre :)
forresten, det virker ikke, jeg har kun testet den den ene vej, dvs hvis jeg lagde 2 svar skulle den skrive en fejl meddelelse hvilket den gjorde, men den udskriver også en fejl meddelelse hvis det er en kommentar?
Så må du jo til at fejlsøge, og et par muligheder er: - udskriv dit udtræk og tjek om alle variabler indeholder det du tror de gør - udskriv $antal og se hvad den giver dig og om det passer
jeg har udskrevet alle variabler og fundet ud af at de passer, men jeg ved ikke lige hvordan sådan et sql udtræk udskrives ?
echo mysql_result(mysql_query("SELECT COUNT(*) AS antal FROM kommentar WHERE valg = 'svar' AND forfatter = '$_SESSION[brugernavn]'"), 0) or die(mysql_error());
Har også lige udskrevet den der SELECT du skrev, den var også positiv. Forstår dog ikke hvorfor jeg for en fejl meddelelse lige meget hvad :S
Hele dokumentet:
-----------------------------------
<?php session_start();
include "mysql.php"; if(isset($_POST['submit'])) {
if(empty($_SESSION['brugernavn'])) { echo "Du er ikke logget ind, og kan derfor ikke kommentere indlæg. Gå til login side <a href=\"login.php\">her.</a>"; exit; } if($_POST['besked'] == "") { } $valg = $_POST['valg']; $besked = nl2br(htmlentities(addslashes($_POST['besked']))); $parent = $_POST['id']; $forfatter = $_SESSION['brugernavn']; $dato = date('d/m/Y H:i:s');
$antal = mysql_result(mysql_query("SELECT COUNT(*) AS antal FROM kommentar WHERE valg = 'svar' AND forfatter = '$_SESSION[brugernavn]'"), 0) or die(mysql_error());
if($antal > 1){ echo "Du kan kun svare én gang pr. spørgsmål"; } else { mysql_query("INSERT INTO kommentar (valg, besked, parent, dato, forfatter) VALUES ('$valg', '$besked', '$parent', '$dato', '$forfatter')"); // mysql_query("INSERT INTO kommentar VALUES (''$valg','$besked','$parent', '$dato', '$forfatter'')") or die(mysql_error());
jeg prøvede og prøvede, og til sidst lønnede det sig, jeg fandt selv ud af det!
Her er løsningen jeg kom frem til:
<?php session_start();
include "mysql.php"; if(isset($_POST['submit'])) {
if(empty($_SESSION['brugernavn'])) { echo "Du er ikke logget ind, og kan derfor ikke kommentere indlæg. Gå til login side <a href=\"login.php\">her.</a>"; exit; } if($_POST['besked'] == "") { } $valg = $_POST['valg']; $besked = nl2br(htmlentities(addslashes($_POST['besked']))); $parent = $_POST['id']; $forfatter = $_SESSION['brugernavn']; $dato = date('d/m/Y H:i:s');
if ($valg == kommentar) { mysql_query("INSERT INTO kommentar (valg, besked, parent, dato, forfatter) VALUES ('$valg', '$besked', '$parent', '$dato', '$forfatter')"); header("Location: laes.php?id=".$_POST['id']); } if ($valg == svar) {
$antal = mysql_result(mysql_query("SELECT COUNT(*) AS antal FROM kommentar WHERE valg = 'svar' AND forfatter = '$_SESSION[brugernavn]' AND parent = '$parent'"), 0) or die(mysql_error());
if($antal < 1){ mysql_query("INSERT INTO kommentar (valg, besked, parent, dato, forfatter) VALUES ('$valg', '$besked', '$parent', '$dato', '$forfatter')"); header("Location: laes.php?id=".$_POST['id']); } else { echo "Du kan kun svare én gang pr. spørgsmål";
Den her havde jeg vist glemt igen, men et svar fra mig da :)
Synes godt om
Ny brugerNybegynder
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.