php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 09.01.2008, 01:54  
Neuer Benutzer
 
Registriert seit: 09.01.2008
Beiträge: 17
Darson
Standard Eintrag in DB und Wechsel zu anderer Seite

Hallo, ich hoffe Ihr könnt mir helfen!

Ich möchte über PHP und SQL ein Update in einer DB erreichen. Dies mache ich wie folgt:

Ich habe eine Datei "ergabfrage.php" in der alle Spielbegegnungen als Link angezeigt werden, bei denen noch kein Ergebniss vorliegt. Bei Klick auf einen dieser Link wird auf der nächsten Seite "ergupdate.php" eine Tabelle ausgegeben, die alle Daten dieses Spiels und für die Tore des Heim- und Gastteams jeweils ein Textfeld zur Eingabe enthält. Den ersten Teil der Tabelle habe ich im PHP-Code eingebettet, der zweite Teil ist in HTML-Code geschrieben.

Wie erreiche ich nun beim absenden der eingegebenen Tore das zum einen die neuen Daten in die DB eingetragen werden und das die Seite "ergabfrage.php" wieder aufgerufen wird?

Mache ich es im form-tag über:

PHP-Code:
action="<?php echo( $_SERVER['PHP_SELF']); ?>"
dann ruft sich ja die Seite "ergupdate.php" wieder auf. Zwar werden die Daten in die DB geschrieben, aber ich gelange nicht auf die Seite "ergauswahl.php" zurück.

Wenn ich es wie folgt ändere:

Code:
action="ergauswahl.php"
gelange ich zwar zur gewünschten Seite zurück, aber es werden keine Daten in die Datenbank geschrieben.

Wenn ich nun ['PHP_SELF'] in ['ergausgabe.php'] ändere, wird zwar ein DB-Eintrag gemacht, aber ich gelange nicht zur Seite "ergauswahl.php" zurück. Wo habe ich den Fehler??? Für Denkanstösse bin ich sehr Dankbar.

Hier zu Sicherheit noch mal das gesammte Script (man beachte besonders Zeile 54, wo ich den Fehler vermute):

PHP-Code:

<? include("header.php"); ?>

<?php

include("connect_inc.php");

$abfrage "SELECT * FROM ergebnisse WHERE id =" $_GET['id'];
$ergebnis mysql_query($abfrage);

while (
$row mysql_fetch_object($ergebnis))
      {
      
$id $row->id;
      
$datumen $row->datum;
                  
$teilen explode("-"$datumen);                     // englisches Datum aufteilen
                  
$datum = ($teilen[2].".".$teilen[1].".".$teilen[0]);  // Datum im deutschen Format zusammensetzen
      
$zeit $row->zeit;
      
$veranstalltung $row->veranstalltung;
      
$heim $row->heim;
      
$gast $row->gast;
      
$torheim $row->torheim;
      
$torgast $row->torgast;
      }
      
echo 
"<table border='1!>
        <tr>
          <td>Spiel-ID</td>
          <td>$id</td>
        </tr>
        <tr>
          <td>Datum</td>
          <td>$datum</td>
        </tr>
        <tr>
          <td>Uhrzeit</td>
          <td>$zeit</td>
        </tr>
        <tr>
          <td>Spielart</td>
          <td>$veranstalltung</td>
        </tr>
        <tr>
          <td>Heimteam</td>
          <td>$heim</td>
        </tr>
        <tr>
          <td>G&auml;steteam</td>
          <td>$gast</td>
        </tr>
        <tr>
          <td>Tore Heimteam</td>
          <td>"
;
?>

<form id="ergupdate" name="ergupdate" action="<?php echo( $_SERVER['ergauswahl.php']); ?>" method = "POST">
              <input type="text" name="toreheimneu" size="2" maxlength="2"></td>
        </tr>
        <tr>
          <td>Tore G&auml;steteam</td>
          <td><input type="text" name="toregastneu" size="2" maxlength="2"></td>
        </tr>
        <tr>
          <td><input type="submit" name="senden" value="senden"></td>
          <td><input type="reset" name="loeschen" value="L&ouml;schen"></td>
        </tr>
</table>
<?

      $toreheimneu 
$_POST['toreheimneu'];
      
$toregastneu $_POST['toregastneu'];
      
if (isset(
$_POST['senden'])) {
$eintrag "UPDATE ergebnisse Set torheim = '$toreheimneu', torgast = '$toregastneu' WHERE id ='$id'";
$eintragen mysql_query($eintrag);

}
mysql_close();

?>

<? include("footer.php"); ?>
__________________
MfG Darson
Darson ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 09.01.2008, 07:27  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo Darson,

zunächst ein Herzliches Willkommen und viel Spass bei phpfriend.de!

Um das zu bewerkstelligen ist es sinnvoll im Formular einen Steuerparameter einzuführen, der in der Datei ergupdate.php steuert, ob das Formular angezeigt, oder Daten upgedatet werden müssen. An sich kannst du das mit einem Hidden-Feld lösen und das Formular solange anzeigen, bis der Wert im Hidden-Feld erscheint, den du auch erwartest. Um sicher zu gehen, dass alle URL-Informationen weiterhin vorhanden sind, würde ich vorschlagen du füllst das action-Attribut mit dem Wert $_SERVER['REQUEST_URI']. $_SERVER['ergauswahl.php'] gibt es nicht und in der action steht demnach - falls kein Fehler kommt, was sehr ungewöhnlich wäre - einfach nichts und das Formular wird daher nicht korrekt abgeschickt, oder auf die Datei selbst gepostet.

Ergänze mal den Steuerparameter und ändere die Action, dann sehen wir weiter.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 09.01.2008, 11:53  
Neuer Benutzer
 
Registriert seit: 09.01.2008
Beiträge: 17
Darson
Standard

Danke schon mal für die schnelle Antwort und das willkommen!

Mal sehen, ob ich das richtig verstanden habe. Ich muss also eine weitere Variable angeben, die die Seite enthällt, von der ich gerade zur Seite "ergupdate.php" gekommen bin. Das wäre dann also die Seite "ergauswahl.php".

Müsste das dannso aussehen?

PHP-Code:
$_SERVER['REQUEST_URI'] = $url
und das action-Attribut dann

Code:
action="<?php echo( $_SERVER['REQUEST_URI']); ?>"
Oder liege ich damit komplett falsch?
Wenn ja, dann würde ich mich über eine weitere kleinere Hilfestellung sehr freuen. Habe auch schon in Büchern nach "REQUEST" gesucht, aber da wird davon nur im Zusammenhang mit $_GET, $_POST und $_COOKIE gesprochen.
__________________
MfG Darson
Darson ist offline  
Alt 09.01.2008, 13:51  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Hallo und herzlich willkommen hier im Forum

Formulare baut man sich üblicherweise so zusammen:
http://de.wikipedia.org/wiki/Affenformular
Das heißt sie werden an sich selbst geschickt, damit Fehleingaben korrigiert werden können. Wenn alles korrekt ist, kannst du die Daten eintragen und mit
PHP-Code:
<?php
header
("Location: http://weiter.gehts/hier/lang.html");
exit;
?>
die Weiterleitung durchführen.

http://php.net/header
Zergling-new ist offline  
Alt 09.01.2008, 23:48  
Neuer Benutzer
 
Registriert seit: 09.01.2008
Beiträge: 17
Darson
Standard

Hi Zergling, danke Dir auch für die schnelle Hilfe. Aber wie Du in der Datei sehen kannst, sind nur zwei Eingabefelder vorhanden. Desweiteren, kann nur ich auf diese Dateien zugreifen, da ja nicht jeder die Ergebnisse eingeben darf.Ich wollte doch nur eine Möglichkeit wissen, wie man nach dem senden wieder auf die vorherige Seite zurück kommt, ohne das man einen Zurückbutton oder Link betätigt.
__________________
MfG Darson
Darson ist offline  
Alt 10.01.2008, 00:41  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Zitat:
Aber wie Du in der Datei sehen kannst, sind nur zwei Eingabefelder vorhanden.
Was willst du mir damit sagen?

Zitat:
Desweiteren, kann nur ich auf diese Dateien zugreifen, da ja nicht jeder die Ergebnisse eingeben darf.
Das ist verständlich, dafür gibt es aber Authentifizierungs-Systeme, basierend auf Sessions:
http://php.net/session
oder htaccess.

Zitat:
.Ich wollte doch nur eine Möglichkeit wissen, wie man nach dem senden wieder auf die vorherige Seite zurück kommt
PHP kennt kein Zurück. Es kann wie erwähnt mit header() eine Weiterleitung durchführen, wohin musst du aber explizit sagen. Das heißt für dich: entweder du übergibst die URL dynamisch per Session oder verstecktem Formular-Feld oder aber du legst den Weiterleitungspfad statisch fest.


Wenn dir das nicht hilft verstehe ich dein Problem wohl nocht nicht so ganz. Hast du mein Posting denn überhaupt mit deinem Problem in Zusammenhang bringen können oder reden wir sowieso aneinander vorbei?
Zergling-new ist offline  
Alt 10.01.2008, 01:16  
Neuer Benutzer
 
Registriert seit: 09.01.2008
Beiträge: 17
Darson
Standard

[quote="Zergling"]
Zitat:
Aber wie Du in der Datei sehen kannst, sind nur zwei Eingabefelder vorhanden.
Was willst du mir damit sagen?
Das es dabei von meiner Seite aus keine Fehleingaben geben kann, und ich somit nicht auf Fehler achten muss!

Zitat:
Desweiteren, kann nur ich auf diese Dateien zugreifen, da ja nicht jeder die Ergebnisse eingeben darf.
Das ist verständlich, dafür gibt es aber Authentifizierungs-Systeme, basierend auf Sessions:
http://php.net/session
oder htaccess.
Ob ich dies noch irgendwann mal realisieren kann ist "noch" fraglich!!

Zitat:
Wenn dir das nicht hilft verstehe ich dein Problem wohl nocht nicht so ganz. Hast du mein Posting denn überhaupt mit deinem Problem in Zusammenhang bringen können oder reden wir sowieso aneinander vorbei?
Möglicherweise reden wir aneinander vorbei. Aber das mit dem "Affenformular hab ich glaub ich schon verstanden.
1. Seite Formular erstellen und Prüfroutine bestimmen
2. Dann die Daten per "POST" auf eine andere Seite mit den DB-Eintrag Befehlen schicken und in dieser Datei dann den "header"-Befehl mit einbauen.
Ist dies soweit richtig?

Aber zu dem header hätte ich noch eine Frage. Kann man diesen Befehl mit in den "isset" Bereich rein nehmen, oder bleibt er da ohne Wirkung? Hab glaub ich mal gelesen, das vor einem "header" nix ausgegeben werden darf!
__________________
MfG Darson
Darson ist offline  
Alt 10.01.2008, 08:07  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Darson
Kann man diesen Befehl mit in den "isset" Bereich rein nehmen, oder bleibt er da ohne Wirkung? Hab glaub ich mal gelesen, das vor einem "header" nix ausgegeben werden darf!
Die Einschränkung ist richtig, aber mit isset() (vorausgesetzt ich interpretiere die Bezeichnung "isset" Bereich richtig) gibst du ja auch nichts aus.
__________________
Gruss
L
lazydog ist offline  
Alt 10.01.2008, 09:41  
Neuer Benutzer
 
Registriert seit: 09.01.2008
Beiträge: 17
Darson
Standard

Nein, mit isset gebe ich nix aus. Aber vor dem isset wird ja schon die Tabelle angezeigt. Oder ist das dann egal?

Hab es jetzt einfach mal probiert und den header Befehl mit in den isset-Bereich geschrieben.

Eintrag in DB wird gemacht, kommt dann aber folgende Fehlermeldung!

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\funpic\config.php:2) in C:\xampp\htdocs\funpic\ergupdate.php on line 74

Liegt wohl daran, das vor dem isset-Bereich schon etwas ausgegeben wird!
__________________
MfG Darson
Darson ist offline  
Alt 10.01.2008, 11:28  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Mach halt die Abfrage bevor du die Tabelle ausgibst, die verschwindet ja sowieso, wenn du eine Weiterleitung eingibst.
__________________
Gruss
L
lazydog ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
CURL in Seite einloggen und einen Teil parsen Matt PHP Tipps 2008 8 03.09.2009 22:30
Bei richtiger Eingabe Daten an nächste Seite versenden xx_heidi_xx PHP Tipps 2008 49 27.05.2008 14:56
Menü mit Unterpunkten supertramp Beitragsarchiv 7 18.10.2005 22:40
Eintrag wird nicht eingetragen (Kontrollfunktion lügt?) PHP Tipps 2005-2 0 02.10.2005 12:00
Frame schließen und Eintrag in DB und Wechsel zu anderer Seite workaholic HTML, Usability und Barrierefreiheit 2 06.09.2005 13:36
Kontaktformular, welches auf neue html Seite führt PHP Tipps 2005-2 4 20.07.2005 11:21
PHP News in normale HTML Seite? PHP Tipps 2005-2 5 06.07.2005 19:45
Welche seite (Adresse) rief die aktuelle seite auf? PHP Tipps 2005-2 7 05.07.2005 15:02
Seite in Seite PHP-Fortgeschrittene 3 15.03.2005 19:27
Mit post an weitere Seite oder 2 Seiten übergeben? PHP Tipps 2005 1 02.02.2005 12:16
Formular --> Ergebnis auf anderer Seite anzeigen Jojo1 PHP Tipps 2005 58 01.02.2005 17:13
Neue Seite an einer bestimmten Stelle aufrufen PHP Tipps 2005 3 13.01.2005 10:09
blätterfunktion-limit-letzte seite PHP Tipps 2004-2 2 20.12.2004 23:56
Eine 2te Seite auto matisch in neuem Fenster laden PHP Tipps 2004 4 25.08.2004 14:10
[Erledigt] Formular mit Daten werden auf anderer Seite zusammengefasst PHP Tipps 2004 4 15.08.2004 15:44

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
html form ruft php neue seite, php wechseln zu anderer seite, php action an andere seite schicken, php daten senden und in neues fenser springen, php nach post seite wechseln, php affenformular aktualisierte daten wird nicht angezeigt, php daten aktualisieren automatisch zur vorherigen seite zurück code -button, php skript seite wechseln, vorherige seite php nach wechsel noch angezeigt, php wechsel zur seite, php nach eintrag automatisch auf seite zurück, php script wechsel zu anderer seite, php direkt zu anderer seite wechseln, php zu anderer seite wechseln, php wechsel zu anderer php datei, php auf andere seite wechseln, php andere seite zurück, php neue seite nach 10 einträgen, php termine anderen seite tabellen, php seite wechseln nach eintrag in datenbank

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:14 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.