[PHP5]Menü Script - Problem bei der Verarbeitung der Formulardaten

Begonnen von spyfan, 25. Februar 2009, 10:33:23

Vorheriges Thema - Nächstes Thema

spyfan

Hallöchen,
ich weiß es ist viel Text, also wer 10 Min. seines Lebens übrig hat..... /uploads/emoticons/icon_e_smile.gif.4a0acefcb917340d2c82e5239c009e6e.gif\" alt=\":)\" />
Mein Problem ähnelt in etwa dem Thread von Sonic-X2001. Thread: http://www.powie.de/cms/forum/showthread.php?id=23410\" rel=\"external nofollow\">http://www.powie.de/cms/forum/showthread.php?id=23410.
Mein Menüscript stammt auch aus PHP4 Zeiten und arbeitete dadurch mit Variablen. Das Powie News Script hab ich alleine geschafft umzuschreiben, es ist also nicht so das ich völlig unbedarft bin. Ich habe aber nur ein praktisches Verständnis für PHP. Beim Menü Script fehlen mir ganz klar die theoretischen Kenntnisse.
(Kleine Randnotiz, dass Script stammt von dem ursprünglichen Website Besitzer der das mal vor 4 Jahren geschrieben hat. Ich hab die Website vor 3 Jahren übernommen und versuche nun das an PHP5 anzupassen.)
Zur Sache....
Datenbank Struktur:
======================
2 Tabellen:
menue_kat
menue_links
menue_kat:
--------------------
id    katname    align    katoz    tz
(kategorie id) (kategoriename) (align bestimmt ob kategorie rechts oder links im menü erscheint) (kategorie ordnungszahl) (trennzeichen 0 oder 1)
menue_links
--------------------
id    name    url    subkat    oz    blank
(link id) (linkname) (url) (enthält die kategorie id der der link zugeordnet ist) (link ordnungszahl) (_blank or _self)
admin.php (liest kategorie und links aus und füllt formular damit)

echo \"
$sqlbefehl = \"Select * from $tab_kat order by katoz\";
$ergebnis  = mysql_query($sqlbefehl, $serverid2);
$count = mysql_num_rows($ergebnis);
while ( $kat = mysql_fetch_array ($ergebnis)){
$dbkatoz = $kat[\'katoz\'];
$dbkatid = $kat[\'id\'];
echo \"katid\";
echo \"katoz:$dbkatoz\";
for($newkatozx=1;$newkatozx$newkatozx\";   }
if ($kat[\'align\'] == \"r\") {$alignn = \"rechts\";}
elseif ($kat[\'align\'] == \"l\") {$alignn = \"links\";}
echo \"\";
 
$sqlbefehl02 = \"Select * from $tab_link where subkat = \'$kat[id]\' order by oz\";
 $ergebnis02  = mysql_query($sqlbefehl02, $serverid2);
 $count02 = mysql_num_rows($ergebnis02);
while ( $link = mysql_fetch_array ($ergebnis02)){
echo \"\";
echo \"$link[oz]\";
for($x=1;$x$x\"; }
echo \"\";

 
 
script.php (speichert unter anderem die anordnung, ich post aus platzgründen nur den relevanten teil /uploads/emoticons/icon_e_wink.gif.fcb053ab2c91cb6224c03a16c6332abf.gif\" alt=\";)\" /> )


if(isset($_REQUEST[\'action\']) && $_REQUEST[\'action\'] == \'goeditrank\') { $action = \'goeditrank\'; }
if ($action == \"goeditrank\")
{
$linkoz = $_POST[\'linkoz\'];
$sqlbefehl = \"Select * from $tab_link\";
$ergebnis  = mysql_query($sqlbefehl, $serverid2);
while ( $link = mysql_fetch_array ($ergebnis)){
$sid = $linkoz[$link[\'id\']];
if ($sid != 0 && $sid != \"\") {
$sqlbefehl02 = \"Update $tab_link SET oz= \'$sid\' where id = \'$link[id]\'\";
$ergebnis02  = mysql_query($sqlbefehl02, $serverid2);
echo \"
\".$sqlbefehl;
echo mysql_error($serverid2);
}
}
$sqlbefehl03 = \"Select * from $tab_kat\";
$ergebnis03  = mysql_query($sqlbefehl03, $serverid2);
while ( $kat = mysql_fetch_array ($ergebnis03)){
$kid = $katoz[$kat[\'id\']];
if ($kid != 0 & $kid != \"\") {
$sqlbefehl04 = \"Update $tab_kat SET katoz= \'$kid\' where id = \'$kat[id]\'\";
$ergebnis04  = mysql_query($sqlbefehl04, $serverid2);
echo \"
\".$sqlbefehl;
echo mysql_error($serverid2);
}
} echo \"fertig.
Menübersicht\"; }

 
 
Mein Problem ist nun, wie bekomme ich die Values aus dem Select  und  in die script.php wenn register_globals off sind?
Im Moment spuckt die script.php folgende fehler aus:
....
Notice: Undefined index: 169 in /home/michaela/htdocs/gta-action/admin/interface/functions/menue/script.php on line 160
Notice: Undefined index: 171 in /home/michaela/htdocs/gta-action/admin/interface/functions/menue/script.php on line 160
Notice: Undefined index: 172 in /home/michaela/htdocs/gta-action/admin/interface/functions/menue/script.php on line 160
Notice: Undefined index: 173 in /home/michaela/htdocs/gta-action/admin/interface/functions/menue/script.php on line 160
......
Hier noch der Post Dump

array(15) { [\"katoz27\"]=>  string(1) \"1\" [\"linkoz\"]=>  array(177) { [2]=>  string(1) \"2\" [186]=>  string(1) \"3\" [189]=>  string(1) \"4\" 
[83]=>  string(1) \"5\" [191]=>  string(1) \"6\" [99]=>  string(1) \"7\" [113]=>  string(1) \"8\" [73]=>  string(1) \"9\" [190]=>  string(1) \"9\"
[89]=>  string(2) \"10\" [94]=>  string(2) \"11\" [111]=>  string(2) \"12\" [67]=>  string(1) \"1\" [46]=>  string(1) \"2\" [103]=>  string(1) \"3\"
[87]=>  string(1) \"4\" [88]=>  string(1) \"5\" [43]=>  string(1) \"6\" [112]=>  string(1) \"7\" [85]=>  string(1) \"8\" [110]=>  string(1) \"9\"
[68]=>  string(2) \"10\" [60]=>  string(2) \"11\" [125]=>  string(2) \"12\" [180]=>  string(2) \"13\" [56]=>  string(2) \"14\" [86]=>  string(2)
\"15\" [66]=>  string(2) \"16\" [10]=>  string(1) \"2\" [6]=>  string(1) \"3\" [129]=>  string(1) \"4\" [39]=>  string(1) \"5\" [41]=>  string(1) \"6\"
[47]=>  string(1) \"7\" [96]=>  string(1) \"8\" [36]=>  string(1) \"9\" [135]=>  string(2) \"13\" [134]=>  string(2) \"14\" [144]=>  string(2) \"15\"
[145]=>  string(2) \"16\" [142]=>  string(2) \"17\" [11]=>  string(2) \"18\" [146]=>  string(2) \"19\" [3]=>  string(2) \"20\" [136]=>  string(2)
\"21\" [143]=>  string(2) \"22\" [140]=>  string(2) \"23\" [137]=>  string(2) \"24\" [148]=>  string(2) \"25\" [106]=>  string(2) \"26\" [107]=>  
string(2) \"27\" [138]=>  string(2) \"28\" [170]=>  string(2) \"29\" [5]=>  string(2) \"30\" [147]=>  string(2) \"31\" [4]=>  string(2) \"32\"
[104]=>  string(1) \"1\" [7]=>  string(1) \"2\" [150]=>  string(1) \"3\" [166]=>  string(1) \"4\" [178]=>  string(1) \"5\" [8]=>  string(1) \"6\"
[37]=>  string(1) \"7\" [44]=>  string(1) \"8\" [35]=>  string(1) \"9\" [75]=>  string(2) \"10\" [9]=>  string(2) \"11\" [17]=>  string(2) \"12\"
[132]=>  string(2) \"13\" [105]=>  string(1) \"1\" [120]=>  string(1) \"2\" [152]=>  string(1) \"3\" [155]=>  string(1) \"4\" [156]=>  string(1) \"5\"
[157]=>  string(1) \"6\" [153]=>  string(1) \"7\" [130]=>  string(1) \"8\" [133]=>  string(1) \"9\" [164]=>  string(2) \"10\" [165]=>  string(2)
\"11\" [128]=>  string(1) \"1\" [124]=>  string(1) \"2\" [188]=>  string(1) \"3\" [187]=>  string(1) \"4\" [185]=>  string(1) \"5\" [184]=>  string(1)\"6\"
[182]=>  string(1) \"7\" [183]=>  string(1) \"8\" [126]=>  string(1) \"9\" [127]=>  string(2) \"10\" [181]=>  string(2) \"11\" [97]=>  
string(1) \"1\" [18]=>  string(1) \"2\" [20]=>  string(1) \"3\" [23]=>  string(1) \"4\" [21]=>  string(1) \"5\" [25]=>  string(1) \"6\" [22]=>  string(1)
\"7\" [19]=>  string(1) \"8\" [71]=>  string(1) \"9\" [58]=>  string(2) \"10\" [63]=>  string(2) \"11\" [64]=>  string(2) \"12\" [62]=>  string(2) \"13\"
[59]=>  string(2) \"14\" [29]=>  string(2) \"15\" [61]=>  string(2) \"16\" [65]=>  string(2) \"17\" [57]=>  string(2) \"18\" [98]=>  string(2) \"19\"
[31]=>  string(2) \"20\" [30]=>  string(2) \"21\" [33]=>  string(2) \"22\" [32]=>  string(2) \"23\" [34]=>  string(2) \"24\" [38]=>  string(2) \"25\"
[45]=>  string(2) \"26\" [100]=>  string(2) \"27\" [93]=>  string(2) \"28\" [101]=>  string(2) \"29\" [102]=>  string(1) \"1\" [12]=>  string(1) \"2\"
[13]=>  string(1) \"3\" [14]=>  string(1) \"4\" [15]=>  string(1) \"5\" [16]=>  string(1) \"6\" [53]=>  string(1) \"7\" [50]=>  string(1) \"8\" [51]=>  
string(1) \"9\" [49]=>  string(2) \"10\" [55]=>  string(2) \"11\" [115]=>  string(2) \"12\" [28]=>  string(2) \"13\" [42]=>  string(2) \"14\" [139]=>  
string(2) \"15\" [26]=>  string(2) \"16\" [27]=>  string(2) \"17\" [40]=>  string(2) \"18\" [116]=>  string(2) \"19\" [117]=>  string(2) \"20\"
[72]=>  string(1) \"1\" [78]=>  string(1) \"2\" [77]=>  string(1) \"3\" [52]=>  string(1) \"4\" [76]=>  string(1) \"5\" [79]=>  string(1) \"6\" [80]=>  
string(1) \"7\" [118]=>  string(1) \"8\" [82]=>  string(1) \"9\" [70]=>  string(1) \"1\" [119]=>  string(1) \"2\" [54]=>  string(1) \"3\" [69]=>  
string(1) \"4\" [74]=>  string(1) \"5\" [81]=>  string(1) \"6\" [122]=>  string(1) \"7\" [91]=>  string(1) \"8\" [92]=>  string(1) \"9\" [123]=>  
string(2) \"10\" [121]=>  string(2) \"11\" [24]=>  string(1) \"1\" [109]=>  string(1) \"1\" [90]=>  string(1) \"2\" [131]=>  string(1) \"3\" [1]=>  
string(1) \"4\" [48]=>  string(1) \"5\" [167]=>  string(1) \"6\" [149]=>  string(1) \"7\" [108]=>  string(1) \"8\" [95]=>  string(1) \"1\" [158]=>  
string(1) \"2\" [159]=>  string(1) \"3\" [160]=>  string(1) \"4\" [161]=>  string(1) \"5\" [163]=>  string(1) \"6\" [162]=>  string(1) \"7\" [168]=>  
string(1) \"8\" } [\"katoz25\"]=>  string(1) \"2\" [\"katoz22\"]=>  string(1) \"3\" [\"katoz24\"]=>  string(1) \"4\" [\"katoz21\"]=>  string(1) \"5\"
[\"katoz23\"]=>  string(1) \"6\" [\"katoz211\"]=>  string(1) \"7\" [\"katoz212\"]=>  string(1) \"8\" [\"katoz26\"]=>  string(1) \"9\" [\"katoz218\"]=>  
string(2) \"10\" [\"katoz214\"]=>  string(2) \"11\" [\"katoz219\"]=>  string(2) \"12\" [\"katoz28\"]=>  string(2) \"13\" [\"Submit\"]=>  

 
 
 
Schonmal viiiielen Dank wer sich die Zeit genommen hat. Wenn bedarf bzw. Interesse besteht könnte ich demjenigen auch mal Zugangsdaten zum Admin Bereich geben das er selbst mal durchklicken kann

Powie

Dein Webserver ist, als Produktionsmaschine, meiner Meinung nach falsch konfiguriert. Er hat höchstes Error Reporting aktiviert und zeigt dir daher Notizen an welche in der Regel gar keinen Fehler an sich verursachen, diese sind aber zum Debuggen geeignet.
Du könntest versuchen das dir :
error_reporting(2039);
Am Anfang eines Scriptes hilft das die Notizen nicht mehr angezeigt werden. Ansonsten bleibt nur dem Webserver beizubringen das er Error Reporting nutzt in der Form:
error_reporting = E_ALL & ~E_NOTICE
ggf. kannst du das in einem Adminpanel machen, oder dein Provider muss es erledigen.

spyfan

ne ne /uploads/emoticons/icon_e_smile.gif.4a0acefcb917340d2c82e5239c009e6e.gif\" alt=\":)\" /> das mit dem error reporting ist schon absicht. ich bin ja beim debuggen /uploads/emoticons/icon_e_wink.gif.fcb053ab2c91cb6224c03a16c6332abf.gif\" alt=\";)\" />
der ausschlaggebene punkt ist, dass ich einfach nicht weiß wie ich die Values, die ja aus vielen zahlen bestehen, im Script verarbeite. Würden die Values nur 0 oder 1 sein können wüßte ich was ich in der script.php schreiben müßte:


if(isset($_POST[\'SELECTNAME\']) && $_POST[\'SELECTNAME\'] != \'\') { $selectname = $_POST[\'SELECTNAME\']; }

 
nach diesem schema habe ich auch dein News Script umgeschrieben damit es mit register globals off funzt /uploads/emoticons/icon_e_wink.gif.fcb053ab2c91cb6224c03a16c6332abf.gif\" alt=\";)\" />
aber manche kategorien enthalten bis zu 20 links und dementsprechend kann jeder link auch eine ordnungszahl bis 20 haben. wie formuliere ich das?
wo register_globals noch ging, war das so formuliert:


$newoz = $linkoz[$link[id]];
if ($newoz != 0 && $sid != \"\") {
$sqlbefehl02 = \"Update $tab_link SET oz= \'$newoz\' where id = \'$link[id]\'\";
$ergebnis02  = mysql_query($sqlbefehl02, $serverid);

 
die variable newoz ist mit einer variablen und einem array einer variable verschachtelt und das macht mir so probleme...
hast du keine andere idee?

Powie

register_globals und error_reporting sind zwei vollkommen unterschiedliche Dinge. Du kannst beides logisch wegcoden, aber wo willst du anfangen?
1. $newoz = $_REQUEST[\'newoz\']; ?

spyfan

ok, hat sich erledigt, ich hatte mit einmal die erleuchtung. ist halt doof, mir fehlt das tehoretische verständnis, ich weiß einfach nur wie ich bestimmte sachen anwenden muss damit ich dieses oder jenes herrausbekommen. jedenfalls funktioniert es nun so


if ($action == \"goeditrank\")
{
var_dump($_POST);
$sqlbefehl = \"Select * from $tab_link\";
$ergebnis  = mysql_query($sqlbefehl, $serverid2);
$count01 = mysql_num_rows($ergebnis02);
while ( $link = mysql_fetch_array ($ergebnis)){
$linkid = $link[\'id\'];
$temp = $_POST[\"linkoz\"][$linkid];
//       echo \"linkid: $link[id] - Value: $temp\";
if ($temp != 0 && $temp != \"\") {
$sqlbefehl02 = \"Update $tab_link SET oz= \'$temp\' where id = \'$link[id]\'\";
$ergebnis02  = mysql_query($sqlbefehl02, $serverid2);
echo \"
$link[name]
\".$sqlbefehl02;
echo mysql_error($serverid2);
}
}

 
 
Der Schlüssel liegt hier:
$temp = $_POST[\"linkoz\"][$linkid];
Diese Syntax brauchte ich^^
P.S.:@Powie: Will bei der Gelegenheit meinen Dank für deine Arbeiten zum Ausdruck bringen. Hab viel an deinen Scripts gelernt.
Das register_globals und error reporting 2 Paar Schuhe sind ist mir klar /uploads/emoticons/icon_e_smile.gif.4a0acefcb917340d2c82e5239c009e6e.gif\" alt=\":)\" /> jedenfalls ist es absicht das error reporting so hoch eingestellt ist
 

Powie

Es ist halt nicht einfach das so schnell zu beantworten, bei dem Thema hier könnte man halt zu vielen Dingen was schreiben, also muss man in der Regel einen gemeinsamen Punkt dinden wo man anfängt /uploads/emoticons/icon_e_smile.gif.4a0acefcb917340d2c82e5239c009e6e.gif\" alt=\":)\" />

all your base are belong to us / Discord