Avatar billede Slettet bruger
02. august 2006 - 12:26 Der er 47 kommentarer og
2 løsninger

mysql_query virker ikk?

Hej..
Hvor virker denne strang ikk?
mysql_query("INSERT INTO forum_kommentar (bruger, ip, bid, kommentar) VALUES ('$bruger', '$ip', '$id', '$kommentar')") or die(mysql_error());
..,,,,,,.........................................................
i får lige hele koden.:

<?php
      include('connect.php'); 
      $id = $_POST['id'];
      if($_POST['submit']){
                           
  $emnenavn = $_POST['emne_navn'];
  $bruger = $_POST['bruger'];
  $email = $_POST['email'];
  $kommentar = $_POST['kommentar'];
  $ip = getenv('REMOTE_ADDR');

mysql_query("INSERT INTO forum_kommentar (bruger, ip, bid, kommentar) VALUES ('$bruger', '$ip', '$id', '$kommentar')") or die(mysql_error());

      }


$result = mysql_query("SELECT * FROM forum_kommentar WHERE bid = '$id'") or die(mysql_error());
while ($vis = mysql_fetch_array($result)){

echo"<table border='1' width='45%' id='table1' height='187'>";
    echo"<tr>";
        echo"<td width='128'>Bruger: $vis[bruger] <br>Dato: $vis[dato] </td>";
        echo"<td>'$vis[kommentar]' </td>";
    echo"</tr>";

echo"</table>";
        }
    echo "$id";

        ?>
       

        <html>
        <head>
        </head>
        <body>
        <form action="<?php $_SERVER['php_self'] ?>" METHOD="POST">
        Dit navn:
        <input type="text" name="bruger"> <br>
        Din mail:
        <input type="text" name="email"> <br>
        <textarea name="kommentar" rows="9" cols="70"></textarea> <br>
        <input type="submit" name="submit" value="Tilføj din kommentar">
        </form>
        </body>
        </html>


OG fejlen er at jeg ikk får indsat nog i bid, altså $id bliver ikk sat i bid?.
Avatar billede michael_stim Ekspert
02. august 2006 - 12:36 #1
Hvor kommer $_POST['id'] fra?
Avatar billede mpj_86 Nybegynder
02. august 2006 - 12:39 #2
Prøv: $ip = $_SERVER['REMOTE_ADDR'];
Avatar billede mpj_86 Nybegynder
02. august 2006 - 12:40 #3
Ligemeget det var $id og ikke $ip =)
Avatar billede Slettet bruger
02. august 2006 - 12:43 #4
ja..
jeg har en oversigt.php til vært forum emne, og det der jeg hente $_POST['id'] fra.
Avatar billede Slettet bruger
02. august 2006 - 12:43 #5
vil i se den ?
Avatar billede nielle Nybegynder
02. august 2006 - 12:45 #6
Når databasen begynder at ovføre sig underligt så skyldes det i 9 ud af 10 tilfælde at din SQL-sætning indeholder noget andet end du tror. Derfor bør man som det første i debugningen altid forsøge at udskrive dem før at de forsøges udført:

$sql = "INSERT INTO forum_kommentar (bruger, ip, bid, kommentar) VALUES ('$bruger', '$ip', '$id', '$kommentar')";
echo "DEBUG: $sql<br>"
mysql_query() or die(mysql_error());
Avatar billede nielle Nybegynder
02. august 2006 - 12:46 #7
... prøver lige igen:


$sql = "INSERT INTO forum_kommentar (bruger, ip, bid, kommentar) VALUES ('$bruger', '$ip', '$id', '$kommentar')";
echo "DEBUG: $sql<br>";
mysql_query($sql) or die(mysql_error());
Avatar billede Slettet bruger
02. august 2006 - 12:49 #8
så får jeg fejl:


$sql = "INSERT INTO forum_kommentar (bruger, ip, bid, kommentar) VALUES ('$bruger', '$ip', '$id', '$kommentar')"; echo "DEBUG: $sql
"; mysql_query($sql) or die(mysql_error());
Avatar billede Slettet bruger
02. august 2006 - 12:51 #9
Ops det gik lidt for hurtigt...
Den udskriver :
DEBUG: INSERT INTO forum_kommentar (bruger, ip, bid, kommentar) VALUES ('', '', '', '')
Avatar billede mclemens Nybegynder
02. august 2006 - 12:51 #10
Mangler formen ikke
Dit emne: <input type="text" name="emne_navn"> <br>
Avatar billede mclemens Nybegynder
02. august 2006 - 12:52 #11
^ - ignorer den bruges jo ikke endenu :o)
Avatar billede Slettet bruger
02. august 2006 - 12:52 #12
Nej.. ved egentlig ikk hvorfr den lige kom med..?:S
Avatar billede mclemens Nybegynder
02. august 2006 - 12:54 #13
Din sql er sårbar (farlig håndtering af bruger input)
- check evt. http://dk.php.net/manual/da/function.mysql-real-escape-string.php
... eksempel nr 3 ...
Avatar billede mcgoat Nybegynder
02. august 2006 - 12:56 #14
<?php
      include('connect.php'); 
      echo "Debug1";
      $id = $_POST['id'];
      echo "Debug2 - id=" . $_POST['id'];
      if($_POST['submit']){
      echo "Debug3 - Submit er sat";                           
  $emnenavn = $_POST['emne_navn'];
      echo "Debug4 - Emne=".$emnenavn;
  $bruger = $_POST['bruger'];
      echo "Debug5 - bruger=".$bruger;
  $email = $_POST['email'];
      echo "Debug6 - email=".$email;
  $kommentar = $_POST['kommentar'];
      echo "Debug7 - kommentar=".$kommentar;
  $ip = getenv('REMOTE_ADDR');
      echo "Debug8 - ip=".$ip;

mysql_query("INSERT INTO forum_kommentar (bruger, ip, bid, kommentar) VALUES ('$bruger', '$ip', '$id', '$kommentar')") or die(mysql_error());
      echo "Debug9 - færdig";
      }

prøv med sådan en debug-fætter og se hvad der kommer ud af det
Avatar billede Slettet bruger
02. august 2006 - 12:58 #15
Men der er ikk nogen der kan sige mig hvorfor jeg ikk får indsat $id i bid?
Avatar billede nielle Nybegynder
02. august 2006 - 12:59 #16
Det er en rigtig god ide at omdøbe din submit-knap til at hedde noget andet end submit:

<input type="submit" name="nogetAndetEndSubmit" value="Tilføj din kommentar">

Afhængig af hvilken browser du bruger vil dette ellers resultere i en fejl eller ej.
Avatar billede mcgoat Nybegynder
02. august 2006 - 13:00 #17
prøv lige at køre den debug-fætter jeg lavede og se om den overhovede tager nogen af de data med der bliver sendt i formen
Avatar billede Slettet bruger
02. august 2006 - 13:00 #18
Debug1Debug2 - id=
Avatar billede Slettet bruger
02. august 2006 - 13:01 #19
den stopper efter id..
Avatar billede nielle Nybegynder
02. august 2006 - 13:01 #20
Så vidt jeg kan se er der jo ikke noget id-felt i din formular.
Avatar billede Slettet bruger
02. august 2006 - 13:02 #21
nej, men henter id fra url..
Avatar billede nielle Nybegynder
02. august 2006 - 13:03 #22
Hvis den henter fra et url skal du bruge $_GET[] i stedet for $_POST[].
Avatar billede Slettet bruger
02. august 2006 - 13:03 #23
eller.,, id bliver sat i oversigt.php hvor man kommer fra
Avatar billede Slettet bruger
02. august 2006 - 13:03 #24
okey.. prøver det
Avatar billede Slettet bruger
02. august 2006 - 13:05 #25
Det var det..:P..
Tak..

Niel
Avatar billede nielle Nybegynder
02. august 2006 - 13:05 #26
Det ser nu ikke ud til at dit id bliver sendt videre i systemet når du submitter din form.
Avatar billede Slettet bruger
02. august 2006 - 13:06 #27
Niele for point. Smid et svar
Avatar billede mclemens Nybegynder
02. august 2006 - 13:06 #28
<form action="<?php $_SERVER['php_self'] ?>" METHOD="POST">
^ - husk at rette action her så action bliver php_self?id=ide-en
Avatar billede Slettet bruger
02. august 2006 - 13:07 #29
Men det virker, jeg får indsat det rigtige i bid, og den henter kun når bid = $id
Avatar billede nielle Nybegynder
02. august 2006 - 13:07 #30
... eller brug et hidden-felt:

<form action="<?php $_SERVER['php_self'] ?>" METHOD="POST">
<input type="hidden" name="id" value="<?=$_GET["id"]?>">
Avatar billede Slettet bruger
02. august 2006 - 13:08 #31
Smid e niele
Avatar billede Slettet bruger
02. august 2006 - 13:10 #32
Eller har faktisk et problem til...
HAr lige koedet noget mere på det, det er en table men den bliver ikk udskrevet?

Koden ser såen her ud(det er den table der henter fra forum_emne):
<?php
      include('connect.php'); 
      $id = $_GET['id'];
      if($_POST['submit']){
                           

  $bruger = $_POST['bruger'];
  $email = $_POST['email'];
  $kommentar = $_POST['kommentar'];
  $ip = getenv('REMOTE_ADDR');

mysql_query("INSERT INTO forum_kommentar (bruger, ip, bid, kommentar) VALUES ('$bruger', '$ip', '$id', '$kommentar')") or die(mysql_error());

      }

$aemne = mysql_query("SELECT * FROM forum_emne WHERE id = '$id'") or die(mysql_error());
while ($emne = mysql_fetch_array($aemne)){

echo"<table border='1' width='45%' id='table1' height='187'>";
    echo"<tr>";
        echo"<td width='128'>Bruger: $emne[bruger] <br>Dato: --- </td>";
        echo"<td>'$emne[emne_navn]' </td>";
    echo"</tr>";

echo"</table>";
        }
       
       

$result = mysql_query("SELECT * FROM forum_kommentar WHERE bid = '$id'") or die(mysql_error());
while ($vis = mysql_fetch_array($result)){

echo"<table border='1' width='45%' id='table1' height='187'>";
    echo"<tr>";
        echo"<td width='128'>Bruger: $vis[bruger] <br>Dato: $vis[dato] </td>";
        echo"<td>$vis[kommentar] </td>";
    echo"</tr>";

echo"</table>";
        }


        ?>


        <html>
        <head>
        </head>
        <body>
        <form action="<?php $_SERVER['php_self'] ?>" METHOD="POST">
        Dit navn:
        <input type="text" name="bruger"> <br>
        Din mail:
        <input type="text" name="email"> <br>
        <textarea name="kommentar" rows="9" cols="70"></textarea> <br>
        <input type="submit" name="submit" value="Tilføj din kommentar">
        </form>
        </body>
        </html>
Avatar billede nielle Nybegynder
02. august 2006 - 13:10 #33
Skal vi ikke bare alle sammen dele på denne her?

Det er svært at bedømme hvem som har biddreget mest. :^)
Avatar billede mclemens Nybegynder
02. august 2006 - 13:14 #34
Mon ikke den skal outputte i body istedet?
Avatar billede Slettet bruger
02. august 2006 - 13:15 #35
et sidste spørgsmål fik jeg ordnet, (ved ikk lige hvordan)
Jo, det var bare dig der kom med det "endlige svar".. men hvordan deler jeg dem?
Avatar billede mclemens Nybegynder
02. august 2006 - 13:16 #36
Måske?


<?php
      include('connect.php');
?>

        <html>
        <head>
        </head>
        <body>

<?php
      $id = $_GET['id'];
      if($_POST['submit']){
                         

  $bruger = $_POST['bruger'];
  $email = $_POST['email'];
  $kommentar = $_POST['kommentar'];
  $ip = getenv('REMOTE_ADDR');

mysql_query("INSERT INTO forum_kommentar (bruger, ip, bid, kommentar) VALUES ('$bruger', '$ip', '$id', '$kommentar')") or die(mysql_error());

      }

$aemne = mysql_query("SELECT * FROM forum_emne WHERE id = '$id'") or die(mysql_error());
while ($emne = mysql_fetch_array($aemne)){

echo"<table border='1' width='45%' id='table1' height='187'>";
    echo"<tr>";
        echo"<td width='128'>Bruger: $emne[bruger] <br>Dato: --- </td>";
        echo"<td>'$emne[emne_navn]' </td>";
    echo"</tr>";

echo"</table>";
        }
     
     

$result = mysql_query("SELECT * FROM forum_kommentar WHERE bid = '$id'") or die(mysql_error());
while ($vis = mysql_fetch_array($result)){

echo"<table border='1' width='45%' id='table1' height='187'>";
    echo"<tr>";
        echo"<td width='128'>Bruger: $vis[bruger] <br>Dato: $vis[dato] </td>";
        echo"<td>$vis[kommentar] </td>";
    echo"</tr>";

echo"</table>";
        }


        ?>



        <form action="<?php $_SERVER['php_self'] ?>" METHOD="POST">
        Dit navn:
        <input type="text" name="bruger"> <br>
        Din mail:
        <input type="text" name="email"> <br>
        <textarea name="kommentar" rows="9" cols="70"></textarea> <br>
        <input type="submit" name="submit" value="Tilføj din kommentar">
        </form>
        </body>
        </html>
Avatar billede nielle Nybegynder
02. august 2006 - 13:16 #37
Med den viste kode vil id-feltet atid være tomt når formen submittes. Du skal enten bruge 02/08-2006 13:06:27 eller 02/08-2006 13:07:39 for at ændre på dette.
Avatar billede mclemens Nybegynder
02. august 2006 - 13:18 #38
Nåh joh :o)
        <form action="<?php $_SERVER['php_self'] ?>" METHOD="POST">
->
        <form action="<?php echo $_SERVER['php_self']."?id=".$id; ?>" METHOD="POST">
Avatar billede Slettet bruger
02. august 2006 - 13:32 #39
Jeg skal ikk have mere hjælp, til det nu, jeg hr fået rettet de fejl jeg havde...
Avatar billede nielle Nybegynder
02. august 2006 - 13:34 #40
Skal vi som sagt ikke dele på denne her?
Avatar billede Slettet bruger
02. august 2006 - 13:44 #41
Jah.
Baa jeg skal hva jeg skal gøre--
Avatar billede mclemens Nybegynder
02. august 2006 - 13:51 #42
Ingenting til mig
Avatar billede mclemens Nybegynder
02. august 2006 - 13:59 #43
... Jeg er på vej ud af døren om lidt og har ikke en pc med php test server startet op - men når jeg kigger på scriptet kan jeg se at der ikke sker spor validering på om man har lov til at poste ... Kør med sessions og når man logger ind så sæt sessiono loginid til brugerens id og fjern det når man logger ud - og så når meddellelser postes validerer du på om session login id er sat - hvis den er postes der med session loginid  værdien istedet for get overførsel af session værdien...

- og kig evt. på 02/08-2006 12:54:47

Årsag:

1. En "idiot" kan poste hvad som helst og udgive sig for
at være hvem som helst ... men du har dog ip-adressen så...

2. Din sql håndtering af variabler er hullet da du benytter post/get
variabler direkte ... hvis der så skulle være en "idiot" der ville
rette sin ip-adresse kunne han rette den til hvilken som helst...

( ^ - idiot i ovenstående heviser til en person der foretager
sig noget der er tåbeligt, ulovligt og meget irriterende )

- Jeg er ikke så langt inde i det hele, men du mangler beskyttelse ...
Avatar billede mclemens Nybegynder
02. august 2006 - 14:12 #44
Glemte lige: Med venlig hilsen, Clemme :o)
Avatar billede jaiz Nybegynder
02. august 2006 - 14:15 #45
Hvor virker denne strang ikk?
mysql_query("INSERT INTO forum_kommentar (bruger, ip, bid, kommentar) VALUES ('$bruger', '$ip', '$id', '$kommentar')") or die(mysql_error());

------------------------
du skal bruge ` tegn er ret sikker på det dit problem...
altså ret bruger til `bruger`, osv.
Avatar billede michael_stim Ekspert
02. august 2006 - 14:46 #46
jaiz->??? ` ` Er kun nødvendige når det er et reserveret ord.
Avatar billede mclemens Nybegynder
02. august 2006 - 16:57 #47
Nielle, mon ikke du skulle lægge svaret?
Avatar billede mclemens Nybegynder
02. august 2006 - 16:59 #48
jaiz se evt.
02/08-2006 13:05:42
02/08-2006 13:06:14
Avatar billede nielle Nybegynder
02. august 2006 - 19:34 #49
Et svar :^)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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