PHP <FORM> funktioniert nur teilweise

fixxxxxi

Erfahrenes Mitglied
Hallo,

ich habe eine PHP, in welcher Regeln in eine DB geschrieben, bearbeitet und entfernt werden sollen. Das schreiben und entfernen funktiomiert soweit auch, nur das bearbeiten nicht. Ich weiß nicht an was es liegt.

error_reporting(E_ALL); gibt folgende NOTICE-Meldungen aus:

Notice: Undefined index: add in /home/www/tonacht/mainpage/admin/cuprules.php on line 4
Notice: Undefined index: edit in /home/www/tonacht/mainpage/admin/cuprules.php on line 7
Notice: Undefined index: delete in /home/www/tonacht/mainpage/admin/cuprules.php on line 11
Notice: Undefined index: action in /home/www/tonacht/mainpage/admin/cuprules.php on line 18
Notice: Undefined index: action in /home/www/tonacht/mainpage/admin/cuprules.php on line 34

Trotz der Fehlermeldungen, was sich ja auch auf ADD und DELETE bezieht, funktionieren diese beiden Dinge. Meine PHP sieht wie folgt aus:

PHP:
<?php
error_reporting(E_ALL);

if($_POST['add']) {
  safe_query("INSERT INTO ".PREFIX."cup_rules ( value ) values( '".$_POST['value']."' ) ");
}
elseif($_POST['edit']) {
  $rulesID = $_GET['rulesID'];
	safe_query("UPDATE ".PREFIX."cup_rules SET value='".$_POST['value']."' WHERE rulesID='$rulesID'");
}
elseif($_GET['delete']) {
  $rulesID = $_GET['rulesID'];
	
	safe_query("DELETE FROM ".PREFIX."cup_rules WHERE rulesID='$rulesID'");
}

echo'<h2>Regeln</h2>';
if($_GET['action']=="add") {
    echo'<form method="post" action="admincenter.php?site=cuprules">
	     <table cellpadding="4" cellspacing="0">
		 <tr>
		   <td>Regeln:</td>
		   <td><td><textarea name="value" cols="60" rows="10"></textarea></td></td>
		 </tr>
		 <tr>
		   <td>&nbsp;</td>
		   <td><input type="submit" name="add" value="Regel hinzuf³gen"></td>
		 </tr>
		 </table>
		 </form>';
}


elseif ($_GET['action']=="edit") {

  $rulesID = $_GET['rulesID'];
  $ergebnis=safe_query("SELECT * FROM ".PREFIX."cup_rules WHERE rulesID='$rulesID'");
	$ds=mysql_fetch_array($ergebnis);
	
	echo'<form method="post" action="admincenter.php?site=cuprules">
	     <table cellpadding="4" cellspacing="0">
		 <tr>
		   <td>Regel:</td>
		   <td><textarea name="value" cols="60" rows="10">'.$ds['value'].'</textarea></td>
		 </tr>
		 <tr>
		   <td><input type="hidden" value="'.$ds['rulesID'].'"></td>
<td><input type="submit" name="edit" value="Bearbeiten"></td>
		 </tr>
		 </table>
		 </form>';
}
else {
	echo'<input type="button" class="button" onClick="MM_goToURL(\'parent\',\'admincenter.php?site=cuprules&action=add\');return document.MM_returnValue" value="neue Regel"><br><br>';

	$ergebnis=safe_query("SELECT * FROM ".PREFIX."cup_rules ORDER BY rulesID");
	echo'<table width="100%" cellpadding="4" cellspacing="1" bgcolor="#999999">
   		<tr bgcolor="#CCCCCC">
   		<td class="title" align="center">Regeln:</td>
 		<td class="title" align="center" colspan="2">Actions:</td>
   		</tr>
		<tr bgcolor="#FFFFFF"><td colspan="3"></td></tr>';
		
	while($ds=mysql_fetch_array($ergebnis)) {
    	echo'<tr bgcolor="#FFFFFF">
	       		<td>'.$ds['value'].'</td>
		   		<td align="center"><input type="button" class="button" onClick="MM_goToURL(\'parent\',\'admincenter.php?site=cuprules&action=edit&rulesID='.$ds['rulesID'].'\');return document.MM_returnValue" value="edit"></td>
		   		<td align="center"><input type="button" class="button" onClick="MM_confirm(\'Wirklich Regel l÷schen?\', \'admincenter.php?site=cuprules&delete=true&rulesID='.$ds['rulesID'].'\')" value="delete"></td>
		 	</tr>';
	}
	echo'</table>';
}	
?>

Was habe ich bei EDIT falsch gemacht? LG Chris
 
Du musst immer vor der Verwendung von $_GET["var"] prüfen, ob dieser Parameter überhaupt existiert:

PHP:
if (isset($_GET['action']) && $_GET["action"] == 'add') {
  //etc.
}

Ganz am Anfang solltest du anstelle von

$_POST['add'] , $_POST["edit"] etc.

isset($_POST['add']) bzw. isset($_POST["edit"]) abfragen!

Das sind aber Grundlagen, weitere Information findest du kinderleicht über Google und über das Manual!
 
Zuletzt bearbeitet:
Hmmm... Die Fehler(NOTICE)meldungen sind weg - ABER - Das eigentlich Problem, das bei der action EDIT nichts in der DB geändert wird ist dadurch nicht behoben. Wie bereits erwähnt, ADD und DELETE funktionieren einwandfrei, aber bei EDIT passiert eben nichts. Es wird auch keine Fehlermeldung ausgegeben.

Desweitern hab ich derweil etwas an der PHP rumgebastelt, und bekomme nun eine NOTICE:

Notice: Undefined variable: rules_allg in /home/www/tonacht/mainpage/admin/cuprules.php on line 81

PHP:
		$sql_rules_allg = safe_query(" SELECT rulesID, value, typ FROM tonacht_cup_rules WHERE typ = '0' ORDER BY rulesID LIMIT 0 , 30 ");
		$n=1;
		while($row =mysql_fetch_array($sql_rules_allg)) {
			$n%2 ? $bg=BG_1 : $bg=BG_2;
			
			$rules_value=''.$row['value'].'';
				$rules_allg.='
				  <tr style="background-color: rgb(254, 254, 254);" onmouseover="this.style.backgroundColor=\'#E7E7E7\';" onmouseout="this.style.backgroundColor=\'#FEFEFE\';" bgcolor="#fefefe">
            <td border="0" style="border-style: dashed; border-color: rgb(230, 230, 230); border-width: 1px 0px;" width="20" align="top" valign="top" align="center"><p style="margin-left: 20px;">'.$n.'.</p></td>
						<td border="0" style="border-style: dashed; border-color: rgb(230, 230, 230); border-width: 1px 0px;" align="justify"><p style="margin-right: 10px;">'.$rules_value.'</p></td>
            <td align="center"><input type="button" class="button" onClick="MM_goToURL(\'parent\',\'admincenter.php?site=cuprules&action=edit&rulesID='.$row['rulesID'].'\');return document.MM_returnValue" value="edit"></td>
		   		  <td align="center"><input type="button" class="button" onClick="MM_confirm(\'Wirklich Regel l÷schen?\', \'admincenter.php?site=cuprules&delete=true&rulesID='.$row['rulesID'].'\')" value="delete"></td>          
          </tr> ';
      
			$n++;
		}

In Zeile 81 kann der Fehler nicht sein aber ich denke das dies auf
PHP:
$rules_allg.
bezogen ist. Nur wenn ich den "." entferne, wird nicht mehr numerriert sondern nur eins angezeigt.

Aber viel wichtiger ist ersteinmal, das etwas geändert wird, wenn ich auf edit klicke^^
 
Zuletzt bearbeitet:
Füge vor die Schleife $rules_allg = ''; ein. Du kannst keinen String an eine Variable hängen, die noch nicht existiert!

echo mysql_error();

kann dir beim Query helfen!

PS:

PHP:
$rules_value=''.$row['value'].'';
Wirklich sinnvoll dieses ''
 
Stimmt... War doppelt-gemoppelt... Durch das
PHP:
$rules_allg = '';
vor die Schleife, wird aber nur noch eine Regel angezeigt, und nicht mehr alle durchnummeriert. Genau gesagt nur die letzte aus der DB.

PHP:
		$sql_rules_allg = safe_query(" SELECT rulesID, value, typ FROM tonacht_cup_rules WHERE typ = '0' ORDER BY rulesID LIMIT 0 , 30 ");
		$n=1;
		while($row =mysql_fetch_array($sql_rules_allg)) {
			$n%2 ? $bg=BG_1 : $bg=BG_2;
			
				$rules_allg = '';
        $rules_allg.='
				  <tr style="background-color: rgb(254, 254, 254);" onmouseover="this.style.backgroundColor=\'#E7E7E7\';" onmouseout="this.style.backgroundColor=\'#FEFEFE\';" bgcolor="#fefefe">
            <td border="0" style="border-style: dashed; border-color: rgb(230, 230, 230); border-width: 1px 0px;" width="20" align="top" valign="top" align="center"><p style="margin-left: 10px;">'.$n.'.</p></td>
						<td border="0" style="border-style: dashed; border-color: rgb(230, 230, 230); border-width: 1px 0px;" width="500" align="justify"><p style="margin-right: 10px;">'.$row['value'].'</p></td>
            <td align="center"><input type="button" class="button" onClick="MM_goToURL(\'parent\',\'admincenter.php?site=cuprules&action=edit&rulesID='.$row['rulesID'].'\');return document.MM_returnValue" value="bearbeiten"></td>
		   		  <td align="center"><input type="button" class="button" onClick="MM_confirm(\'Wirklich Regel l÷schen?\', \'admincenter.php?site=cuprules&delete=true&rulesID='.$row['rulesID'].'\')" value="l÷schen"></td>          
          </tr> ';
      
			$n++;
		}

Das
PHP:
echo mysql_error();
gibt keinen Fehler aus! Also muss es an irgendwas anderem liegen, aber was?
 
Stimmt... War doppelt-gemoppelt... Durch das
PHP:
$rules_allg = '';
vor die Schleife, wird aber nur noch eine Regel angezeigt, und nicht mehr alle durchnummeriert. Genau gesagt nur die letzte aus der DB.

PHP:
		$sql_rules_allg = safe_query(" SELECT rulesID, value, typ FROM tonacht_cup_rules WHERE typ = '0' ORDER BY rulesID LIMIT 0 , 30 ");
		$n=1;
		while($row =mysql_fetch_array($sql_rules_allg)) {
			$n%2 ? $bg=BG_1 : $bg=BG_2;
			
				$rules_allg = '';
        $rules_allg.='
				  <tr style="background-color: rgb(254, 254, 254);" onmouseover="this.style.backgroundColor=\'#E7E7E7\';" onmouseout="this.style.backgroundColor=\'#FEFEFE\';" bgcolor="#fefefe">
            <td border="0" style="border-style: dashed; border-color: rgb(230, 230, 230); border-width: 1px 0px;" width="20" align="top" valign="top" align="center"><p style="margin-left: 10px;">'.$n.'.</p></td>
						<td border="0" style="border-style: dashed; border-color: rgb(230, 230, 230); border-width: 1px 0px;" width="500" align="justify"><p style="margin-right: 10px;">'.$row['value'].'</p></td>
            <td align="center"><input type="button" class="button" onClick="MM_goToURL(\'parent\',\'admincenter.php?site=cuprules&action=edit&rulesID='.$row['rulesID'].'\');return document.MM_returnValue" value="bearbeiten"></td>
		   		  <td align="center"><input type="button" class="button" onClick="MM_confirm(\'Wirklich Regel l÷schen?\', \'admincenter.php?site=cuprules&delete=true&rulesID='.$row['rulesID'].'\')" value="l÷schen"></td>          
          </tr> ';
      
			$n++;
		}

Ok, bearbeiten kann ich es nun. es hat das
HTML:
name="rulesID"
in der Form gefehlt. Aber mit der Schleife t noch net ganz :P
 
Super... THX - Nun funktioniert alles! Die komplette PHP sieht nun so aus und voll funktionfähig :P

PHP:
<?php
error_reporting(E_ALL);

if (isset($_POST['add'])) {
  safe_query("INSERT INTO ".PREFIX."cup_rules ( value, typ ) values( '".$_POST['value']."', '".$_POST['typ']."' ) ");
}
elseif (isset($_POST['edit'])) {
	safe_query("UPDATE ".PREFIX."cup_rules SET typ='".$_POST['typ']."', value='".$_POST['value']."' WHERE rulesID='".$_POST['rulesID']."'");
}
elseif (isset($_POST['delete'])) {
  $rulesID = $_GET['rulesID'];
	
	safe_query("DELETE FROM ".PREFIX."cup_rules WHERE rulesID='$rulesID'");
}

echo'<h2>Regeln</h2>';
if (isset($_GET['action']) && $_GET["action"] == 'add'){
    echo'<form method="post" action="admincenter.php?site=cuprules">
	     <table cellpadding="4" cellspacing="0">
		 <tr>
		   <td>Regeln:</td>
		   <td><td><textarea name="value" cols="60" rows="10"></textarea></td></td>
		 </tr>
		 <tr>
		   <td>Typ:</td>
		   <td><td><select size="1" name="typ">
		   <option value="0" selected>Allgemeines Turnierreglement</option>
		   <option value="1">Spielspezifisches Turnierreglement</option>
		   </select></td></td>
		 </tr>
		 <tr>
		   <td>Regeln:</td>
		   <td><td><input type="submit" name="add" value="Regel hinzuf³gen"></td></td>
		 </tr>
		 </table>
		 </form>';
}

elseif (isset($_GET['action']) && $_GET["action"] == 'edit') {

  $rulesID = $_GET['rulesID'];
  $ergebnis=safe_query("SELECT * FROM ".PREFIX."cup_rules WHERE rulesID='$rulesID'");
	$ds=mysql_fetch_array($ergebnis);
	
	echo'<form method="post" action="admincenter.php?site=cuprules">
	     <table cellpadding="4" cellspacing="0">
		 <tr>
		   <td>Regeln:</td>
		   <td><td><textarea name="value" cols="60" rows="10">'.$ds['value'].'</textarea></td></td>
		 </tr>
		 <tr>
		   <td>Typ:</td>
		   <td><td><select size="1" name="typ">
		   <option value="0" selected>Allgemeines Turnierreglement</option>
		   <option value="1">Spielspezifisches Turnierreglement</option>
		   </select></td></td>
		 </tr>
		 <tr>
		   <td>Regeln:</td>
		   <td><input type="hidden" name="rulesID" value="'.$ds['rulesID'].'"></td><td><input type="submit" name="edit" value="Regel bearbeiten"></td>
		 </tr>
		 </table>
		 </form>';
}
else {
	echo'<input type="button" class="button" onClick="MM_goToURL(\'parent\',\'admincenter.php?site=cuprules&action=add\');return document.MM_returnValue" value="neue Regel"><br><br>';

		$sql_rules_allg = safe_query(" SELECT rulesID, value, typ FROM ".PREFIX."cup_rules WHERE typ = '0' ORDER BY rulesID LIMIT 0 , 30 ");
		$n=1;
		$rules_allg = '';  
		while($row =mysql_fetch_array($sql_rules_allg)) {
			$n%2 ? $bg=BG_1 : $bg=BG_2;
			
        $rules_allg.='
				  <tr style="background-color: rgb(254, 254, 254);" onmouseover="this.style.backgroundColor=\'#E7E7E7\';" onmouseout="this.style.backgroundColor=\'#FEFEFE\';" bgcolor="#fefefe">
            <td border="0" style="border-style: dashed; border-color: rgb(230, 230, 230); border-width: 1px 0px;" width="20" align="top" valign="top" align="center"><p style="margin-left: 10px;">'.$n.'.</p></td>
						<td border="0" style="border-style: dashed; border-color: rgb(230, 230, 230); border-width: 1px 0px;" width="500" align="justify"><p style="margin-right: 10px;">'.$row['value'].'</p></td>
            <td align="center"><input type="button" class="button" onClick="MM_goToURL(\'parent\',\'admincenter.php?site=cuprules&action=edit&rulesID='.$row['rulesID'].'\');return document.MM_returnValue" value="bearbeiten"></td>
		   		  <td align="center"><input type="button" class="button" onClick="MM_confirm(\'Wirklich Regel l÷schen?\', \'admincenter.php?site=cuprules&delete=true&rulesID='.$row['rulesID'].'\')" value="l÷schen"></td>          
          </tr> ';
      
			$n++;
		}
		
		$sql_rules_spez = safe_query(" SELECT rulesID, value, typ FROM ".PREFIX."cup_rules WHERE typ = '1' ORDER BY rulesID LIMIT 0 , 30 ");
		$n=1;
		$rules_spez = '';  
		while($row =mysql_fetch_array($sql_rules_spez)) {
			$n%2 ? $bg=BG_1 : $bg=BG_2;
			
				$rules_spez.='
				  <tr style="background-color: rgb(254, 254, 254);" onmouseover="this.style.backgroundColor=\'#E7E7E7\';" onmouseout="this.style.backgroundColor=\'#FEFEFE\';" bgcolor="#fefefe">
            <td border="0" style="border-style: dashed; border-color: rgb(230, 230, 230); border-width: 1px 0px;" width="20" align="top" valign="top" align="center"><p style="margin-left: 10px;">'.$n.'.</p></td>
						<td border="0" style="border-style: dashed; border-color: rgb(230, 230, 230); border-width: 1px 0px;" width="500" align="justify"><p style="margin-right: 10px;">'.$row['value'].'</p></td>
						<td align="center"><input type="button" class="button" onClick="MM_goToURL(\'parent\',\'admincenter.php?site=cuprules&action=edit&rulesID='.$row['rulesID'].'\');return document.MM_returnValue" value="bearbeiten"></td>
		   		<td align="center"><input type="button" class="button" onClick="MM_confirm(\'Wirklich Regel l÷schen?\', \'admincenter.php?site=cuprules&delete=true&rulesID='.$row['rulesID'].'\')" value="l÷schen"></td>
          </tr> ';
			
			$n++;
		}
		

	echo'
<table width="95%" cellpadding="2" cellspacing="1" bgcolor="'.$border.'">
	<tr>
		<h2>&nbsp; Allgemeines Turnierreglement</h2>
	</tr>
  <tr> 
    <td bgcolor="'.$pagebg.'"></td>
  </tr>
'.$rules_allg.'   
</table>

<table width="95%" cellpadding="2" cellspacing="1" bgcolor="'.$border.'">
	<tr>
			<h2>&nbsp; Spielspezifisches Turnierreglement</h2>
	</tr>
  <tr> 
    <td bgcolor="'.$pagebg.'"></td>
  </tr>
'.$rules_spez.'    
</table>

';
}	
?>
 
Zurück