[PHP] Benötige Hilfe bei einem Script [Newbie]

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

  • #16
    Zitat von gsc2010 Beitrag anzeigen
    dennnoch feuert das script mir immer noch fehler raus ....
    … die du uns dann bitte immer mitteilst, inkl. der darin erwähnten Codezeile und ihrem näheren Kontext (ca. 3–5 Zeilen davor und danach).
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #17
      bevor ich aber gehe, ich habe dann doch noch ne Frage :
      PHP-Code:
              // Maskierende Slashes aus POST entfernen
              
      $_POST get_magic_quotes_gpc() ? array_map'stripslashes'$_POST ) : $_POST;
              
      // Inhalte der Felder aus POST holen
              
      $bild $_FILES['bild'][$zielorg];
              
      $name $_POST['name'];
              
      $nickname $_POST['nickname'];
              
      $alter = (int) $_POST['alter'];
              
      $wohnort $_POST['wohnort'];
              
      $msn $_POST['msn'];
              
      $geschlecht $_POST['geschlecht'];
              
      $teampage $_POST['teampage'];
              
      $member = isset( $_POST['moderator'] ) ? 1
      PHP-Code:
      #### Funktion Datenbank-Eintragen
      if($_GET['action'] == 'upload')
      {
      $upload uploader($_FILES['foto']['tmp_name'], 
      $_FILES['foto']['name'], 
      $_FILES['foto']['type']);
      if(
      substr($uploadstrlen($upload)-44) != '.jpg')
      {
      echo 
      $upload;
        }
      else
      {
      $sql "INSERT INTO `test`
      (`bild`,`name`, `nickname`, `alter`, `wohnort`, `msn`, `geschlecht`, `teampage`, `moderator`)
      VALUES (
      .$upload",
      '" 
      .mysql_real_escape_string$name ). "',
      '" 
      .mysql_real_escape_string$nickname ). "',
      .$alter",
      '" 
      .mysql_real_escape_string$wohnort ). "',
      '" 
      .mysql_real_escape_string$msn ). "',
      '" 
      .mysql_real_escape_string$geschlecht ). "',
      '" 
      .mysql_real_escape_string$teampage ). "',
      .$member"
      )"
      ;
      $result mysql_query($sql);
      }} 
      Wäre dieser Ansatz denn richtig ?
      Zuletzt geändert von gsc2010; 25.06.2010, 23:42.

      Kommentar


      • #18
        Ob das richtig ist, hängt von der konkreten Implementierung der Funktion uploader ab.

        Bitte keine Zitate für Code benutzen.
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #19
          So habe ich die Funktion deklariert...

          PHP-Code:
          function uploader($fotofile$fotofile_name$fotofile_type)
          {
          if(
          $fotofile_type != 'image/jpeg' && $fotofile_type != 'image/pjpeg')
          {
          return 
          $upload_log 'Die Datei '.$fotofile_name.' ist nicht vom Typ Jpg, sondern $fotofile_type!';
          }
          // Angabe Dateiendung
          $datei_ende '.jpg';
          // Foto speichern
          $zielorg .= substr($fotofile_name,0,strrpos($fotofile_name,'.')).$datei_ende;
          if(
          file_exists($zielorg))
          {
          return 
          $upload_log 'Die Datei '.$fotofile_name.' exsitiert schon auf dem Server!';
          }
          if(!
          move_uploaded_file($fotofile$zielorg))
          {
          return 
          $upload_log 'Ein Fehler beim Kopieren der Datei '.$fotofile_name.' ist aufgetreten!';
          }
          return 
          $upload_log $zielorg;

          Der Rest ist nur noch html....
          Zuletzt geändert von gsc2010; 25.06.2010, 23:41.

          Kommentar


          • #20
            zur besseren Lesbarkeit für dich und uns .. vermeide bitte 'blabla $variable ' ... das ist einfach schlechter Stil .. 'blabla '.$variable.' ...' ist meist besser lesbar - zumal meines Wissens nach php die Ersetzung in Zeichenketten mit ' ' gar nicht durchführt, sondern nur in Zeichenketten mit " " - dein Code würde also $variable im Text ergeben, statt durch den Wert der Variablen ersetzt zu werden
            [font=Verdana]
            Wer LESEN kann, ist klar im Vorteil!
            [/font]

            Kommentar


            • #21
              nachdem ich nun den Code mal umgewandelt habe,
              also in das lesbare php hier im forum,
              ich habe nun alle funktionen aus meinem Script drin, also hier im Forum.

              Zum schluss ist das alles nur noch html...
              wobei ich glaube,
              das ich hier
              PHP-Code:
              <?
              echo '<form name="formular" enctype="multipart/form-data" action="'.$_SERVER['PHP_SELF'].'?action=upload" 
              method="post" name="formular" id="formular">';
              ?>
              auch noch einen Denkfehler bestimmt habe.
              Was mich irgendwie wundert, ist die Tatsache,
              das ich 2x die sql-db abfrage,
              ich denke mal,das das falsch ist...

              Sorry der merkwürdigen Fragen aus eurer Sicht,
              ich arbeite viel mehr mit Photoshop, und programmiere
              sehr selten, wollte nur nicht auf vorgefertigte Sachen
              zurückgreifen und mich dann damit rühmen....

              Vllt könntet ihr mir den Weg in die richtige Richtung aufzeigen...
              Vielen dank

              Kommentar


              • #22
                Zitat von eagle275 Beitrag anzeigen
                zumal meines Wissens nach php die Ersetzung in Zeichenketten mit ' ' gar nicht durchführt, sondern nur in Zeichenketten mit " "
                Aber auch mit " werden nur Variablen ersetzt, es wird kein PHP-Code ausgeführt und somit funktioniert das oben vorgeschlagene
                PHP-Code:
                $sql.=" name='{mysql_real_escape_string( $name )}', "
                nicht.

                Kommentar


                • #23
                  und wie das funktioniert ....onemorenerd ...

                  ich verwende es in einem Import-Script für CSV-Daten einige 10tausend Mal - und jedesmal sieht der erzeugte $sql-String exakt so aus, wie man ihn sich wünscht ..

                  wobei es nochmal bedeutend an lesbarkeit gewinnt, wenn man analog zum englischen PHP-Manual folgendes tut

                  PHP-Code:
                  <?php
                  class sqlescaper {

                     function 
                  __get($value) {
                        return 
                  mysql_real_escape_string($value);
                     }
                  }

                  ....

                  // im eigentlichen Code 
                  $check=new sqlescaper;

                  ...

                  // dann siehts so aus 

                  $sql.=" name='{$check->$name}', ";
                  ...

                  und @gsc
                  PHP-Code:

                  echo '<form name="formular" enctype="multipart/form-data" action="'.$_SERVER['PHP_SELF'].'?action=upload" 
                  method="post" id="formular">'
                  ;// einmal name="xyz" reicht völlig 
                  Zuletzt geändert von eagle275; 26.06.2010, 00:22.
                  [font=Verdana]
                  Wer LESEN kann, ist klar im Vorteil!
                  [/font]

                  Kommentar


                  • #24
                    so, eigentlich wollte ich ja raus gehen,
                    aber mein Ehrgeiz packte mich zur letzten Tat,
                    Für heute....

                    so sieht das komplette Script aus
                    PHP-Code:
                    <?php

                    ###### Config-Datei
                    $db_host "localhost";  // Datenbank-Server
                    $db_user "root";       // Benutzer
                    $db_pass "";           // Passwort
                    $db_name "test";       // Datenbank-Name
                    /// Hier noch den Zielordner angeben
                    $zielorg "../teampage/uploads/";
                    /// Ab hier ist nichts mehr zu ändern!
                    if (isset( $_POST['eintragen'] ))
                    {
                    // Maskierende Slashes aus POST entfernen
                    $_POST get_magic_quotes_gpc() ? array_map'stripslashes'$_POST ) : $_POST;
                    // Inhalte der Felder aus POST holen
                    $bild $_FILES['bild'][$zielorg];
                    $name $_POST['name'];
                    $nickname $_POST['nickname'];
                    $alter = (int) $_POST['alter'];
                    $wohnort $_POST['wohnort'];
                    $msn $_POST['msn'];
                    $geschlecht $_POST['geschlecht'];
                    $teampage $_POST['teampage'];
                    $member = isset( $_POST['moderator'] ) ? 1;
                    ## Überprüfung
                    ## ist alles ok..?
                    ## wenn ja, dann weiter
                    ## Verbindung oeffnen und Datenbank ausweahlen
                    $conID mysql_connect$db_host$db_user$db_pass )
                    or die
                    "Die Datenbank konnte nicht erreicht werden!" );
                    if (
                    $conID)
                    {
                    mysql_select_db$db_name$conID );
                    }
                    ## Upload
                    function uploader(
                    $fotofile$fotofile_name$fotofile_type)
                    {
                    if(
                    $fotofile_type != 'image/jpeg' && $fotofile_type != 'image/pjpeg')
                    {
                    return 
                    $upload_log 'Die Datei '.$fotofile_name.' Datei - Typ falsch!';
                    }
                    // Angabe Dateiendung
                    $datei_ende '.jpg';
                    // Foto speichern
                    $zielorg .= substr($fotofile_name,0,strrpos($fotofile_name,'.')).$datei_ende;
                    if(
                    file_exists($zielorg))
                    {
                    return 
                    $upload_log 'Die Datei '.$fotofile_name.' exsitiert schon auf dem Server!';
                    }
                    if(!
                    move_uploaded_file($fotofile$zielorg))
                    {
                    return 
                    $upload_log 'Ein Fehler beim Kopieren der Datei '.$fotofile_name.' ist aufgetreten!';
                    }
                    return 
                    $upload_log $zielorg;
                    }
                    #### Ende

                    #### Funktion Datenbank-Eintragen
                    if($_GET['action'] == 'upload')
                    {
                    $upload uploader($_FILES['foto']['tmp_name'],
                    $_FILES['foto']['name'], $_FILES['foto']['type']);
                    if(
                    substr($uploadstrlen($upload)-44) != '.jpg')
                    {
                    echo 
                    $upload;
                    }
                    else
                    {
                    $sql "INSERT INTO `test`
                    (`bild`,`name`, `nickname`, `alter`, `wohnort`, `msn`, `geschlecht`, `teampage`, `moderator`)
                    VALUES (
                    .$upload",
                    '" 
                    .mysql_real_escape_string$name ). "',
                    '" 
                    .mysql_real_escape_string$nickname ). "',
                    .$alter",
                    '" 
                    .mysql_real_escape_string$wohnort ). "',
                    '" 
                    .mysql_real_escape_string$msn ). "',
                    '" 
                    .mysql_real_escape_string$geschlecht ). "',
                    '" 
                    .mysql_real_escape_string$teampage ). "',
                    .$member"
                    )"
                    ;
                    $result mysql_query($sql);
                    }}
                    ## Ende
                    ## Anfrage zusammenstellen der an die DB geschickt werden soll
                    $sql "INSERT INTO `test`
                    (`bild`,`name`, `nickname`, `alter`, `wohnort`, `msn`, `geschlecht`, `teampage`, `moderator`)
                    VALUES(
                    .$upload",
                    '" 
                    .mysql_real_escape_string$name ). "',
                    '" 
                    .mysql_real_escape_string$nickname ). "',
                    .$alter",
                    '" 
                    .mysql_real_escape_string$wohnort ). "',
                    '" 
                    .mysql_real_escape_string$msn ). "',
                    '" 
                    .mysql_real_escape_string$geschlecht ). "',
                    '" 
                    .mysql_real_escape_string$teampage ). "',
                    .$member"
                    )"
                    ;
                    // Schickt die Anfrage an die DB und schreibt die Daten in die Tabelle
                    mysql_query$sql );
                    // Pruefen ob der neue Datensatz tatsaechlich eingefuegt wurde
                    if (mysql_affected_rows() == 1)
                    {
                    echo 
                    "<h3>Der Datensatz wurde hinzugefügt!</h3>";
                    // Hier kann weiterer Code stehen der ausgefuehrt werden soll

                    }
                    else
                    {
                    echo 
                    "<h3>Der Datensatz konnte <strong>nicht</strong> hinzugefügt werden!</h3>";
                    print_r($sql);
                    }
                    }

                    ?>

                    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
                    <head>
                    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
                    <title>Formularinhalt in eine Datenbank schreiben</title>
                    </head>

                    <body>
                    <?
                    echo '
                    <form name="formular" enctype="multipart/form-data" action="'.$_SERVER['PHP_SELF'].'?action=upload" 
                    method="post" name="formular" id="formular">';
                    ?>

                    <table border="1" bordercolor="#000" cellspacing="1" cellpadding="2" width="100%">
                    <tr>
                    <td width="34%" align="left" valign="top">Bild-Datei</td>
                    <td width="66%" align="right" valign="top">
                    <input name="bild" type="file" id="bild" size="28">
                    </td>
                    <tr>
                    <td width="34%" align="left" valign="top">Name:</td>
                    <td width="66%" align="right" valign="top">
                    <input type="text" name="name" id="name" size="50" maxlength="60" value="" /></td>
                    <tr>
                    <td width="34%" align="left" valign="top">Nickname:</td>
                    <td width="66%" align="right" valign="top">
                    <input type="text" name="nickname" id="nickname" size="50" maxlength="60" value="" /></td>
                    <tr>
                    <td width="34%" align="left" valign="top">Altersangabe:</td>
                    <td width="66%" align="right" valign="top"><select name="alter" id="alter">
                    <?php for ($i=16$i<60$i++) { echo "<option>{$i}</option>"; } ?></select></td>
                    <tr>
                    <td width="34%" align="left" valign="top">Wohnort :</td>
                    <td width="66%" align="right" valign="top">
                    <input type="text" name="wohnort" id="wohnort" size="50" maxlength="60" value="" /></td>
                    <tr>
                    <td width="34%" align="left" valign="top">MSN-Nickname :</td>
                    <td width="66%" align="right" valign="top">
                    <input type="text" name="msn" id="msn" size="50" maxlength="60" value="" /></td>
                    <tr>
                    <td width="34%" align="left" valign="top">Geschlechtsangabe:</td>
                    <td width="66%" align="right" valign="top">
                    <input type="radio" name="geschlecht" id="geschlecht_1" value="männlich" checked="checked" />
                    M&auml;nnchen
                    <input type="radio" name="geschlecht" id="geschlecht_2" value="weiblich" />Weibchen</td>
                    <tr>
                    <td width="34%" align="left" valign="top">Link zur Nickpage :</td>
                    <td width="66%" align="right" valign="top">
                    <input type="text" name="teampage" id="teampage" size="50" maxlength="60" value="" /></td>
                    <tr>
                    <td width="34%" align="left" valign="top">Moderator [ja / nein]</td>
                    <td width="66%" align="right" valign="top">
                    <b><u>J</u></b>a<input type="checkbox" name="member" id="member" /></td>
                    <tr>
                    <td width="34%" align="left" valign="top">Eintragen | Eingaben zur&uuml;cksetzen</td>
                    <td width="66%" align="right" valign="top">
                    <input type="submit" name="eintragen" id="eintragen" value="Eintragen" />&nbsp;&nbsp;
                    <input type="reset" name="button" id="" value="Eingaben l&ouml;schen" /></td>
                    <tr>
                    </table>
                    </form>
                    </body>
                    </html>
                    Und nun bin ich mit meinem Latein am Ende ...
                    Frank

                    Kommentar


                    • #25
                      sehr abenteuerlich ..

                      warum schreibst du 2mal den quasi gleichen Datensatz in die Datenbank ?

                      und warum haben deine Formularbestandteile sowohl ein name-Attribut als auch ein ID-Attribut ...

                      PHP benutzt soweit ich weiß das name-Attribut ....

                      name="xyz" erzeugt mit POST abgeschickt einen Eintrag in $_POST['xyz'] mit dem Wert aus dem Eingabefeld dessen name eben xyz ist
                      Zuletzt geändert von eagle275; 26.06.2010, 00:35.
                      [font=Verdana]
                      Wer LESEN kann, ist klar im Vorteil!
                      [/font]

                      Kommentar


                      • #26
                        wie gesagt, das ist ist mir auch aufgefallen...

                        ich hoffe mal, das es nicht zu abenteuerlich ist, bin in sachen php doch erst ein richtiger Anfänger - dennoch, und ich glaube das es der richtige Weg ist, ist es besser, wenn ich selber was versuche, anstatt irgendwelche vorgefertigten dinge, möchte das ja lernen...

                        würde mich dennoch freuen, wenn ihr eine konkrete Hilfe, bzw, einen lösungsansatz geben könntet, würde mich sehr freuen

                        [Edit]
                        Werde nun doch zu Bett gehen ...

                        Vllt fällt mir noch ne lösung ein, ich möchte an dem script nicht verzeweifeln...

                        und ich würde mich echt freuen, wenn ihr mir ein wenig Hilfe geben könntet,

                        Danke

                        [Edit ende]
                        Gute Nacht
                        Zuletzt geändert von gsc2010; 26.06.2010, 00:45.

                        Kommentar


                        • #27
                          Zitat von eagle275 Beitrag anzeigen
                          und wie das funktioniert ....onemorenerd ...
                          PHP: Strings - Manual
                          When a string is specified in double quotes or with heredoc, variables are parsed within it.
                          Im Klartext: In double quoted strings werden Variablen durch ihren momentanen Inhalt (zu String gecastet) ersetzt. Es werden keine Funktionen aufgerufen oder sonstiger PHP-Code evaluiert.

                          ich verwende es in einem Import-Script für CSV-Daten einige 10tausend Mal - und jedesmal sieht der erzeugte $sql-String exakt so aus, wie man ihn sich wünscht ..
                          Das kann nicht sein.

                          wobei es nochmal bedeutend an lesbarkeit gewinnt, wenn man analog zum englischen PHP-Manual folgendes tut

                          PHP-Code:
                          $sql.=" name='{$check->$name}', "
                          Hier ist $check eine Variable, $name ebenfalls. PHP ersetzt $name durch den Inhalt dieser Variablen und angenommen der wäre 'foo', dann ersetzt PHP $check->foo durch den Inhalt der Property foo des Objekts $check.
                          Das ist etwas völlig anderes als
                          PHP-Code:
                          $sql.=" bla {time()} bla"
                          wie du es weiter oben vorgeschlagen hast.

                          Kommentar


                          • #28
                            tja... nur das die Class sqlescaper gar kein Attribut / Property $name hat .. sondern über die __get($value)-Methode doch eine Funktion ausgeführt wird...
                            [font=Verdana]
                            Wer LESEN kann, ist klar im Vorteil!
                            [/font]

                            Kommentar


                            • #29
                              Spielt doch gar keine Rolle, es ist trotzdem eine Variable, keine Funktion!

                              Kommentar

                              Lädt...
                              X