Ankündigung

Einklappen
Keine Ankündigung bisher.

Newseintrag in Datenbank bearbeiten

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Newseintrag in Datenbank bearbeiten

    Heyho,
    ich bin gerade dabei mir selbst ein Script für meine Seite zu schreiben mit ACP etc und habe daher mal mit Datenbanken angefangen. Ich habe die Tabelle "News" (beinhaltet Titel, Datum, Inhalt, Timestamp und ID), worein per Formular (welches bestens funktioniert) Newseinträge eingetragen werden, welche dann auf der Mainpage angezeigt werden. Soweit alles gut, auch das Datenbanken löschen klappt soweit, nur wenn ich auf den Bearbeiten Button klicke und dann halt eine textarea mit dem Inhalt des Newsfeldes erscheint und ich den Text ändern will und auf abschicken klicke, bekomme ich folgenden 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 3
    Der Code lautet wie folgt , der schreiben soll:

    PHP-Code:
    <?php 
        
    include('dbconnect.php'); 
        
    $date date('d.m.Y'); 
        if(
    $_GET['action'] == 'edit'){

        
    $sql mysql_query("SELECT * FROM News WHERE ID = ".$_GET['id']) or die(mysql_error());
        
    $data mysql_fetch_array($sql);
    ?>
    <form name="news" method="post" action="<?php echo $_SERVER['SCRIPT_NAME']; ?>?action=<?php echo $_GET['action']; ?>&id=<?php echo $_GET['id']; ?>">
    <textarea name="content" rows="5" cols="35" ><? echo $data['Inhalt'];  ?></textarea> 
    <input type="submit" value="Abschicken" accesskey="s">
    </form>   
    <?php
            
    if ($_POST) {
        
    $sql2 mysql_query("UPDATE
                             News
                            SET
                             Inhalt = '"
    .$_POST['content']."' 
                            WHERE ID = "
    .$_GET['id']) 
              or die(
    mysql_error());
              echo 
    'UPDATE 
                     News 
                    SET 
                     Inhalt = '
    .$_POST['content'].
                    WHERE ID = '
    .$_GET['id'];
            }
        }
        if(
    $_GET['action'] == 'delete'){
        
    $sql3 mysql_query("DELETE FROM
                          News
                         WHERE ID = "
    .$_GET['id'])
              or die(
    mysql_error());
            echo 
    'Eintrag mit der ID '.$_GET['id'].' erfolgreich gelöscht!';
        }

                if (
    $_POST) {
                
    $ID $_POST['identify'];
                
                
                
    $add "DELETE FROM 
                         News
                        WHERE ID = 
    $ID";
                
                
    $newnews mysql_query($add) or die(mysql_error());

                
                }
                
    ?>
    wäre echt nett, wenn ihr mir helfen könntet =)

    Cheers


  • #2
    Naja, die Meldung sagt ja schon: im Query ist ein Fehler. Lass dir im die() nach mysql_query() neben mysql_error() mal noch das Query ausgeben. Dazu musst du natürlich das Query vorher in einer Variablen speichern.

    Kommentar


    • #3
      hier ists:
      UPDATE News SET Inhalt = wwwww WHERE ID = 29 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 3

      Kommentar


      • #4
        wwwww ist doch ein String, den musst du auch so im Query kenntlich machen. Wenn du nicht weißt, wie: Google ist dein Freund

        Kommentar


        • #5
          PHP-Code:
          Inhalt '" .$_POST['content']. "' 
          so stehts doch drin also

          Inhalt = ' STRING ' eigentlich müsstes so doch klappen ...

          Kommentar


          • #6
            btw: Such mal anch SQL-Injections

            Kommentar


            • #7
              So besser ?

              PHP-Code:
              <?php 
                  
              include('dbconnect.php'); 
                  
              $date date('d.m.Y'); 
                  if(
              $_GET['action'] == 'edit'){
                  
              $ident=mysql_real_escape_string($_GET['id']);

                  
              $sql="SELECT * FROM News WHERE ID = ".$ident;
                  
              $sqlqry mysql_query($sql) or die(mysql_error());
                  
                  
              $data mysql_fetch_array($sqlqry);
              ?>
              <form name="news" method="post" action="<?php echo $_SERVER['SCRIPT_NAME']; ?>?action=<?php echo $_GET['action']; ?>&id=<?php echo $_GET['id']; ?>">
              <textarea name="content" rows="5" cols="35" ><? echo $data['Inhalt'];  ?></textarea> 
              <input type="submit" value="Abschicken" accesskey="s">
              </form>   
              <?php
                      
              if ($_POST) {
                  
              $contd=mysql_real_escape_string($_POST['content']);
                  
              $ident=mysql_real_escape_string($_GET['id']);
                  
              $sql2="UPDATE 
                               News 
                              SET 
                               Inhalt = \'.
              $contd.\' 
                              WHERE ID = "
              .$ident;
                         
                  
              $sql2qry=mysql_query($sql2) or die(mysql_error());
                  
                        echo 
              'UPDATE 
                               News 
                              SET 
                               Inhalt = "'
              .$contd.'" 
                              WHERE ID = ".$ident'

                              
                      }
                  }
                  if(
              $_GET['action'] == 'delete'){
                  
              $ident=mysql_real_escape_string($_GET['id']);
                  
              $sql3="DELETE FROM
                          News
                         WHERE ID = "
              .$ident;
                         
                  
              $sql3qry=mysql_query($sql3) or die(mysql_error());
                        
                      echo 
              'Eintrag mit der ID '.$ident.' erfolgreich gelöscht!';
                  }

                          if (
              $_POST) {
                          
              $ID mysql_real_escape_string($_POST['identify']);
                          
                          
                          
              $add "DELETE FROM 
                                   News
                                  WHERE ID = 
              $ID";
                          
                          
              $newnews mysql_query($add) or die(mysql_error());

                          
                          }
                          
              ?>

              Kommentar


              • #8
                Auf den ersten Blick - Ja. Allerdings sollte man der Konseqenz halber Zahlen auch als solche benutzen, also:
                PHP-Code:
                $ident=(int)$_GET['id'];
                //oder
                $ident=intval($_GET['id']); 

                Kommentar


                • #9
                  ok hab das geändert aber nun mal zurück zum Problem:

                  Warum spackt das bei zB der Abfrage ?

                  PHP-Code:
                  UPDATE
                   News 
                  SET
                   Inhalt 
                  'hhh' 
                  WHERE ID '29'
                  bekomm immernoch den 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 3

                  Kommentar


                  • #10
                    Sorry, aber Du schaust die falsche Query an. Massgeblich ist das:
                    PHP-Code:
                    $sql2="UPDATE 
                                     News 
                                    SET 
                                     Inhalt = \'.
                    $contd.\' 
                                    WHERE ID = "
                    .$ident
                    , nicht Dein echo. Und nun mal genau hinsehen.
                    --

                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                    --

                    Kommentar


                    • #11
                      ich vergaß, der aktuelle code lautet wiefolgt ...

                      PHP-Code:
                      <?php 
                          
                      include('dbconnect.php'); 
                          
                      $date date('d.m.Y'); 
                          if(
                      $_GET['action'] == 'edit'){
                          
                      $ident=mysql_real_escape_string(intval($_GET['id']));

                          
                      $sql="SELECT * FROM News WHERE ID = ".$ident;
                          
                      $sqlqry mysql_query($sql) or die(mysql_error());
                          
                          
                      $data mysql_fetch_array($sqlqry);
                      ?>
                      <form name="news" method="post" action="<?php echo $_SERVER['SCRIPT_NAME']; ?>?action=<?php echo $_GET['action']; ?>&id=<?php echo $_GET['id']; ?>">
                      <textarea name="content" rows="5" cols="35" ><? echo $data['Inhalt'];  ?></textarea> 
                      <input type="submit" value="Abschicken" accesskey="s">
                      </form>   
                      <?php
                              
                      if ($_POST) {
                          
                      $contd=mysql_real_escape_string($_POST['content']);
                          
                      $ident=mysql_real_escape_string(intval($_GET['id']));
                          
                      $sql2="UPDATE
                                       News
                                      SET
                                       Inhalt = '" 
                      $contd "'
                                      WHERE ID = '"
                      $ident "';";
                                 
                          
                      $sql2qry=mysql_query($sql2) or die(mysql_error());
                          
                                echo(
                      $sql2); 
                                      
                              }
                          }
                          if(
                      $_GET['action'] == 'delete'){
                          
                      $ident=mysql_real_escape_string(intval($_GET['id']));
                          
                      $sql3="DELETE FROM
                                  News
                                 WHERE ID = "
                      .$ident;
                                 
                          
                      $sql3qry=mysql_query($sql3) or die(mysql_error());
                                
                              echo 
                      'Eintrag mit der ID '.$ident.' erfolgreich gelöscht!';
                          }

                                  if (
                      $_POST) {
                                  
                      $ID mysql_real_escape_string($_POST['identify']);
                                  
                                  
                                  
                      $add "DELETE FROM 
                                           News
                                          WHERE ID = 
                      $ID";
                                  
                                  
                      $newnews mysql_query($add) or die(mysql_error());

                                  
                                  }
                                  
                      ?>
                      also ist die maßgebende stelle
                      PHP-Code:
                      if ($_POST) {
                          
                      $contd=mysql_real_escape_string($_POST['content']);
                          
                      $ident=mysql_real_escape_string(intval($_GET['id']));
                          
                      $sql2="UPDATE
                                       News
                                      SET
                                       Inhalt = '" 
                      $contd "'
                                      WHERE ID = '"
                      $ident "';";
                                 
                          
                      $sql2qry=mysql_query($sql2) or die(mysql_error());
                          
                                echo(
                      $sql2); 
                                      
                              }
                          } 

                      Kommentar


                      • #12
                        Mach mal das Semikolon in der SQL-Anweisung weg.

                        Kommentar


                        • #13
                          immernoch die Selbe Fehlermeldung ...

                          Kommentar


                          • #14
                            Schon mal die SQL-Abfrage z.B. in phpMyAdmin laufen lassen? Funktioniert sie da?

                            Kommentar


                            • #15
                              PHP-Code:
                              $sql2="UPDATE
                                               News
                                              SET
                                               Inhalt = '" 
                              $contd "'
                                              WHERE ID = '"
                              $ident "';"
                              PHP-Code:
                                          $add "DELETE FROM 
                                                   News
                                                  WHERE ID = 
                              $ID"
                              PHP-Code:
                                  $sql3="DELETE FROM
                                          News
                                         WHERE ID = "
                              .$ident
                              Vielleicht auch einfach mal auf eine Methode „einigen“, die ID in die Query zu bekommen.
                              --

                              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                              --

                              Kommentar

                              Lädt...
                              X