Problem mit Einfügeformular

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem mit Einfügeformular

    Hab folgendes Formular:
    PHP Code:
    <form action "addlyric.php" method "post">
       <
    table> <tr><td>
        
    Titel:</td> <td><input name="titel"></td> </tr>
        <
    tr><td>Interpret:</td><td>   <input name="interpret"></td></tr>
        <
    tr><tdSongtext:</td><td><textarea name="song" cols="45" rows="10"></textarea> </td></tr>

       <
    tr><tdhinzugefügt von:</td><td> <input name="autor"z.B.: Andy<p> </td></tr></table>

        <
    input type="submit" name="gesendet" value="Text Hinzufügen">
        <
    input type="reset">
    </
    form
    Die Daten werden an die datenbank wie folgt übergeben:
    PHP Code:
    <?php
       
    if ($gesendet)
       {


          if (
    $titel=="" or  $interpret=="" or $song=="" )
              {
              echo 
    "<center><font color=#FFFFFF size='+1'>Leider hast du das Formular nicht vollständig ausgefüllt.</font>";
               echo 
    "<center><font color=#FFFFFF size='+1'>Du musst mindesten den Titel, Interpreten und den Songtext eingeben und erst dann das Formular abschicken.</font>";
               }
           else
           {
           require 
    "ezine_db.inc.php";
           
    $ezine_db ezine_connecte_db();

          
    $counter=1;
          
    $sql "INSERT INTO lyric";
          
    $sql .= "(titel, interpret,";
          
    $sql .= " song, autor, counter) values ";
          
    $sql .= "('$titel', '$interpret', '$song', '$autor', '$counter')";

          
    mysql_query($sql$ezine_db);

          
    $num mysql_affected_rows();
          if (
    $num>0)
             {
              echo 
    "<center><font color=#FFFFFF>Es wurde 1 Songtext hinzugefügt</font><p>";
              echo 
    "<center><font color=#FFFFFF>Vielen Dank!</font><p>";
             }
          else
          {
             echo 
    "<center><font color=#FFFFFF>Es ist ein Fehler aufgetreten, </font>";
             echo 
    "<center><font color=#FFFFFF>es wurde kein Songtext hinzugefügt</font><p>";
          }
          
    mysql_close($ezine_db);
          }
       }
    ?>
    Mein Problem:
    Bei Sonderzeichen wie z.B.: " ' " wird ein Fehler verursacht
    und der text kann der Datenbank nicht hinzugefügt werden.

    Wie kann ich dies vermeiden?

    Ich hätte noch ne Frage:
    Wie kann ich eine Liste anzeigen lasse mit z.B. 10 oder 20
    Namen der Leute die die meisten beiträge gemacht haben?
    Wie würde die sql abfrage lauten?


    Danke für eure Hilfe

  • #2
    Versuchs mal mit nem \ vor dem '

    gibt dafür entweder die bekannten replace-Funktionen, aber meines Wissens nach auch eine eigene Funktion, die vor Sonderzeichen ein \ setzt. hab nur leider den Namen nicht parat.

    Comment


    • #3
      http://www.php.net/manual/de/function.addslashes.php

      Comment


      • #4
        Meine Rede

        Comment


        • #5
          PHP:--------------------------------------------------------------------------------
          <?php
          if ($gesendet)
          {


          if ($titel=="" or $interpret=="" or $song=="" )
          {
          echo "<center><font color=#FFFFFF size='+1'>Leider hast du das Formular nicht vollständig ausgefüllt.</font>";
          echo "<center><font color=#FFFFFF size='+1'>Du musst mindesten den Titel, Interpreten und den Songtext eingeben und erst dann das Formular abschicken.</font>";
          }
          else
          {
          require "ezine_db.inc.php";
          $ezine_db = ezine_connecte_db();
          PHP Code:
          $titel addslashes($titel);
          $interpret addslashes($interpret);
          $song addslashes($song); 
          $counter=1;
          $sql = "INSERT INTO lyric";
          $sql .= "(titel, interpret,";
          $sql .= " song, autor, counter) values ";
          $sql .= "('$titel', '$interpret', '$song', '$autor', '$counter')";

          mysql_query($sql, $ezine_db);

          $num = mysql_affected_rows();
          if ($num>0)
          {
          echo "<center><font color=#FFFFFF>Es wurde 1 Songtext hinzugefügt</font><p>";
          echo "<center><font color=#FFFFFF>Vielen Dank!</font><p>";
          }
          else
          {
          echo "<center><font color=#FFFFFF>Es ist ein Fehler aufgetreten, </font>";
          echo "<center><font color=#FFFFFF>es wurde kein Songtext hinzugefügt</font><p>";
          }
          mysql_close($ezine_db);
          }
          }
          ?>

          --------------------------------------------------------------------------------


          Hab ich das Problem jetzt richtig gelöst
          oder gehts noch besser?

          Comment


          • #6
            Ich denke das ist doch ne saubere lösung. Und wenns funktioniert: perfekt!

            Comment

            Working...
            X