Jump to content
Sign in to follow this  
spyfan

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

Recommended Posts

Hallöchen,


ich weiß es ist viel Text, also wer 10 Min. seines Lebens übrig hat..... :)

Mein Problem ähnelt in etwa dem Thread von Sonic-X2001. Thread: 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 ;) )

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

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

ne ne :) das mit dem error reporting ist schon absicht. ich bin ja beim debuggen ;)


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 ;)


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?

Share this post


Link to post
Share on other sites

register_globals und error_reporting sind zwei vollkommen unterschiedliche Dinge. Du kannst beides logisch wegcoden, aber wo willst du anfangen?


1. $newoz = $_REQUEST['newoz']; ?

Share this post


Link to post
Share on other sites

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 :) jedenfalls ist es absicht das error reporting so hoch eingestellt ist


 

Share this post


Link to post
Share on other sites

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 :)

Share this post


Link to post
Share on other sites
Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...