Unterschied zwischen Test-Script und Original-Script

sheeba1507

Erfahrenes Mitglied
Hallo zusammen,

da mein Auftrags-Formular viele Eingaben benötigt, die aber fast alle
auch funktioniert haben, habe ich mir eine test.php angelegt und den
relevanten Code der nicht funktionierenden Bereiche dorthin kopiert.

Nach einigen Versuchen habe ich es dann geschafft, daß endlich alle
Daten so verarbeitet werden wie erwünscht.
Also konnte ich die betreffenden Code-Bereiche im Original-Formular
durch die Codierung im Test-Formular ersetzen.

Nachdem ich aber das Formular getestet habe, mußte ich feststellen,
daß die Bilder-Namen nicht in die Datenbank-Tabelle eingetragen werden,
obwohl das im Test-Formular funktioniert.
Ein Vergleich der betreffenden Code-Zeilen erbrachte keinen Unterschied.
Zumindest konnte ich bislang keinen entdecken.

Hier mal die komplette Codierung des Test-Formulars :
PHP:
<?php 
include ("include/function.inc.php"); 

$db_apartments = "apartments"; 
$dbcon = "include/db_connect_angebote.inc.php"; 

if(isset($_POST['submit'])) 
  { 
  $bild1 = strtolower($_FILES['bild1']['name']); 
  $bild2 = strtolower($_FILES['bild2']['name']); 
   
  $timestamp = time(); 
  $pathname = "angebote/".$timestamp."/"; 
  image_check ($_FILES['bild2']['tmp_name'], $_FILES['bild2']['name'], $_FILES['bild2']['size'], $pathname); 
  image_check ($_FILES['bild1']['tmp_name'], $_FILES['bild1']['name'], $_FILES['bild1']['size'], $pathname); 
  if ($mess == "") 
    { 
    mkdir($pathname, 0777); 
    move_uploaded_file($_FILES['bild1']['tmp_name'], $pathname.$_FILES['bild1']['name']); 
    move_uploaded_file($_FILES['bild2']['tmp_name'], $pathname.$_FILES['bild2']['name']); 
    include ($dbcon); 
    $sqleintrag = "INSERT INTO $db_apartments (bild1, bild2) VALUES ('$bild1', '$bild2')"; 
    mysql_query($sqleintrag) or die(mysql_error()); 
    } 
  } 
?> 
<div> 
  <form action='test.php' method='post' enctype='multipart/form-data'> 
    <table> 
      <tr> 
        <td>Bild 1</td> 
        <td> 
          <input type="file" name="bild1" value="<?php echo $bild1; ?>" /> 
        </td> 
      </tr> 
      <tr> 
        <td>Bild 2</td> 
        <td> 
          <input type="file" name="bild2" value="<?php echo $bild2; ?>" /> 
        </td> 
      </tr> 
      <tr> 
        <td><input class="submit" name="submit" type="submit" value="Upload" /></td> 
      </tr> 
    </table> 
  </form> 
</div>
Und hier die Codierung (Auszug) des Original-Formulars :
PHP:
<?php 
include ("include/function.inc.php"); 

$db_apartments = "apartments"; 
$db_lastnum = "lastnum"; 
$dbcon = "include/db_connect_angebote.inc.php"; 

if(isset($_POST['submit'])) 
  { 
   
  $bild1 = strtolower($_FILES['bild1']['name']); 
  $bild2 = strtolower($_FILES['bild2']['name']); 
  $bild3 = strtolower($_FILES['bild3']['name']); 
  $bild4 = strtolower($_FILES['bild4']['name']); 
  $bild5 = strtolower($_FILES['bild5']['name']); 
   
      //Daten abrufen 
      include ($dbcon); 
      $sqlabfrage2 = "SELECT * from $db_lastnum"; 
      $ergebnis2 = mysql_query($sqlabfrage2) or die(mysql_error()); 
      $datensatz2 = mysql_fetch_array($ergebnis2); 
      //Bilder-Ordner erstellen
      $auft_num = $datensatz2["auft_num"]; 
      $pathname = "angebote/".$auft_num."/";
      //Check Bilder-Daten 
      image_check ($_FILES['bild5']['tmp_name'], $_FILES['bild5']['name'], $_FILES['bild5']['size'], $pathname); 
      image_check ($_FILES['bild4']['tmp_name'], $_FILES['bild4']['name'], $_FILES['bild4']['size'], $pathname); 
      image_check ($_FILES['bild3']['tmp_name'], $_FILES['bild3']['name'], $_FILES['bild3']['size'], $pathname); 
      image_check ($_FILES['bild2']['tmp_name'], $_FILES['bild2']['name'], $_FILES['bild2']['size'], $pathname); 
      image_check ($_FILES['bild1']['tmp_name'], $_FILES['bild1']['name'], $_FILES['bild1']['size'], $pathname);       
      if ($mess == "") 
        { 
        //Unterordner erstellen 
        mkdir($pathname, 0777); 
        //Bilder laden/übertragen 
        move_uploaded_file($_FILES['bild1']['tmp_name'], $pathname.$_FILES['bild1']['name']); 
        move_uploaded_file($_FILES['bild2']['tmp_name'], $pathname.$_FILES['bild2']['name']); 
        move_uploaded_file($_FILES['bild3']['tmp_name'], $pathname.$_FILES['bild3']['name']); 
        move_uploaded_file($_FILES['bild4']['tmp_name'], $pathname.$_FILES['bild4']['name']); 
        move_uploaded_file($_FILES['bild5']['tmp_name'], $pathname.$_FILES['bild5']['name']); 
        //Auftrags-Daten eintragen 
        $sqleintrag = "INSERT INTO $db_apartments  
          ( 
          status, ang_num, kd_num, reg_date, abo_date, abo_year, area, name, strasse, plz, ort, 
          groesse, zimmer, betten, etage, lage, dist_center, dist_meer, dist_natur, 
          ap_klima, ap_telefon, ap_tv, ap_sat, ap_player, ap_net, ap_wasch, ap_park, 
          ap_meer, ap_tiere, ap_invalide, ap_heiz, ap_kueche, ap_kuehl, ap_back, ap_micro, 
          voting, stimmen, preis_vor, preis_haupt, preis_nach, bild1, bild2, bild3, bild4, bild5 
          )  
          VALUES  
          ( 
          '$status', '$ang_num', '$kd_num', '$reg_date', '$abo_date', '$abo_year', 
          '$area', '$name', '$strasse', '$plz', '$ort', 
          '$groesse', '$zimmer', '$betten', '$etage', '$lage', '$dist_center', '$dist_meer', '$dist_natur', 
          '$ap_klima', '$ap_telefon', '$ap_tv', '$ap_sat', '$ap_player', '$ap_net', '$ap_wasch', '$ap_park', 
          '$ap_meer', '$ap_tiere', '$ap_invalide', '$ap_heiz', '$ap_kueche', '$ap_kuehl', '$ap_back', '$ap_micro', 
          '$voting', '$stimmen', '$preis_vor', '$preis_haupt', '$preis_nach', 
          '$bild1', '$bild2', '$bild3', '$bild4', '$bild5' 
          ) 
          "; 
        mysql_query($sqleintrag) or die(mysql_error());
Der einzige Unterschied zwischen diesen beiden Scripten besteht in der
Anzahl der Bilder und der Art, mit welchen Daten der Ordner erstellt wird.

Aber trotz identischer Codierung werden im Original-Formular keine
Bilder-Namen in die Tabelle eingetragen.
Vieleicht kann ja jemand von euch einen Unterschied entdecken, den ich
bislang noch nicht gefunden habe.
Oder gibt es ein anderes Problem, wodurch die Funktion nicht ordnungsgemäß
ausgeführt werden kann ?

Ich hoffe auf eure Hilfe.

Gruß, Mike
 
Hi,

hier der relevante Auszug aus dem Original-Script :
PHP:
<form action='xxx.php' method='post'>
  <table>
    ...
    ...
    <tr>
      <td class="ang_bilder_text">Bild 1 (300x205)</td>
      <td>
        <input type="file" name="bild1" value="<?php echo $bild1; ?>" />
      </td>
    </tr>
    <tr>
      <td class="ang_bilder_text">Bild 2 (300x205)</td>
      <td>
        <input type="file" name="bild2" value="<?php echo $bild2; ?>" />
      </td>
    </tr>
    <tr>
      <td class="ang_bilder_text">Bild 3 (200x137)</td>
      <td>
        <input type="file" name="bild3" value="<?php echo $bild3; ?>" />
      </td>
    </tr>
    <tr>
      <td class="ang_bilder_text">Bild 4 (200x137)</td>
      <td>
        <input type="file" name="bild4" value="<?php echo $bild4; ?>" />
      </td>
    </tr>
    <tr>
      <td class="ang_bilder_text">Bild 5 (200x137)</td>
      <td>
        <input type="file" name="bild5" value="<?php echo $bild5; ?>" />
      </td>
    </tr>
  </table>
</form>

Gruß, Mike

---------------------------------------------------------------------------
Nachtrag :

Soeben ist mir beim Posting mit dem Eingabe-Bereich der Fehler aufgefallen.
Ich habe mich so auf den PHP-Teil konzentriert, daß ich vollkommen
übersehen habe, den <form>-Tag mit enctype='multipart/form-data' zu
erweitern.

Damit hat sich das Problem gelöst.
Trotzdem Danke für die Hilfe.
 
Zuletzt bearbeitet:
Ja das dachte ich mir schon :-D. Hatte nämlich im "PHP" Teil keinen Fehler gefunden da musste er einfach im "HTML" teil liegen.
 
Zurück