[PHP/MySQL] Datumsuebergabe funktioniert nicht ?

Brakus

Lt. Commander
Registriert
März 2004
Beiträge
1.204
Hallo :)

ich habe aus dem Unterricht ein paar Scripte uebernommen, aber an einer Stelle hakt´s (lustigerweise natuerlich auf einmal, vorher gings), was koennte da passiert sein ?

Eine Funktion zur Wandlung des mysql-db-Datums (0000-00-00) in das dt. (00.00.0000) und umgekehrt, ist vorhanden:

Code:
<?
// mySQL-Datum auslesen und in dt. Format zur Ausgabe umwandeln
function convert_db_date ($mysql_date) {
	if(!$mysql_date){echo "convert_db_date: kein Datum übergeben!"; exit; }
	$timestamp = strtotime ($mysql_date);
	$strformatedDate= date ("d.m.Y", $timestamp);

	return $strformatedDate;
}

// bei Eingabe (CMS) von dt. Format in mySQL-Datum umwandeln, damit DB es versteht
function convert_gerDate_to_mysqlDate ($gerDate) {
	if(!$gerDate){echo "convert_gerDate_to_mysqlDate: kein Datum übergeben!"; exit; }
	list ($tag,$monat,$jahr) = explode(".",$gerDate);
	$strDB_date = "$jahr-$monat-$tag";

	return $strDB_date;
}

?>

Diese Funktion wird in einem selbstgebasteltem CMS f. News aufgerufen, bei der Ausgabe (Auflistung/Uebersicht der News im Admin-Bereich) und beim Editieren (innerhalb der Formularfelder).

Nun heisst es neuerdings, dass kein Wert in $datum uebergeben wurde !
hm? hier komm ich nun nicht weiter, weil ich den Fehler nicht finde, warum nichts uebergeben wird !

Hier der save.php und edit.php - code in den noetigen Auszuegen:

Code:
// Variablen holen
$id = $_POST["id"];
$datum = $_POST["datum"]; // convert_gerDate_to_mysqlDate ()
$titel = $_POST["titel"];
$text = $_POST["text"];
$link1 = $_POST["link1"];
$link2 = $_POST["link2"];
$link3 = $_POST["link3"];
$link_ex = $_POST["link_ex"];

// Feldueberpruefung: Pflichtfelder: 
	$strErrorMessage = "";

	if (!$datum) {
		$strErrorMessage .= "Das Datum fehlt !<br>";
	}

	if (!$titel) {
		$strErrorMessage .= "Der Titel fehlt !<br>";
	}
	if (!$text) {
		$strErrorMessage .= "Der Text fehlt !<br>";
	}		
	else {
	$datum = convert_gerDate_to_mysqlDate($datum);
		if( ! $datum ){
		$strErrorMessage .= "Das angegebene Datum stimmt nicht. <br>";
		}
	}

// Fehler aufgetreten ?
	if ($strErrorMessage) {
		echo($strErrorMessage);
	?>
	<br>
	<a href="javascript:history.back()"><font face=arial size=2>zurück</font></a>
	<?
		exit;
	}


// Fallunterscheidung: wenn $id vorhanden, dann UPDATE (edit), sonst INSERT (new) - [mySQL-Befehle] !
	if ($id){

		$strSQL = "UPDATE wind_news SET datum = '$datum', titel = '$titel', text = '$text', link1 = '$link1', link2 = '$link2', link3 = '$link3', link_ex = '$link_ex' WHERE id = $id"; 

}
	else {
		$strSQL = "INSERT INTO wind_news (datum,titel,text,link1,link2,link3,link_ex) VALUES ('$datum','$titel','$text','$link1','$link2','$link3','$link_ex')";
	}		
	
	$result = mysql_query($strSQL) or die("Anfrage '$strSQL' fehlgeschlagen: <b>".mysql_error()."</b>");
	
	if(!$id) {
// neue insert-id ermitteln (nur bei neuen DS ohne id !)
		$id = mysql_insert_id();
	}
	
?>


Code:
$id = $_GET["id"];

	if (!$id) {
//keine news-id übergeben -> neue news!
		echo "<p align=center><font face=Arial, Helvetica, sans-serif size=4><b><i><font color=#FFFFFF>News-Eingabe:</font></i></b></font></p>";
// heutiges Datum festlegen für Eingabe des neuen DB
		$datum = date ("d.m.Y");
	}
	else {
		include("db_connection.inc"); // DB wird nur aufgerufen, wenn else zutrifft. connect kostet sonst unnoetig Resourcen, wenn´s nicht sein muesste.
		echo "<p align=center><font face=Arial, Helvetica, sans-serif size=4><b><i><font color=#FFFFFF>News-EDIT:</font></i></b></font></p>";

		$query = "SELECT * FROM wind_news WHERE id = $id";
 
		$result = mysql_query($query) or die("Anfrage '$DeleteSQL' fehlgeschlagen: <b>".mysql_error()."</b>");

// hat diese Anfrage keine Ergebnisse gebracht ? (DS nicht vorhanden)
			if (mysql_num_rows($result) == 0){
				echo "Eintrag $id nicht in DB vorhanden !";
				exit;
			}
// Ergebniszeile abholen
		$row = mysql_fetch_assoc($result);

// Variablen holen
		$id = $row["id"];
		$datum = convert_db_date ($row["datum"]);
		$titel = $row["titel"];
		$text = $row["text"];
		$link1 = $row["link1"];
		$link2 = $row["link2"];
		$link3 = $row["link3"];		
		$link_ex = $row["link_ex"];
	}

?>

<form enctype="multipart/form-data" name="edit_form" method="post" action="save.php"><!---enctype="multipart/form-data" braucht man, damit er datei-uploads handhaben kann.--->
  <p> 
	<input type="hidden" name="MAX_FILE_SIZE" value="100000">
    <input type="hidden" name="id" value="<? echo $id; ?>">
  </p>

...

            <td width="84%" align="left" background="../../images/background.jpg"> 
              <input type="text" name="titel" size="50" maxlength="50" value="<? echo $titel;  ?>">
            </td>
          </tr>
          <tr> 
            <td width="16%" align="left" valign="top" background="../../images/background.jpg"><font color="#000000" size="2" face="Arial, Helvetica, sans-serif"><b>Text:</b></font></td>
            <td align="left" background="../../images/background.jpg"> 
              <textarea name="text" cols="45" rows="6"><? echo $text;  ?></textarea>
            </td>
          </tr>
          <tr> 
            <td width="16%" align="left" valign="top" background="../../images/background.jpg"><font color="#000000" size="2" face="Arial, Helvetica, sans-serif"><b>Datum:</b></font></td>
            <td align="left" background="../../images/background.jpg"> 
              <input type="text" name="datum" size="30" maxlength="30" value="<? echo $datum;  ?>">
            </td>
          </tr>
          <tr>
            <td align="left" valign="top" background="../../images/background.jpg"><font color="#000000" size="2" face="Arial, Helvetica, sans-serif"><b>Link:</b></font></td>
            <td align="left" background="../../images/background.jpg"><font color="#000000" size="2" face="Arial, Helvetica, sans-serif">
              <input name="link" type="checkbox" id="link1" value="prod" <? if ($link1=="prod") {echo "checked";} ?>>
              Produkte&nbsp;&nbsp;
              <input name="link" type="checkbox" id="link2" value="serv" <? if ($link2=="serv") {echo "checked";} ?>>
              Service&nbsp;&nbsp;
              <input name="link" type="checkbox" id="link3" value="forum" <? if ($link3=="forum") {echo "checked";} ?>>
              Forum</font></td>
          </tr>
          <tr>
            <td align="left" valign="top" background="../../images/background.jpg"><font color="#000000" size="2" face="Arial, Helvetica, sans-serif"><b>Link (Extern) :</b></font></td>
            <td align="left" background="../../images/background.jpg"><input type="text" name="datum" size="30" maxlength="30" value="<? echo $row["link_ex"]; ?>"">
            </td>
          </tr>
          <tr> 
            <td width="16%" background="../../images/background.jpg"><font color="#000000">&nbsp;</font> </td>
            <td align="left" valign="bottom" background="../../images/background.jpg"> 
              <input type="submit" name="submit" value="Save"> 
              &nbsp;&nbsp; <input type="reset" name="reset" value="Edit-Reset"> 
              <!---wenn etwas NEU eingegeben/geaendert wurde, wird es hiermit zurueckgesetzt ! Alles andere bleibt, weil es ja fest eingelesen wurde.--->
              &nbsp;&nbsp; <input type="button" value="Clear All" onClick="clear_form()">
              &nbsp;&nbsp; <input type="button" name="break" value="Abbrechen" onClick="location.href='index.php'">
            </td>

...

Wer auch immer hier durchsteigt :) und mir auf die Spruenge helfen kann, sei bedankt !!!!!!!!!!!!! :wink:
 
Zurück
Oben