PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP-Formular: Problem!



n00kie
21.11.2011, 09:42
Guten Morgen,

da ich mich lange nicht mehr mit HTML und PHP beschäftigt habe möchte ich langsam mal wieder in die Materie einsteigen. Folgendes Problem, ich habe eine Datenbank und Seite die auf die Datenbank zugreifen kann und ändern "kann". Was aber bisher noch nicht so ganz klappen will. Es wird einfach nicht, dass Ergebnis angezeigt wenn ich denn Submit-Button bestätige. Ich lege hier einfach mal die verschiedenen Sourcecodes bei.

index.php


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" type="text/css" href="css/style.css">
<title>Lehrgangsverwaltung</title>
</head>
<body>
<?php include('mysql.php'); ?>
<table align="center" cellpadding="5" cellspacing="0" width="100px">
<tr name="header">
<td colspan="4"><h1 align="center">Lehrgangsverwaltung</h1></td>
</tr>
<tr name="navigation">
<td align="center"><a href="index.php?id=00"><img src="image/01.jpg" alt="" border="0" /></a></td>
<td align="center"><a href="index.php?id=01"><img src="image/02.jpg" alt="" border="0" /></a></td>
<td align="center"><a href="index.php?id=02"><img src="image/03.jpg" alt="" border="0" /></a></td>
<td align="center"><a href="index.php?id=03"><img src="image/04.jpg" alt="" border="0" /></a></td>
</tr>
<tr name="content">
<td colspan="4"><?php include('content.php'); ?></td>
</tr>
</table>
</body>
</html>
content.php


<?php
<?php
if(isset($_GET+++91;'id'+++93;))
{
switch($_GET+++91;'id'+++93;)
{
case '00':
include('home.php');
break;

case '01':
include('teilnehmer.php');
break;

case '02':
include('lehrgaenge.php');
break;

case '03':
include('dozenten.php');
break;
}
}
?>
teilnehmer.php


<form action="<?php $_SERVER+++91;'PHP_SELF'+++93; ?>" mehtod="POST" type="text/plain">
<table style="overflow: hidden; font-family:arial;" border="0" cellpadding="5" cellspacing="0">
<tr>
<td>TeilnehmerNR: </td>
<td name="teilnehmerNR"><input type="text" name="teilnehmerNR" alt="" /></td>
</tr>
<tr>
<td>Name: </td>
<td name="teilnehmerName"><input type="text" name="teilnehmerName" alt="" /></td>
</tr>
<tr>
<td>PLZ: </td>
<td name="teilnehmerPLZ"><input type="text" name="teilnehmerPLZ" alt="" /></td>
</tr>
<tr>
<td colspan="2" name="suchen">
<input type="submit" value="Suchen" name="Suchen" />
<input type="submit" value="Anzeigen" name="Anzeigen" />
<input type="submit" value="Anlegen" name="Anlegen" />
</td>
</tr>
</table>
</form>
<?php
if(isset($_POST+++91;"Suchen"+++93;))
{
$teilnehmerNR = $_POST+++91;"teilnehmerNR"+++93;;
$teilnehmerName = $_POST+++91;"teilnehmerName"+++93;;
$teilnehmerPLZ = $_POST+++91;"teilnehmerPLZ"+++93;;

$sql = mysql_query("SELECT * FROM teilnehmer WHERE Name = '$teilnehmerName'");

echo "<table border='1'><tr><td>TNr:</td><td>Name:</td><td>PLZ</td></tr>";
while($row = mysql_fetch_array($sql))
{
echo"<tr><td>$row+++91;0+++93;</td><td>$row+++91;1+++93;</td><td>$row+++91;2+++93;</td></tr>";
}
echo "</table>";
}

if(isset($_POST+++91;"Anzeigen"+++93;))
{
$sql = mysql_query("SELECT * FROM teilnehmer");

echo "<table border='1'><tr><td>TNr:</td><td>Name:</td><td>PLZ</td></tr>";
while($row = mysql_fetch_array($sql))
{
echo"<tr><td>$row+++91;0+++93;</td><td>$row+++91;1+++93;</td><td>$row+++91;2+++93;</td></tr>";
}
echo "</table>";
}
?>


*Keine Ahnung warum, aber die eckigen klammern werden hier durch "+++92" etc ersetzt. Also nicht falsches denken.

Hu5eL
21.11.2011, 11:11
hast du mal debug-messages und error-logs angesschaut?
Leider schaffen es die Admins ja nicht diesen Bug mit den Quotes zu beheben.

hast du mal geschaut wie der SQL-Query aussieht? Ob dieser erfolgreich abgesetzt wird?

n00kie
21.11.2011, 14:01
Ja dieser wird erfolgreich abgesetzt, wenn ich ohne das Formular arbeite. Hab ich einen Fehler im Quellcode irgendwo?

Hu5eL
21.11.2011, 14:22
deswegen. mach nen echo im php und schau ob er überhaupt bis uzum execute kommt...
"debuggen"

24ds
21.11.2011, 15:04
pack mal am Anfang des Dokuments ein error_reporting(-1); hin, dann kriegst du alles angezeigt ws es zu meckern gibt ohne logs zu durchforsten

xed
21.11.2011, 15:58
Du inkludierst oben eine mysql.php, dessen Inhalt du allerdings bislang noch nicht veröffentlicht hast. Da du in der teilnehmer.php direkt mit den Querys arbeitest, nehme ich an du hast die Verbindung mit der DB bereits in der mysql.php vorgenommen? Lässt du die erfolgreiche Verbindung in der mysql.php auch überprüfen? Bitte nochmal posten.

Zudem empfehle ich dringend noch mal ein paar Aufzeichnungen zum Thema "Sicherheit in Webanwendungen" zu verschlingen. Ich rede speziell von den unmaskierten SQL Querys und dem PHP_SELF.

n00kie
23.11.2011, 10:54
mysql.php


<?php
$mysqlhost = "localhost"; // MySQL Usernamen angeben
$mysqluser = "root"; // MySQL Usernamen angeben
$mysqlpwd = ""; // MySQL Password angeben
$mysqldb = "itknow"; // Datenbank angeben

$verbindung = mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die("Verbindung zum MySQL-Server ist fehlgeschlagen"); // Stellt die Verbindung zum MySQL Server her

mysql_select_db($mysqldb, $verbindung) or die("Datenbank konnte nicht gefunden werden.");
?>


An der Verbindung, kann es denke ich nicht liegen. Da wenn ich ohne die if-Abfrage arbeite mir z.B. bei "Anzeigen", die Ergebnisse angezeigt werden.

cby
23.11.2011, 12:25
Da wenn ich ohne die if-Abfrage arbeite mir z.B. bei "Anzeigen", die Ergebnisse angezeigt werden.
Hier hast du also deine Lösung. Das if() Statement trifft nicht zu.
Könntest du bitte das Script Nopasten? Hier kann man da ganze nicht wirklich anschauen.