menüpunkt freischalten nur 3 mal möglich dann SQL-Fehler

nero_85

Erfahrenes Mitglied
Menüpunkt freischalten nur 3 mal möglich; dann SQL-Fehler

Hi Leute!
Ich mal wieder!

Mein Problem ist diesmal ganz komisch! Ich soll einen Produktkatalog entwerfen, der auch ohne hilfe eines Webmasters gewartet werden kann, d.h. soll auch ein Adminbereich rein! Soweit kein Problem. Das ganze läuft auf IIS-Server mit MySql und PHP 4.3.11!

Im Grunde geht es bei meinem Problem um die Navigation! Man soll die einzellnen Links aktivieren und deaktivieren können! Also man hat 6 Menügruppen in denen 11 Rubriken unterschiedlich aufgeteilt sind (mal 3 in einer Gruppe, mal 1 in einer Gruppe). Ich bin noch Anfänger was PHP mit MySQL angeht, also bitte kritisiert mich nicht wenn das ganze ein bisschen umständlich gemacht wurde.

Ich hab jetzt 2 Tabellen für die Navi erstellt:

Tabelle "rubriken":
Code:
rubrik_ID | rubrik_name | rubrik_name_e | rubrik_pic | men_ID | rubrik_vis

rubrik_ID ist der Primary-Key und hat auto_increment. In rubrik_vis kommt nur entweder 1 oder 0 (aktiv oder inaktiv) und men_ID ist mit der spalte men_ID von folgender Tabelle "verbunden":

Tabelle "menu_visible":
Code:
men_ID | men_name | men_value

men_ID ist der Primary-Key und hat auto_increment, men_value ist entweder 1 oder 0 (aktiv oder inaktiv)

Mein Problem ist nun (momentan hab ich nur das Aktivierungs-Script gemacht), dass ich nur 3 Links aktivieren kann, und danach bekomme ich nur die Fehlermeldung, dass mysql_fetch_array: supplied argument keine gültige MySQL-result-resource ist!

Zusätzliche angaben die zur schnelleren Fehlerfindung beitragen könnten:

  • Das ganze wird in die Datei "admin.php" includet, welche wiederum in die "index.php" datei includet wird.
  • Genannte "admin.php"-Datei beinhaltet die Verbindungsdaten zur Datenbank.
  • Die ersten 3 mal haben die variable $_POST['add'] und die variable $add_ID den wert 1, 2 oder 3 danach bleibt sie leer.

Hier noch das Script:

PHP:
if(!isset($_POST['add'])){//abfrage ob das formular abgeschickt wurde; ist es noch nicht abgeschickt worden, dann...

	echo "<form method='post' action='index.php?".$new_qs."&rel=1'><select name='add'";//start des formulars und des select-menüs
  
	for($x = 0;$x < 6; $x++){//for-schleife für die sechs menükategorien
		if($x == 1){
			$optgroup_label="radialrollenlager";//definition des namens der optionsgruppe 1
		}
		elseif($x == 2){
			$optgroup_label="axialrollenlager";//definition des namens der optionsgruppe 2
		}
		elseif($x == 3){
			$optgroup_label="axialkugellager";//definition des namens der optionsgruppe 3
		}
		elseif($x == 4){
			$optgroup_label="komb.-ax.-rad.-lager";//definition des namens der optionsgruppe 4
		}
		elseif($x == 5){
			$optgroup_label="laufrollen";//definition des namens der optionsgruppe 5
		}
		elseif($x == 6){
			$optgroup_label="sonstiges";//definition des namens der optionsgruppe 6
		}
		echo "<optgroup label='".$optgroup_label."'>";//start der optionsgruppe
		$sql_add_rub_list="SELECT * FROM rubriken WHERE rubrik_vis='0' AND men_ID=".$x;//anweisung zum auslesen der unaktivierten rubriken aus der datenbank
		$add_rub_list_result=mysql_query($sql_add_rub_list);//ausführen der oben angeführten anweisung
		while($arl_r=mysql_fetch_array($add_rub_list_result)){//while-schleife weil mehrere ergebnisse erwartet werden
			echo "<option value='".$arl_r['rubrik_ID']."'>".$arl_r['rubrik_name']."</option>";//definition der werte und der namen der auswahlpunkte
		}	
		echo "</optgroup>";//ende der optionsgruppe
	}
	echo "</select><input type='submit' value='".$submit_freischalt."'></form>";//ende des select-menüs; button zum abschicken des formulars; ende des formulars.
}
							
							
							
							
elseif(isset($_POST['add'])){//abrage ob das formular abgeschickt wurde; ist es abgeschickt worden, dann...
							
	$add_ID=$_POST['add'];//übernehmen des wertes aus dem formular und übergabe in die variable "$add_ID"
									
	$SQL_cont_vis_men="SELECT * FROM menu_visible,rubriken WHERE rubriken.men_ID=menu_visible.men_ID AND rubriken.rubrik_ID=".$add_ID;//anweisung zum auslesen aller rubriken die die rubrik_ID von $add_ID haben und die gleiche men_ID haben
	$cont_vis_men_result=mysql_query($SQL_cont_vis_men);//ausführen der oben angeführten anweisung
	$cvm_r=mysql_fetch_array($cont_vis_men_result);//anweisungsergebnis in array packen
	
	if($cvm_r['men_value'] == "0"){
	
		$SQL_set_menu_visible="UPDATE menu_visible SET  men_value='1' WHERE men_ID=".$cvm_r['men_ID'];
		$set_menu_visible_result=mysql_query($SQL_set_menu_visible);
		if($set_menu_visible_result){
			echo "";
		}
		else{
			die("FATAL ERROR: could'nt make menu visible on line <b>60</b> in <b>inh_admin/rubrik_add.php<b>");
		}
	
	}

	$SQL_set_rubrik_visible="UPDATE rubriken SET rubrik_vis='1' WHERE rubrik_ID=".$add_ID;
	$set_rubrik_visible_result=mysql_query($SQL_set_rubrik_visible);
	if($set_rubrik_visible_result){
		echo "";
	}
	else{
			die("FATAL ERROR: could'nt make rubric visible on line <b>72</b> in <b>inh_admin/rubrik_add.php<b>");
	}

}

Ich hoffe, dass das Problem einigermaßenb gut beschrieben ist, und dass sich irgendjemand, auch wenn der Post verdammt lang ist, damit auseinander setzt, denn ich bin bereits gewaltigst am verzweifeln!! :confused: :(

Danke im Vorraus

cya
nero_85
 
Zuletzt bearbeitet:
Tach,

ich weiß nicht ob ichs kapiert habe, ABER ... kann es sein das in deiner Tabelle menu_visible nur 3 Werte stehen?

Wenn ja würde ich die SQL Anweisung so schreiben:
PHP:
$SQL_cont_vis_men = "SELECT * 
                     FROM rubriken 
                     LEFT JOIN menu_visible ON menu_visible.men_ID = rubriken.men_ID
                     WHERE rubriken.rubrik_ID=".$add_ID;
Schreib mal obs funktioniert.

Grüße Sven
 
Also danke erstmal, dass du dich durchgeackert hast, aber das wars leider nicht!

Ich hab das ganze nun 1000mal durchgesehen und auch viel ausprobiert! Das skurile an der Geschichte ist, dass die $_POST['add'] Variable leer ist! Aber nur ab dem 4. mal wo ich versuche einen Link zum Menü hinzuzufügen!!
(!) :confused:
cya
 
Komisch...

Häng doch mal ein "or die(mysql_errno() . ": " . mysql_error() . "\n")" an die mysq_query() Funktion um zu sehen was da los ist.

Wenn die $_POST['add'] Variable nicht gefüllt ist, muß doch irgendwas im HTML Code nicht stimmen. oder?
Wie sieht denn der fertig generierte HTML Code des Formulars aus?

Sven
 
Ändert nichts! ich hatte eine Syntax-Fehlermeldung und hab diese korrigiert. Es funktioniert trotzdem nicht! jetzt gibt er mir meine eigene Fehlermeldung aus. Und der Grund ist die fehlende Variable! Da bin ich mir jetzt zu 1000% sicher. Und der HTML-Code ist auch nicht falsch soweit ich das beurteilen konnte:

HTML:
<table cellspacing="0" cellpadding="4" width="95%">
	<tr>
		<td class="tddark">
			<b>rubrik freischalten</b>
		</td>
	</tr>
	<tr class="trcolor1">
		<td class="tdlist">

			<form method='post' action='index.php?s=0&site_ID=admin&la=de&PHPSESSID=3e839e49a43355c07ac3643c80e0b6dc&rel=1'>
			
			<select name='add'>
			  <optgroup label='radialrollenlager'>
			  </optgroup>

			  <optgroup label='axialrollenlager'>
			  </optgroup>

			  <optgroup label='axialkugellager'>
			    <option value="7">name der rubrik7</option>
			  </optgroup>

			  <optgroup label='komb.-ax.-rad.-lager'>
			    <option value="5">name der rubrik5</option>
			    <option value="6">name der rubrik6</option>
			  </optgroup><optgroup label='laufrollen'>
			    <option value="8">name der rubrik8</option>
			    <option value="9">name der rubrik9</option>
			  </optgroup>
			</select>
			<input type='submit' value='freischalten'>
			
			</form>
		</td>
	</tr>
</table>

echt schräg die sache :confused:
 

Neue Beiträge

Zurück