Avatar billede xsix Nybegynder
25. september 2007 - 23:09 Der er 24 kommentarer og
1 løsning

Post data ind i databasen

Hej Eksperter.

Er igang med at lave en slags opslagstavle til mig og mine staff members.

Men kan ikke rigtig få det til at virke :S Nogen der kan se hvad der er galt? Får den her error:


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



og har den her kode:

<?php
            require_once('connect.php');
$playername = mysql_query("SELECT accountname FROM players WHERE id=$_SESSION[user_id]") or die(mysql_error());
$playername_data = mysql_fetch_array($playername);
    if (isset($_POST['submitBtn'])) {
        $topic    = (isset($_POST['topic'])) ? addslashes(htmlentities($_POST['topic'])) : '' ;
        $message  = (isset($_POST['message'])) ? addslashes(htmlentities($_POST['message'])) : '' ;
        $writer  = $playername_data;
        $time  = now();

            $sql = "INSERT INTO staffmsg (topic,message,writer,time) VALUES (";
            $sql .= "'".$topic."','".$message."','".$writer."','".$time."')";
            mysql_query($sql) or die(mysql_error());

    }
    else {

?>

  </font>
       
 
  <form action="staffmsg2.php" method="post" name="staffmsg">
    <table>
      <tr><th>Topic:</th><td><input name="topic" /></td></tr>
      <tr><th>Message:</th><td><textarea name="message" cols="30" rows="3"></textarea></td></tr>
      <td><input type="submit" name="submitBtn" value="Submit!"/></td>
    </table> 
</form>
<?php } ?>
Avatar billede olebole Juniormester
25. september 2007 - 23:12 #1
<ole>

Prøv at back-tick'e dine feltnavne:
            $sql = "INSERT INTO staffmsg (`topic`,`message`,`writer`,`time`) VALUES (";
            $sql .= "'".$topic."','".$message."','".$writer."','".$time."')";

/mvh
</bole>
Avatar billede olebole Juniormester
25. september 2007 - 23:15 #2
Hvis det ikke virker, så prøv lige at skrive:
    mysql_query($sql) or die($sql."<br>\r\n".mysql_error());

- og fortæl her, hvad der bliver udskrevet  :)
Avatar billede yHec Novice
25. september 2007 - 23:18 #3
Det her går ikke:
$playername = mysql_query("SELECT accountname FROM players WHERE id=$_SESSION[user_id]") or die(mysql_error());

Skal være enten;
$playername = mysql_query("SELECT accountname FROM players WHERE id={$_SESSION[user_id]}") or die(mysql_error());
eller:
$playername = mysql_query("SELECT accountname FROM players WHERE id=".$_SESSION[user_id]) or die(mysql_error());

Det ville nok også hjælpe en del!

Også ville jeg persoligt skrive din insert ud i en linje:
$sql = "INSERT INTO staffmsg (topic,message,writer,time) VALUES("'$topic','$message','$writer','$time')";
Avatar billede xsix Nybegynder
25. september 2007 - 23:19 #4
Den siger stadig bare:
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

Og koden ser således ud nu:

<?php
            require_once('connect.php');
$playername = mysql_query("SELECT accountname FROM players WHERE id=$_SESSION[user_id]") or die(mysql_error());
$playername_data = mysql_fetch_array($playername);
    if (isset($_POST['submitBtn'])) {
        $topic    = (isset($_POST['topic'])) ? addslashes(htmlentities($_POST['topic'])) : '' ;
        $message  = (isset($_POST['message'])) ? addslashes(htmlentities($_POST['message'])) : '' ;
        $writer  = $playername_data;
        $time  = now();

  $sql = "INSERT INTO staffmsg (`topic`,`message`,`writer`,`time`) VALUES (";
            $sql .= "'".$topic."','".$message."','".$writer."','".$time."')";
mysql_query($sql) or die($sql."<br>\r\n".mysql_error());
    }
    else {

?>

  </font>
       
 
  <form action="staffmsg2.php" method="post" name="staffmsg">
    <table>
      <tr><th>Topic:</th><td><input name="topic" /></td></tr>
      <tr><th>Message:</th><td><textarea name="message" cols="30" rows="3"></textarea></td></tr>
      <td><input type="submit" name="submitBtn" value="Submit!"/></td>
    </table> 
</form>
<?php } ?>
Avatar billede erikjacobsen Ekspert
25. september 2007 - 23:20 #5
Din $_SESSION[user_id] er tom
Avatar billede xsix Nybegynder
25. september 2007 - 23:23 #6
Arg doh!
Havde fjernet session start, for at være sikker på der ikke kom nogle fejl :P
Tak for det, post et svar erikjacobsen :)
Avatar billede erikjacobsen Ekspert
25. september 2007 - 23:25 #7
Jeg samler slet ikke på bananer, tak. Prøv at lytte til Ole - skriv SQL-ud, hvis der er fejl, så du kan se det. I hvert fald mens du udvikler på det.
Avatar billede xsix Nybegynder
25. september 2007 - 23:27 #8
Okay, tak for det. Gjorde jeg skam også, men den kom ikke ud med noget udover det der allerede var.
Hmm nu er der problemer med min time() funktion, hvad er det jeg skal sætte ind i stedet for den for at inputs passer til min datetime datatype i databasen? :)
Avatar billede olebole Juniormester
25. september 2007 - 23:33 #9
Jo, det er 278% sikkert, du får skrevet SQL-sætningen ud med min kode ... men det kræver naturligvis, du husker at uploade scriptet  ;o)

Hvis fejlen bliver skrevet ud, _kan_ det med min kode ikke lade sig gøre, at SQL-sætningen ikke også bliver det  :)
Avatar billede erikjacobsen Ekspert
25. september 2007 - 23:34 #10
En datetime kan være på formen '2007-09-25 23:35:22"
Avatar billede erikjacobsen Ekspert
25. september 2007 - 23:35 #11
Hvis du tror på at SQL-serveren kan holde styr på tiden kan du bare bruge:


  $sql = "INSERT INTO staffmsg (`topic`,`message`,`writer`,`time`) VALUES (";
            $sql .= "'".$topic."','".$message."','".$writer."',now())";
Avatar billede xsix Nybegynder
25. september 2007 - 23:36 #12
olebole: Er nok bare mig der fik gjort noget forkert så :P

erikjacobsen: Ja, men tænkte mere på, hvad skal jeg bruge i PHP for at få noget sat ind i min datetime database? Lige nu bruger jeg "time()", men der skriver den bare '0000-00-00 00:00:00'.
Avatar billede erikjacobsen Ekspert
25. september 2007 - 23:40 #13
Selvfølgelig, hvis det skal ske i PHP, så kan du bruge http://php.net/date  -  hvorfor er en mysql-løsning ikke nok?
Avatar billede xsix Nybegynder
25. september 2007 - 23:40 #14
Arh der var du lidt for hurtigt for mig :P men det virkede, tak for det :)
Nu er det kun writer der giver navnet "array", men jeg kigger lige på det, så finder jeg nok en løsning.
Er der ikke nogen der vil have mine point? :)
Avatar billede olebole Juniormester
25. september 2007 - 23:42 #15
$playername_data indeholder jo hele rækken af felter i et array  ;o)

$writer  = $playername_data["ET_FELT_NAVN"];
Avatar billede xsix Nybegynder
25. september 2007 - 23:44 #16
hehe ja jeg fandt ud af det før jeg kom her ud og igen :)
        $writer  = $playername_data[accountname];

Men enten erikjacobsen eller olebole, vil i ikke lægge et svar for point? Jeg ville ikke ha' det godt med at beholde dem når i nu har hjulpet mig med det hele :)
Avatar billede erikjacobsen Ekspert
25. september 2007 - 23:45 #17
Kan du ikke gætte hvad feltet hedder, Ole?
Avatar billede erikjacobsen Ekspert
25. september 2007 - 23:45 #18
Det hedder aldrig

    $writer  = $playername_data[accountname];

men altid

    $writer  = $playername_data['accountname'];

Det er muligt den øverste udgave sommetider virker, men hvorfor ikke vælge den nederste, der altid virker.
Avatar billede xsix Nybegynder
25. september 2007 - 23:52 #19
Det er rettet, takker :)
Avatar billede olebole Juniormester
26. september 2007 - 00:00 #20
Erik >> Du har helt ret ... der var ikke mange felter at vælge imellem! Sidder lige og overvejer, om min kodeblindhed evt. kan skyldes, mit F-system er blever forurenet med blod?  ;D
Avatar billede xsix Nybegynder
26. september 2007 - 23:22 #21
//afsluttet
Avatar billede erikjacobsen Ekspert
26. september 2007 - 23:25 #22
Eller også er du bare ved at blive gammel, Ole. Det sker for de fleste.

;)
Avatar billede olebole Juniormester
26. september 2007 - 23:36 #23
Det kan ikke være dét! Den undskyldning har jeg allerede brugt ... og man bliver vel kun gammel én gang i livet.  :)
Avatar billede olebole Juniormester
26. september 2007 - 23:36 #24
- arhhh ... ældre, måske  ;o)
Avatar billede olebole Juniormester
26. september 2007 - 23:37 #25
- eller senior? Der er er godtnok mange muligheder i denne ende ...!  ;D
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