Kein eintrag in die Datenbank
ThomasX
- php
Hallo,
ich habe ein Problem mit einem PHP Script
schaut euch mal den Code an (der bereich, in dem ich den fehler vermute ist markiert, habe aber den ganzen code hin, weil er auch wo anders liegen könnte.)
<?php
require("../include/config.php");
require("../include/db_config.php");
$connection = mysql_connect("$dbhost", "$dbuser", "$dbpwd");
if(!$connection) die("<b>Fehler auf der Seite: Es konnte keine Verbindung zur Datenbank hergestellt werden!</b>");
if(! mysql_select_db("$dbname", $connection) ) die("<b>Fehler auf der Seite: Datenbank konnte nicht ausgewählt werden!</b>");
------------ hier liegt eventuell der Fehler: ------------
if(isset($submit))
{
function insert_it($num)
{
mysql_query("INSERT pk_at_data (at_name, at_wirk, at_work_typ, at_typ, at_ap, at_sp, at_genau, at_tm, at_vm, at_tvm_find) VALUES ('$at_name_$num','$at_wirk_$num','$at_wirk_typ_$num','$at_typ_$num','$at_ap_$num','$at_sp_$num','$at_genau_$num','$at_tm_$num','$at_vm_$num','$at_tvm_find_$num')");
}
insert_it("1");
insert_it("2");
insert_it("3");
insert_it("4");
insert_it("5");
}
----------------------------------------------------
require("../tpls/$tpl/header.php");
$num_datas = mysql_num_rows(mysql_query("select * from pk_at_data"));
$newest_data_a = mysql_query("select at_name from pk_at_data order by at_name desc limit 0,1");
$newest_data_b = mysql_query("select at_name from pk_at_data order by at_name desc limit 1,1");
$newest_data_c = mysql_query("select at_name from pk_at_data order by at_name desc limit 2,1");
$at_num_tms = mysql_num_rows(mysql_query("select * from pk_at_data where at_tm != '0'"));
$at_num_vms = mysql_num_rows(mysql_query("select * from pk_at_data where at_vm != '0'"));
echo("<tr>
<td height="25" class="site_box_title" align="center">
<b>Statistiken</b>
</td>
</tr>
<tr>
<td class="row1">
<span class="site_box">
Eingetragene Attacken:<br>
<li>Gesamt: <b>$num_datas von 248</b><br>
<li>Dv. TMs:<b>$at_num_tms von 50</b><br>
<li>Dv. VMs: <b>$at_num_vms von 7</b><br><br>
Die neuesten Einträge sind: ");
while(list($at_name) = mysql_fetch_array($newest_data_a))
{
echo("<li><a href="at_show.php?at_name=$at_name">$at_name</a> ");
}
while(list($at_name) = mysql_fetch_array($newest_data_b))
{
echo("<li><a href="at_show.php?at_name=$at_name">$at_name</a> ");
}
while(list($at_name) = mysql_fetch_array($newest_data_c))
{
echo("<li><a href="at_show.php?at_name=$at_name">$at_name</a>");
}
echo("</td>
</tr>");
require("../tpls/$tpl/body.php");
function start_input($num)
{
echo("<input type="text" class="main_input" name="at_name_$num" style="width: 500px" value="Attackenname"><br>
<input type="text" class="main_input" name="at_wirkung_$num" style="width: 500px" value="Wirkung der Attacke"><br>
<select name="at_wirk_typ_$num" class="main_select" style="width: 500px">
<option value="failed">Art der Wirkung selektieren.
");
$result_at_types = mysql_query("select * from pk_at_types order by at_typ");
while(list($id, $at_typ) = mysql_fetch_array($result_at_types))
{
echo("<option value="at_wirk_typ_$id">$at_typ");
}
echo("</select><br>
<select name="at_typ_$num" class="main_select" style="width: 120px"><option value="failed">Attackentyp
");
$result_at_types = mysql_query("select * from pk_types order by typ");
while(list($id, $typ) = mysql_fetch_array($result_at_types))
{
echo("<option value="at_typ_$id">$typ");
}
echo("</select> <input type="text" class="main_input" name="at_sp_$num" style="width: 120px" value="SP"> <input type="text" class="main_input" name="at_ap_$num" style="width: 123px" value="AP"> <input type="text" class="main_input" name="at_genau_$num" style="width: 123px" value="Genauigkeit (%)"><br>
<input type="text" class="main_input" name="at_tm_$num" style="width: 120px" value="TM Nummer"> <input type="text" class="main_input" name="at_vm_$num" style="width: 120px" value="VM Nummer"> <input type="text" class="main_input" name="at_tvm_find_$num" style="width: 250px" value="TVM Fundort"<br><br><br><br><br>
");
}
echo("<form method="post" action="at_in.php">");
start_input("1");
start_input("2");
start_input("3");
start_input("4");
start_input("5");
echo("<input type="submit" name="submit" class="main_input" value="Eintragen!">");
require("../tpls/$tpl/bottom.php");
?>
Es funktioniert alles so wie es sollte ... außer, dass mysql_query("Insert..."); nicht funktioniert. PHP gibt zwar keinen Fehler aus, jedoch wird in die Datenbank nichts eingetragen. (Die Datenbankverbindung ist richtig, die Variablen werden auch übergeben, und aufs submitfeld habe ich auch gedrückt, sprcih am nur Enter drücken liegt es auch nicht.
Danke im Voraus
Thomas
hi,
<?php
require("../include/config.php");
require("../include/db_config.php");
$connection = mysql_connect("$dbhost", "$dbuser", "$dbpwd");
würd ich so schreiben:
$connection = mysql_connect($dbhost,$dbuser,$dbpwd);
if(!$connection) die("<b>Fehler auf der Seite: Es konnte keine Verbindung zur Datenbank hergestellt werden!</b>");
if(! mysql_select_db("$dbname", $connection) ) die("<b>Fehler auf der Seite: Datenbank konnte nicht ausgewählt werden!</b>");
------------ hier liegt eventuell der Fehler: ------------
if(isset($submit))
{
function insert_it($num)
{
mysql_query("INSERT pk_at_data (at_name, at_wirk, at_work_typ, at_typ, at_ap, at_sp, at_genau, at_tm, at_vm, at_tvm_find) VALUES ('$at_name_$num','$at_wirk_$num','$at_wirk_typ_$num','$at_typ_$num','$at_ap_$num','$at_sp_$num','$at_genau_$num','$at_tm_$num','$at_vm_$num','$at_tvm_find_$num')");
evtl. fehlt das semikolon:
mysql_query("INSERT pk_at_data (at_name, at_wirk, at_work_typ, at_typ, at_ap, at_sp, at_genau, at_tm, at_vm, at_tvm_find) VALUES ('$at_name_$num','$at_wirk_$num','$at_wirk_typ_$num','$at_typ_$num','$at_ap_$num','$at_sp_$num','$at_genau_$num','$at_tm_$num','$at_vm_$num','$at_tvm_find_$num') --> ; <-- ");
}
insert_it("1");
insert_it("2");
insert_it("3");
insert_it("4");
insert_it("5");
}
und lass hier mal die hochkommas weg, also:
insert_it(1);
Mehr find ich jetzt auch nicht, was du aber noch probieren könntest wäre folgendes:
$sql="INSERT pk_at_data (at_name, at_wirk, at_work_typ, at_typ, at_ap, at_sp, at_genau, at_tm, at_vm, at_tvm_find) VALUES ('$at_name_$num','$at_wirk_$num','$at_wirk_typ_$num','$at_typ_$num','$at_ap_$num','$at_sp_$num','$at_genau_$num','$at_tm_$num','$at_vm_$num','$at_tvm_find_$num');";
$result=mysql_query($sql,$connection);
if (!$result) {
echo mysql_error();
}
auch wenn php denkt es ist alles in ordnung brauch mysql das noch lange nicht. so wird dir dann der fehler ausgegeben den mysql stört
gruss
hi,
<?php
require("../include/config.php");
require("../include/db_config.php");
$connection = mysql_connect("$dbhost", "$dbuser", "$dbpwd");
würd ich so schreiben:
$connection = mysql_connect($dbhost,$dbuser,$dbpwd);
if(!$connection) die("<b>Fehler auf der Seite: Es konnte keine Verbindung zur Datenbank hergestellt werden!</b>");
if(! mysql_select_db("$dbname", $connection) ) die("<b>Fehler auf der Seite: Datenbank konnte nicht ausgewählt werden!</b>");
------------ hier liegt eventuell der Fehler: ------------
if(isset($submit))
{
function insert_it($num)
{
mysql_query("INSERT pk_at_data (at_name, at_wirk, at_work_typ, at_typ, at_ap, at_sp, at_genau, at_tm, at_vm, at_tvm_find) VALUES ('$at_name_$num','$at_wirk_$num','$at_wirk_typ_$num','$at_typ_$num','$at_ap_$num','$at_sp_$num','$at_genau_$num','$at_tm_$num','$at_vm_$num','$at_tvm_find_$num')");
evtl. fehlt das semikolon:
mysql_query("INSERT pk_at_data (at_name, at_wirk, at_work_typ, at_typ, at_ap, at_sp, at_genau, at_tm, at_vm, at_tvm_find) VALUES ('$at_name_$num','$at_wirk_$num','$at_wirk_typ_$num','$at_typ_$num','$at_ap_$num','$at_sp_$num','$at_genau_$num','$at_tm_$num','$at_vm_$num','$at_tvm_find_$num') --> ; <-- ");
}
insert_it("1");
insert_it("2");
insert_it("3");
insert_it("4");
insert_it("5");
}
und lass hier mal die hochkommas weg, also:
insert_it(1);
Mehr find ich jetzt auch nicht, was du aber noch probieren könntest wäre folgendes:
$sql="INSERT pk_at_data (at_name, at_wirk, at_work_typ, at_typ, at_ap, at_sp, at_genau, at_tm, at_vm, at_tvm_find) VALUES ('$at_name_$num','$at_wirk_$num','$at_wirk_typ_$num','$at_typ_$num','$at_ap_$num','$at_sp_$num','$at_genau_$num','$at_tm_$num','$at_vm_$num','$at_tvm_find_$num');";
$result=mysql_query($sql,$connection);
if (!$result) {
echo mysql_error();
}
auch wenn php denkt es ist alles in ordnung brauch mysql das noch lange nicht. so wird dir dann der fehler ausgegeben den mysql stört
gruss
Ausgegeben wird als Fehler "Unknown column 'at_wirk' in 'field list' " ...
Hi,
Ausgegeben wird als Fehler "Unknown column 'at_wirk' in 'field list' " ...
Nun, das deutet darauf hin dass er diese Tabellenspalte nicht findet. Gibt es diese Column wirklich in Deinem Table (oder heisst sie evtl at_work??)
Gruss, Mel
Hi,
Ausgegeben wird als Fehler "Unknown column 'at_wirk' in 'field list' " ...
Nun, das deutet darauf hin dass er diese Tabellenspalte nicht findet. Gibt es diese Column wirklich in Deinem Table (oder heisst sie evtl at_work??)
Gruss, Mel
Danke das wars mehr oder weniger ...
hatte wohl ein Brett vor den Augen ;-)
habe mich in der DB "etwas" vertippt
hi
das heisst nur das in deiner datenbank pk_at_data kein feld mit dem namen at_wirk existiert
gruss
ralf
Huhu Thomas
------------ hier liegt eventuell der Fehler: ------------
if(isset($submit))
{
function insert_it($num)
{
mysql_query("INSERT pk_at_data (at_name, at_wirk, at_work_typ, at_typ, at_ap, at_sp, at_genau, at_tm, at_vm, at_tvm_find) VALUES ('$at_name_$num','$at_wirk_$num','$at_wirk_typ_$num','$at_typ_$num','$at_ap_$num','$at_sp_$num','$at_genau_$num','$at_tm_$num','$at_vm_$num','$at_tvm_find_$num')");
}
insert_it("1");
insert_it("2");
insert_it("3");
insert_it("4");
insert_it("5");
}
Innerhalb der Funktion insert_it sind die Variablen $at_name etc. alle undefiniert, da sie nicht übergeben werden.
(Stichwort Gültigkeitsbereich von Variablen)
Auch finde ich die Platzierung der Funktion innerhalb einer if-Bedingung eher unglücklich und auch unüblich.
Es ist in jedem Fall besser die Funktionen sauber von der Programmlogik zu trennen.
Viele Grüße
lulu
Hallo Thomas
Es funktioniert alles so wie es sollte ... außer, dass mysql_query("Insert..."); nicht funktioniert. PHP gibt zwar keinen Fehler aus, jedoch wird in die Datenbank nichts eingetragen. (Die Datenbankverbindung ist richtig, die Variablen werden auch übergeben, und aufs submitfeld habe ich auch gedrückt, sprcih am nur Enter drücken liegt es auch nicht.
Hast Du Deine Datenbankabfrage ("insert...") schon mal mit echo ausgegeben?
viele Grüsse
Kerstin
Hallo,
<ganze Mail weggeschnitten>
Wenn ich mich nicht irre, heißt das ja "insert INTO" und nicht nur "insert".
Grüße,
Christian