refresh nach Dateneingabe

Kropotkin

Mitglied
Hallo.
Ja schon wieder ich. Ich komme einfach nicht weiter.

Ich habe nun (nach mildtätiger Mithilfe von euch) und nach einigen Veränderungen meinerseits folgendes script:

Mein erstes Problem ist nun, dass wenn ein neuer Datensatz eingegeben wurde dieser dann auch automatisch angezeigt wird, ohne dass der User F5 drücken muss.
Es soll übrigens nur ein einziger Datensatz pro user erzeugt werden.
Das zweite Problem ist, dass, wenn ein DS vorhanden dieser bei Aufruf der seite erscheinen soll (macht er, wenn ich neu lade), er änderbar ist und auch eingetragen wird. An dieser Stelle scheitere ich nun auch mit meinem update, bzw ich schaffe es nicht dahin zu kommen. Und das dritte Problem: wie spreche ich die ID des DS an, die ich eigtl. in einem hidden halten möchte ?

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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">
<!--

//Standard-Fehlermeldung
strMsg='Fehler';

arrFields=new Array();
arrFields['Heimathafen']    = new Array(1,/^.{1,20}/,'bitte Heimathafen eintragen!');
arrFields['Bootsname']      = new Array(1,/^.{1,25}/,'Name des Bootes vergessen?');
arrFields['schiffstyp[]']   = new Array(0,'==1','Bitte mind. und max. 1 Schiffstyp wählen');
</script>
<script type="text/javascript" src="YT.js"></script>
<?php
function test()
{echo "TEST";}
//hier musst du die Datenbankverbindung aufbauen!
//ein Beispiel dazu kommt, aber auskommentiert!
$wasda = false;
$bAendern = false;


$link = mysql_connect('localhost', 'root', '');
if (!$link)
{
   die('Verbindung nicht möglich : ' . mysql_error());
}
	// benutze Datenbank usr_web101_1
$db_selected = mysql_select_db('test', $link);
if (!$db_selected)
{
   die ('Kann DB nicht benutzen : ' . mysql_error());
}

//in diese Tabelle werden die Daten geschrieben:
$db_table = "tblStamm";


//wir suchen im Stamm, wenn ein DS da ist, dann darf kein neuer angelegt werden
$sSQL = "SELECT * FROM tblSTAMM LIMIT 1";
$ww = mysql_query($sSQL)
        or die(mysql_error());
        $result = mysql_fetch_array($ww);
$num_rows = mysql_num_rows($ww); 
echo "$num_rows Rows\n";
if ($num_rows > 0) {
$wasda = true;
echo "$num_rows Rows\n";
}
//Formular wurde mit 'speichern' abgeschickt...
if ( $_POST["speichern"] )
{	echo "speichern";

	//Schiffstypen raus, um zu vereinfachen, wennich mal weiss wie man checkboxwerte ANZEIGT, kommen sie wieder...
	

		
//ist es so besser ?
		$query = sprintf("INSERT INTO {$db_table} (Boot_Heimathafen, Boot_Name, Boot_Hersteller, Boot_Laenge, Boot_Breite) VALUES ('%s', '%s', '%s','%s','%s')",
				mysql_real_escape_string($_POST['Heimathafen']),
				mysql_real_escape_string($_POST['Bootsname']),
				mysql_real_escape_string($_POST['Hersteller']),
				mysql_real_escape_string($_POST['Laenge']),
				mysql_real_escape_string($_POST['Breite']));

       mysql_query($query, $link);						
								
	//echo "'{$_POST['Heimathafen']}', '{$_POST['Bootsname']}', '{$_POST['Hersteller']}', '{$_POST['Laenge']}',
	//					'{$_POST['Breite']}', '{$schiffstyp}', '{$_POST['message']}'";
				 
}

// formular wurde mit 'aendern' abgeschickt
if (isset($_POST['$aendern']))
{echo "DS vorhanden und ändern ";
//mysql_query("UPDATE tblStamm (Boot_Heimathafen ='{$_POST['Heimathafen']}' WHERE PK_Stamm = '$_POST['ID']' ") OR PRINT("Fehler beim Eintragen: ".mysql_error()."<br>");
mysql_query("UPDATE tblStamm SET Boot_Heimathafen ='{$_POST['Heimathafen']}' WHERE PK_Stamm = '$_POST['ID']' ") OR PRINT("Fehler beim Eintragen: ".mysql_error()."<br>");
				}
?>
</head>

<body>
<form method="post" name="formular"  onsubmit="return check_form(this)"  action="">
  <table border="0" cellspacing="0" cellpadding="5" summary="formularcheck" width="528">
    <tr>
      <th colspan="2"> Stammdaten <span>(*=Pflichtfeld)</span> die Tabellenstyles m&uuml;ssen &uuml;berarbeitet werden ...</th>
    </tr>
    <tr>
      <td width="188"colspan="1" class="ll"> Heimathafen</td>
      <td width="407"><input type="text" size="16" class="uip" name="Heimathafen" value="<?php if ($wasda){echo $result[3];} ?>" ></td>
    </tr>
    <tr>
      <td class="ll"colspan="1"> Name des Bootes *</td>
      <td width="407"><input type="text" name="Bootsname" size="16" value="<?php if ($wasda){echo $result[2];} ?>"></td>
    </tr>
    <tr>
      <td class="ll"colspan="1"> Hersteller</td>
        <td width="407"><input type="text" name="Hersteller" size="16" value="<?php if ($wasda){echo $result[4];} ?>"></td>
    </tr>
    <tr>
        <td class="ll"colspan="1"> Laenge</td>
      <td width="407"><input type="text" name="Laenge" size="4"></td>
    </tr>
    <tr>
      <td class="ll"colspan="1"> Breite</td>
      <td width="407"><input type="text" size="4" name="Breite"></td>
    </tr>
    
    <tr>
      <td class="ll"colspan="1"> sonstige Mitteilungen <span>(max.100 Zeichen)</span> </td>
      <td><textarea rows="4" cols="40" class="uip" name="message"></textarea></td>
    </tr>
    <tr>
       <td><? if($wasda)    {    ?>
         <input type="submit"  name="aendern" onclick ="test();" value="Modifizieren" />
      <? }else {    ?>
      <input type="submit" name="speichern" value="Einf&uuml;gen" />
      <? }    ?></td>
        <td class="ac"colspan="1"><input name="Reset" type="reset" value="zurücksetzen"><input name="ID" type="text" value="<?php if ($wasda){echo $result[0];} ?>"></td>
    </tr>
  </table>
</form>

</body>
</html>
 
Das erste Problem kann, wie du bereits richtig erkannt hast, mit einer Weiterleitung gelöst werden. Dazu darf allerdings vorher noch keinerlei Ausgabe gesendet worden sein, da sonst der HTTP-Header, der vor den eigentlichen Nutzdaten gesendet wird, nicht mehr geändert werden kann. Das Puffern der Ausgabe kann hierbei helfen.
PHP:
$absUri = 'http'.(isset($_SERVER['HTTPS'])?'s':'').'://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
header('Location: '.$absUri, true, 303);
exit;
Die beiden anderen Probleme kann ich nicht ganz nachvollziehen. Was genau meinst du damit?
 
Zurück