Formular und "PHP_SELF"

Tesei

Grünschnabel
Also als absoluter Neuling auf dem Gebiet PHP arbeite ich seit einiger Zeit an einer Datenbank die Pedigrees von Hunden enthält. Dank dieses Forums bin ich auch schon recht weit gekommen (alleine durch das Lesen). Nun habe ich aber ein Problem bei dem ich nicht weiter komme und hoffe auf Hilfe.

Auf einer Seite werden die Daten des Hundes abgebildet. Nun will ich den Usern die Möglichkeit geben die Daten zu vervollständigen. Also habe ich ein Formular gebastelt nach dem Muster:

erste Spalte Feld,
zweite Spalte alter Wert,
dritte Spalte Formularfelder, die mit den bisherigen Daten ausgefüllt sind.

Zwei Formularfelder werden überprüft: Username und Email. Für das ganze habe ich aus den Tutorials den Beitrag von comenius " Formular-Überprüfung mit Fehlerangabe" benutzt. Funktioniert hat das ganze im Probierstatium einwandfrei. D.h. Aufruf der Datei Kordat.php, die Daten aus der Datenbank ausgelesen mit dem Datensatz Where id = 9 usw. lief prima. Nun habe ich versucht den Datensatz über die _GET-variable aufzurufen
WHERE id = _GET[id] seitdem gehts nicht mehr. Ich vermute das das mit dem "form" aufruf zu tun hat

<form name="kordat" action="<?php echo $_SERVER['PHP_SELF']?>" method="post">

Habt Ihrs verstanden und kann mir jemand helfen?
 
Also der Formularaufruf stimmt so, jedoch solltest du deine id so auslesen:

PHP:
$_GET['id']

Du hast da das $ und die ' vergessen. Des Weiteren würde ich den String so zusammensetzten:

PHP:
$sql = "UPDATE ........ WHERE id = " . $_GET['id']
 
Danke erst mal, habe mich mal wieder blöd ausgedrückt, natürlich erfolgt der Aufruf mit
. ' where h.id = '.$_GET['id'].';

nur folgt dann die Fehlermeldung:

Parse error: parse error, unexpected T_STRING in /mnt/am1/01/685/00000017/htdocs/quamdo/database/kordat.php on line 194 und diese Zeile sieht so aus
<td><?php echo "\t <span class=\"achtung\">".$error['Mittler']."</span>"; ?><input type="text" name="Mittler" size="40" maxlength="50"></td>

Die Fehlermeldung kommt aber erst seid ich den Aufruf der Seite mit einer _Get variablen mache Ohne die Variable läuft das Script hervorragend.

LG Tesei
 
In dieser Zeile kann ich keinen Parse Error finden. Poste doch noch mal ein paar Zeilen weiter nach oben und ein paar Zeilen weiter nach unten deinen Code ;)
 
Also hier das ganze Script:

Code:
<?php
     if(isset($_POST['ueberpruefung']))
  { 
   $allesok = 1; 
 if(empty($_POST['Mittler'])){
  $allesok = 0; 
  $error[Mittler] = "Bitte einen Namen eingeben!";}

  if(empty($_POST['email'])){
  $allesok = 0; 
  $error[email] = "Bitte eine Email eingeben!";} 
 
 }
 if($allesok){ 

       $id = $_POST[id];
	$Hund = $_POST[Hund];
	$Vater = $_POST[Vater];
	$Mutter = $_POST[Mutter];
	$Kennel = $_POST[Kennel];
	$G_datum = $_POST[Wurftag];
	$Geschlecht = $_POST[Geschlecht];
	$Farbe = $_POST[Farbe];
	$Bemerkung = $_POST[Bemerkung];
	$Mittler = $_POST[Mittler];
	$email = $_POST[email];
	$Kommentar = $_POST[Kommentar];

DB Verbindung

Code:
$sql= "INSERT INTO Kordat (id, Hund, Vater, Mutter, Kennel, G_datum, Geschlecht, Farbe, Bemerkung, Mittler, email,
				 Kommentar)
				 VALUES ('$id', '$Hund', '$Vater', '$Mutter', '$Kennel', '$G_datum', '$Geschlecht', '$Farbe', '$Bemerkung', 
				 '$Mittler', '$email', '$Kommentar')";

mysql_query($sql)or die("Einfügen fehlgeschlagen: " . mysql_error());
  }
  
   else
  {
 
  ?>
 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<head>
	<title>Do Kyhi Database</title>
	
<script type="text/javascript">
<!--
if (document.layers)
document.write('\<link rel="stylesheet" type="text/css" href="../css/ohne.css" />');
//fuer Netscape 4
//-->
</script>

<script language="javascript">
	var style = location.search;
	style = style.substr(1,2);

	if(style=="1") {document.write('<link rel="stylesheet" type="text/css" href="../css/druck.css">');}
	if(style=="3") {document.write('<link rel="stylesheet" type="text/css" href="../css/data.css">');}
	</script>
						
    <style type="text/css" media="screen">
		<!-- @import url("../css/data.css");	-->
	</style>
 		
    <style type="text/css" media="print"> 
 			<!-- @import url("../css/druck.css"); -->
	</style>

	<!--[if IE 6]><link rel="stylesheet" type="text/css" media="screen" href="../css/fix-ie6.css" />
    <![endif]-->
	<!--[if IE 6]><link rel="stylesheet" type="text/css" media="print" href="../css/druck.css" />
    <![endif]-->

</head>

<body>

<div id="sitecontainer">
	
	
	<div id="start2"></div>
	<div id="Titel"><strong>Daten-Korrektur</strong></div>
	<div id="Inhalt">Tragen Sie bitte die nötigen Änderungen im Formular ein. Weitere Angaben können Sie im 
	Feld &quot;Kommentar&quot; eingeben. Wenn Sie mit den Eingaben fertig sind, klicken Sie auf den Button "Senden".<br><br>
	Ihre Angaben werden beim jeweils nächsten Update der Datenbank eingepflegt.</div>
	
<?php

DB Anbindung

Code:
$query = 'SELECT h.id as id, h.hund as Hund, h.kennel as Kennel, DATE_FORMAT(h.g_datum, "%d.%m.%Y")as Wurftag, 
			h.farbe as Farbe, h.geschlecht as Geschlecht, 
			h.bemerkung as Bemerkung,
			e.id, e.V as eid, e.vater as Vater, e.M as mid, e.mutter as Mutter'
        . ' From Hund h'
        . ' LEFT JOIN Eltern e ON h.id = e.id'
        . ' where h.id = '.$_GET['id'].';		        			
$result = mysql_query($query) or die("Anfrage fehlgeschlagen: " . mysql_error());


while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
?>
	<div id="kordat">
	<form name="kordat" action="<?php echo $_SERVER['PHP_SELF']?>" method="post">
	<input type="hidden" name="id" value="<?php echo "$line[id]"; ?>">
      <div align="center">
        <table border="0" cellpadding="2">
          <tr>
            <td class="farbe" colspan="2"><strong>Feld</strong></td>
            <td class="farbe" colspan="2"><strong>Daten aus der Datenbank</strong></td>
            <td class="farbe"><strong>Ihre Daten</strong></td>
          </tr>
          <tr>
            <td class="farbe" colspan="2">Hund</td>
            <td colspan="2"><?php echo "$line[Hund]"; ?></td>
 			<td><input type="text" name="Hund" size="40" maxlength="50" value="<?php echo "$line[Hund]"; ?>"></td>\n"; ?>
          </tr>
          <tr>
            <td class="farbe" colspan="2">Vater</td>
            <td colspan="2"><?php echo "$line[Vater]"; ?></td>
            <td><input type="text" name="Vater" size="40" maxlength="50" value="<?php echo "$line[Vater]"; ?>"></td>
          </tr>
          <tr>
            <td class="farbe" colspan="2">Mutter</td>
            <td colspan="2"><?php echo "$line[Mutter]";  ?></td>
            <td><input type="text" name="Mutter" size="40" maxlength="50" value="<?php echo "$line[Mutter]";  ?>"></td>
          </tr>
          <tr>
            <td class="farbe" colspan="2">Kennel</td>
            <td colspan="2"><?php echo "$line[Kennel]";  ?></td>
            <td><input type="text" name="Kennel" size="40" maxlength="50" value="<?php echo "$line[Kennel]"; ?>"></td>
          </tr>
          <tr>
            <td class="farbe" colspan="2">Wurftag</td>
            <td colspan="2"><?php echo "$line[Wurftag]"; ?></td>
            <td><input type="text" name="G_datum" size="40" maxlength="50" value="<?php echo "$line[Wurftag]";  ?>">&nbsp;</td>
          </tr>
          <tr>
            <td class="farbe" colspan="2">Geschlecht</td>
            <td colspan="2"><?php echo "$line[Geschlecht]"; ?></td>
            <td><select name="Geschlecht"><option selected value="<?php echo "$line[Geschlecht]"; ?>">
            <option>Rüde</option><option>Hündin</option>

          </tr>
          <tr>
            <td class="farbe" colspan="2">Farbe</td>
            <td colspan="2"><?php echo "$line[Farbe]";  ?></td>
            <td><input type="text" name="Farbe" size="40" maxlength="50" value="<?php echo "$line[Farbe]";?>"></td>
          </tr>
          <tr>
            <td class="farbe" colspan="2">Bemerkung</td>
            <td colspan="2"><?php echo "$line[Bemerkung]" ; } ?></td>
            <td><textarea rows="5" name="Bemerkung" cols="33"></textarea></td>
          </tr>
          <tr>
            <td colspan="4" style="text-align: right">Ihr Name*:</td>
            <td><?php echo "\t <span class=\"achtung\">".$error['Mittler']."</span>"; ?><input type="text" name="Mittler" size="40" maxlength="50"></td>
          </tr>
          <tr>
            <td colspan="4" style="text-align: right">Ihre E-Mail-Adresse*:</td>
            <td><?php echo "\t <span class=\"achtung\">".$error['email']."</span>"; ?><input type="text" name="email" size="40" maxlength="50"></td>
          </tr>
          <tr>
            <td>
            <p style="text-align: right">Kommentar:</td>
            <td colspan="3"><textarea rows="8" name="Kommentar" cols="27"></textarea></td>
            <td>*Ohne diese Angaben werden die Änderungen
            nicht in 
            die Datenbank übernommen. Ihre Daten 
            werden nicht weitergegeben.</td>
          </tr>
          <tr>
            <td colspan="2">&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>  <input type="hidden" name="ueberpruefung" value="1"> 
            <input type="submit" Name="kordat" value="Senden"></td>
             </tr>
          </form>
        </table>
      </div>
    </div>
    
<div id="ende">
		<li><a href="javascript:history.go(-1)">&raquo; Zu voriger Seite</a></li>
</div>
</div>
 <?php
 // Der Else-Zweig wird geschlossen
  }
  ?>
<?php

mysql_close($link);
?> 

</body>

</html>

Ich glaube das sich _Get mit PHP_SELF nicht verträgt

LG Tesei
 
Das verträgt sich schon, aber beim Array füllen, z.B. $error, da hast du immer die ' vergessen...

$error[Mittler] z.b. anstahh $error['Mittler']...

Es ist jedoch auch besser du würdest es an ein File schicken (auch wenn es das gleiche ist) als PHP_Self zu verwendet. Weil mit PHP_Self wird der ganze QueryString und alles wieder mit übergeben...
 
Vielen Dank noch mal und der Vollständigkeit halber habe ich das Problem - mit Deiner Hilfe" wie folgt gelöst:

Code:
$hid = $_GET[id];
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
?>
	<div id="kordat">
	<form name="kordat" action="<?php echo "kordat.php?id=$hid"; ?>" method="post">
LG Tesei
 
Zurück