Avatar billede udvikler Nybegynder
06. januar 2006 - 19:47 Der 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 :)
Avatar billede jaw Nybegynder
06. januar 2006 - 19:49 #1
$antal = mysql_result(mysql_query("SELECT COUNT (*) AS antal FROM kommentar WHERE valg = 'svar' AND forfatter = '$_SESSION[brugernavn]'"), 0) or die(mysql_error()));
Avatar billede udvikler Nybegynder
06. januar 2006 - 19:54 #2
unexpected ')'

:-)
Avatar billede jaw Nybegynder
06. januar 2006 - 19:56 #3
Du har jo rod i dine paranteser :)

$antal = mysql_result(mysql_query("SELECT COUNT (*) AS antal FROM kommentar WHERE valg = 'svar' AND forfatter = '$_SESSION[brugernavn]'"), 0) or die(mysql_error());
Avatar billede udvikler Nybegynder
06. januar 2006 - 19:57 #4
Hmm, endnu engang:

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

---------
Har selv rodet med det i 2 dage :S
Avatar billede arne_v Ekspert
06. januar 2006 - 19:59 #5
prøv lige og slet mellemrum mellem COUNT og (*)
Avatar billede jaw Nybegynder
06. januar 2006 - 20:00 #6
Du har et mellemrum mellem COUNT og (*)
Avatar billede udvikler Nybegynder
06. januar 2006 - 20:04 #7
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 ?
Avatar billede jaw Nybegynder
06. januar 2006 - 20:07 #8
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 :)
Avatar billede udvikler Nybegynder
06. januar 2006 - 20:09 #9
Når på den måde, jamen det kan jeg da selv ordne, skulle bare vide hvad fejlen betød :-)

Jeg vil gerne have dig (og hvis arne vil) til at lægge et svar.

Tak for hjælpen begge to !
Avatar billede udvikler Nybegynder
06. januar 2006 - 20:13 #10
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?
Avatar billede jaw Nybegynder
06. januar 2006 - 20:16 #11
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
Avatar billede udvikler Nybegynder
06. januar 2006 - 20:21 #12
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());

virkede ikke, det udskrev et 1 tal :-)
Avatar billede jaw Nybegynder
06. januar 2006 - 20:22 #13
Jeg tænkte på at udskrive:
echo "SELECT COUNT(*) AS antal FROM kommentar WHERE valg = 'svar' AND forfatter = '$_SESSION[brugernavn]'";

Men hvis du får 1, så er det jo godt nok, så burde du heller ikke få fejlmeddelelsen, som kun trickes hvis $antal > 1 ?!
Avatar billede udvikler Nybegynder
06. januar 2006 - 20:29 #14
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());

header("Location: laes.php?id=".$_POST['id']);
}

}
?>
Avatar billede jaw Nybegynder
06. januar 2006 - 20:49 #15
Er det den her:
echo "Du kan kun svare én gang pr. spørgsmål";
fejlmeddelelse du får lige gyldig hvilken værdi $antal har?
Avatar billede udvikler Nybegynder
06. januar 2006 - 20:59 #16
Ja
Avatar billede udvikler Nybegynder
06. januar 2006 - 21:14 #17
ENDELIG !

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";

}
}
}
?>


Læg et svar! :-)

Og forsat god aften.
Avatar billede jaw Nybegynder
09. januar 2006 - 13:44 #18
Den her havde jeg vist glemt igen, men et svar fra mig da :)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester