Problem mit Einfügeformular

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

  • 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.

    Kommentar


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

      Kommentar


      • #4
        Meine Rede

        Kommentar


        • #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?

          Kommentar


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

            Kommentar

            Lädt...
            X