Beispiel für das Abfangen von automatischen Kommentaren von PHP bei nicht gesetzten Variablen:

Beispiel Datenmanagement.php aus Kapitel 4.6:

Wird eine Variable mit $_POST oder $_GET übergeben und wurde dieser kein Wert zugewiesen, so wird ab PHP 5 eine Meldung ausgegeben,
wenn diese Art von Meldungen nicht in der php.ini deaktiviert wurde (unter 'error_reporting').
 
Um dies zu vermeiden, kann man zuvor (mit isset) abfragen, ob Variablen ein Wert zugewiesen wurden. Siehe hierzu Skript 1.

Man kann hier auch die Option
error_reporting(E_STRICT); setzen, damit kein Kommentar in so einem Fall erscheint. Siehe hierzu Skript 2.

Ein solches Problem kann bei Seiten, die sich selbst beim Abschicken eines Formulars aufrufen, vorkommen. Hier sind nämlich beim ersten Aufruf
noch keine Variablen gesetzt. Dies würde dann zu so einer PHP-Meldung führen, obwohl das Programm sonst läuft.


Hier wird zunächst geprüft, ob die Variablen gesetzt wurden (mit isset):

Das Skript 1 (von Datenmanagement.php):

<html>
<head><title>Datenmanagement</title></head>
<body>
<H1>Datenmanagement</H1>

<?php
//error_reporting(E_STRICT);
$link=mysql_connect('localhost','root','');
mysql_select_db("stat");

//Falls dieses Formular bereits abgeschickt wurde, da es sich selbst aufruft !

if(isset($_POST["id"])) {$id=$_POST["id"];} else {$id="";}
if(isset($_POST["geschlecht"])) {$geschlecht=$_POST["geschlecht"];} else {$geschlecht="";}
if(isset($_POST["groesse"])) {$groesse=$_POST["groesse"];} else {$groesse="";}
if(isset($_POST["gewicht"])) {$gewicht=$_POST["gewicht"];} else {$gewicht="";}
if(isset($_POST["alter"])) {$alter=$_POST["alter"];} else {$alter="";}
if(isset($_POST["submit"])) {$submit=$_POST["submit"];} else {$submit="";}
if(isset($_POST["loe"])) {$loeschen=$_POST["loe"];} else {$loe="";}





if(strlen($id)>0){

if(strlen($submit)>0):
$anfrage="update data1 set groesse ='$groesse',alterx='$alter',geschlecht='$geschlecht',gewicht='$gewicht' where id=$id";
$dat0=mysql_query($anfrage);
echo "<br><br> Die Änderung wurde gespeichert!!<br><br>";

elseif(strlen($loeschen)>0):
$anfrage="delete from data1 where id='$id'";
$dat0=mysql_query($anfrage);
echo "<br><br> Der Datensatz wurde gelöscht!!<br><br>";
endif;

}; ?>

<?php

$anfrage="select * from data1";
$ergebnis=mysql_query($anfrage);

$anzahl=mysql_num_rows($ergebnis);
echo "<table border='1'><tr bgcolor='#ccccdd'><td>Datensatznr</td><td>Geschlecht</td><td>Alter</td><td>Größe</td><td>Gewicht</td><td></td></tr>";
while ($zeile = mysql_fetch_row($ergebnis))
{ echo "<tr>
<td><FORM action='Datenmanagement.php' method ='post'>
$zeile[0] <INPUT type='hidden' name='id' value='$zeile[0]' ></td>
<td><INPUT type='text' name='geschlecht' value='$zeile[1]' ></td>
<td><INPUT type='text' name='alter' value='$zeile[2]' ></td>
<td><INPUT type='text' name='groesse' value='$zeile[3]' ></td>
<td><INPUT type='text' name='gewicht' value='$zeile[4]' ></td>
<td><INPUT type='submit' name='submit' value='Ändern'>
<INPUT type='submit' name='loe' value='Löschen'></td>";
echo "</FORM>";
echo "</td></tr>";}
echo "</table><br><br>";

mysql_free_result($ergebnis);
mysql_close($link);
?>

</form><hr>
</body></html>

 



Hier wird
die Meldung deaktiviert (rote Zeile):

Das Skript 2:

<html>
<head><title>Datenmanagement</title></head>
<body>
<H1>Datenmanagement</H1>

<?php
error_reporting(E_STRICT);
$link=mysql_connect('localhost','root','');
mysql_select_db("stat");

//Falls dieses Formular bereits abgeschickt wurde, da es sich selbst aufruft !

$id=$_POST["id"];
$geschlecht=$_POST["geschlecht"];
$groesse=$_POST["groesse"];
$gewicht=$_POST["gewicht"];
$alter=$_POST["alter"];
$submit=$_POST["submit"];
$loeschen=$_POST["loe"];


if(strlen($id)>0){

if(strlen($submit)>0):
$anfrage="update data1 set groesse ='$groesse',alterx='$alter',geschlecht='$geschlecht',gewicht='$gewicht' where id=$id";
$dat0=mysql_query($anfrage);
echo "<br><br> Die Änderung wurde gespeichert!!<br><br>";

elseif(strlen($loeschen)>0):
$anfrage="delete from data1 where id='$id'";
$dat0=mysql_query($anfrage);
echo "<br><br> Der Datensatz wurde gelöscht!!<br><br>";
endif;

}; ?>

<?php

$anfrage="select * from data1";
$ergebnis=mysql_query($anfrage);

$anzahl=mysql_num_rows($ergebnis);
echo "<table border='1'><tr bgcolor='#ccccdd'><td>Datensatznr</td><td>Geschlecht</td><td>Alter</td><td>Größe</td><td>Gewicht</td><td></td></tr>";
while ($zeile = mysql_fetch_row($ergebnis))
{ echo "<tr>
<td><FORM action='Datenmanagement.php' method ='post'>
$zeile[0] <INPUT type='hidden' name='id' value='$zeile[0]' ></td>
<td><INPUT type='text' name='geschlecht' value='$zeile[1]' ></td>
<td><INPUT type='text' name='alter' value='$zeile[2]' ></td>
<td><INPUT type='text' name='groesse' value='$zeile[3]' ></td>
<td><INPUT type='text' name='gewicht' value='$zeile[4]' ></td>
<td><INPUT type='submit' name='submit' value='Ändern'>
<INPUT type='submit' name='loe' value='Löschen'></td>";
echo "</FORM>";
echo "</td></tr>";}
echo "</table><br><br>";

mysql_free_result($ergebnis);
mysql_close($link);
?>

</form><hr>
</body></html>
 

Zur Startseite


Bei Fragen: e-Mail schicken.