Moin!
Hab hier ein mysteriöses Problem:
Ich hab mal eine Buchverwaltung angelegt, wo man Bücher per PHP-Skript (also Formular) in die Datenbank "book", Tabelle "books" eintragen kann. Funktionierte bislang.
Dann hab ich die Datenbank DVD mit der Tabelle movie angelegt und wollte entsprechend nur die Variablen, etc. abändern, aber es werden keine Daten an die DB übergeben bzw. in die Tabelle reingeschrieben.
Ich hab jede einzelne Zeile gecheckt, woran es liegen könnte, aber komme nicht weiter.
Hier der Code der php:
<?php
include('database.inc.php');
$detail_action = 'change';
$detail_actiontext = 'Ändern';
if ($_SERVER['REQUEST_METHOD']=='GET' && isset($_GET['action']))
{
switch ($_GET['action'])
{
case 'new':
$detail_action = 'new';
$detail_actiontext = 'Erfassen';
break;
}
}
if ($_SERVER['REQUEST_METHOD']=='POST' && isset($_POST['action']))
{
switch ($_POST['action'])
{
case 'new':
$mysqli->query("INSERT INTO movie
(id, dvdid, produktionsjahr, film_cinema_release)
VALUES ('{$_POST['dvd_dvdid']}',
'{$_POST['dvd_produktionsjahr']}',
'{$_POST['dvd_film_cinema_release']}',
)");
break;
case 'change':
$mysqli->query("UPDATE movie SET
dvdid='{$_POST['dvd_dvdid']}',
produktionsjahr='{$_POST['dvd_produktionsjahr']}',
film_cinema_release='{$_POST['dvd_film_cinema_release']}',
WHERE id = {$_POST['id']}");
break;
}
}
$query = $mysqli->query("SELECT * FROM movie");
while($arr = $query->fetch_assoc())
{
$movie[] = $arr;
}
// Details abrufen, wenn gefordert
if (isset($_GET['id']))
{
$detail = $query->fetch_assoc();
//Diese Zeile funktioniert nicht!!
$detail_id = $detail['id'];
$detail_dvdid = $detail['dvdid'];
$detail_produktionsjahr= $detail['produktionsjahr'];
$detail_film_cinema_release = $detail['film_cinema_release'];
}
?>
Hier der HTML-Auszug:
<td>
<a href="http://localhost/index1.php?TEMPLATE=buecher&id={$movie:id}&action=show">
Details
</a>
</td>
</tr>
<!-- #ENDREPEAT:movie -->
</table>
<a href="http://localhost/index1.php?TEMPLATE=buecher&action=new">Neues Buch erfassen</
a>
<h3>Ändern / Erfassen</h3>
<form action="http://localhost/index1.php?TEMPLATE=buecher" method="post">
<input type="hidden" name="action" value="{$detail_action}" />
<input type="hidden" name="id" value="{$detail_id}" />
<table border="1" width="400">
<caption style="font-weight:bold">CD-Daten</caption>
<tr>
<td>
CD-ID:
</td>
<td>
<input type="text" name="dvd_dvdid" value="{$detail_dvdid}" size="8" maxlength="8"/>
</td>
</tr>
<tr>
<td>
produktionsjahrnummer:
</td>
<td>
<input type="text" name="dvd_produktionsjahr" value="{$detail_produktionsjahr}" size="3" maxlength="3"/>
</td>
</tr>
<tr>
<td>
film_cinema_release:
</td>
<td>
<input type="text" name="dvd_film_cinema_release" value="{$detail_film_cinema_release}" size="70"/>
</td>
</tr>
<tr>
<td>
</td>
<td>
<input type="submit" value="{$detail_actiontext}" />
</td>
</tr>
</table>
</form>
</body>
</html>
Die Ausgabe mit
if($_POST){
echo'<pre>',print_r($_POST),'<pre>';
}
ergibt
--------------------
Array
(
[action] => new
[id] =>
[dvd_dvdid] => 1
[dvd_produktionsjahr] => 9 (trägt in der DB dann 2009 ein)
[dvd_film_cinema_release] => 9 (trägt in der DB dann 2009 ein)
)
1
--------------------
id ist in der DB auf auto_increment gesetzt und muss demnach keinen Wert übergeben.
Hab die Daten auch mal direkt bei phpmyadmin in die MySQL-DB geschrieben, ob es irgendwo Fehler gibt und aus dem Grund der ganze Datensatz nicht geschrieben wird, aber dem ist nicht so. Bei der direkten Eingabe wird von der DB alles sauber eingetragen.
Sprich: Alle Bedingungen sind so, wie bei der DB book, Tabelle books auch - nur da läufts und bei der DVD movie läufts nicht.
Muss irgendwo noch was geswitcht werden, bzw. muss eine Grundeinstellung noch irgendwo vorgenommen werden?
Für jede Hilfe besten Dank!