Fehlende Button - Funktion

Alles, was MariaDB und MySQL betrifft, kann hier besprochen werden.

Fehlende Button - Funktion

Postby Jamma » 11. May 2007 12:54

Hallo!

Also, ich hab (mal wieder) ein Problem.
Der XAMPP - Apache - Server läuft einwandfrei bei mir.
Nur sieht es bei mir so aus, dass manche Buttons auf Internetseiten nicht das tun, was sie sollen.

Ich hab hier eine Website, bei der es um Patienten und Veranstaltungen geht.
Will ich einen neuen Patienten hinzufügen, gebe alle Daten ein und klicke auf den "Hinzufügen" - Button. passiert nix.
Die gleiche Seite wird noch einmal aufgebaut, nur ohne Daten.
Den Patienten, den ich eingetragen habe, sehe ich dann aber auch nicht in der Liste bei den anderen, die schon da sind.

Das liegt bestimmt irgendwie an der MYSQL - DB.
Ich bin mir aber nicht sicher.

Kann mir jemand helfen?
Ich bräuchte die Antwort ganz dringend! :oops:
Jamma
 
Posts: 20
Joined: 07. May 2007 08:01

Postby KingCrunch » 11. May 2007 13:59

Das liegt bestimmt irgendwie an der MYSQL - DB.
Wie kommst du darauf? Ich frage, weil der von der geschilderte "Fehler" viele Ursachen haben kann:

- HTML:
-- Falsches Target im Formular
- PHP
-- Falsche Auswertung der post-Daten (zB nicht über $_POST)
......

Also paar mehr Hinweise (inkl Debugging-Infos) wären nett. Steht am Anfang der Datei error_reporting(E_ALL)?
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby Jamma » 14. May 2007 07:38

KingCrunch wrote:Wie kommst du darauf?


Na ja, alles funktioniert soweit an der Website, nur eben dieser Button nicht.
Da es ja um Patienten geht, habe ich die Befürchtung, dass der Button irgendwie nicht auf die Datenbank da zugreift.

Da ich überhaupt keine Ahnung davon habe, hat mir mein Chef gesagt, dass ich die Seiten mit einem PHP Editor einlesen soll.

Ich hab die nun damit geöffnet, aber was nun?
Geändert hat sich trotzdem nichts.
Was soll ich daran noch umändern?

Mit dem Browser kann ich alle Seiten ansehen.
Das ist kein Problem...es ist wirklich nur der Button, der nicht funktioniert.
Ich habe die Dateien noch in einem anderen Ordner und wenn ich sie da öffne, kommt nur sowas:

Code: Select all
'; echo 'Eintrag vom: '.date(' d.m.y, H:i:s', $form_UStamp).' Uhr

'; } // Meldungen fur neuen und Aktualisierten eintrag if ($form_sended == 1 and $loadDataset == 0 and !($form_eintrag_loeschen_a and $form_eintrag_loeschen_b and $form_eintrag_loeschen_c)) { echo '
Neuer Patient wurde eingetragen
'; echo ''; } if ($form_sended == 1 and $loadDataset <> 0 and !($form_eintrag_loeschen_a and $form_eintrag_loeschen_b and $form_eintrag_loeschen_c)) { echo '
Patientendaten wurde aktualisiert
'; echo ''; } if ($form_sended == 1 and $loadDataset <> 0 and $form_eintrag_loeschen_a and $form_eintrag_loeschen_b and $form_eintrag_loeschen_c) { echo '


-> Das wäre jetzt der Anfang von der einen Seite mit dem Button.
Jamma
 
Posts: 20
Joined: 07. May 2007 08:01

Postby KingCrunch » 14. May 2007 10:07

register_globals

KingCrunch wrote:Also paar mehr Hinweise (inkl Debugging-Infos) wären nett. Steht am Anfang der Datei error_reporting(E_ALL)?

-.-
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby Jamma » 14. May 2007 10:34

Ich hab jetzt in der php.ini "register_globals = On" gesetzt.
Geändert hat sich nix, der Button geht immer noch nicht.

Außerdem steht in der php.ini das bei "error_reporting":

Code: Select all
...
;error_reporting = E_ALL & ~E_NOTICE
...
;error_reporting = E_ALL & ~E_NOTICE | E_STRICT
...
;error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR
...
error_reporting  =  E_ALL & ~E_NOTICE
...


Liegt das vielleicht daran, dass nicht alles aktiv ist?
Jamma
 
Posts: 20
Joined: 07. May 2007 08:01

Postby kschroeder » 14. May 2007 12:41

Es scheint mir, als wenn Du Dich noch nicht sehr lange mit dem Thema beschäftigen musst.

Um den Fehler zu finden, sollte schon ein wenig Grundwissen über DB und PHP vorhanden sein.

So wie es scheint, ist das PHP-Script nicht sehr informativ programmiert worden. Das Script gibt keine Fehlermeldung aus und scheint immer davon auszugehen, dass alles funktioniert.

Soweit ich das richtig verstanden habe, funktioniert der Button an sich schonmal. Die Seite wird ja nochmal aufgebaut. Nur dass eben im Hintergrund der Eintrag nicht gespeichert wird.

Das kann jetzt zahlreiche Gründe haben, die wir leider nicht erkennen können, da keine Fehlermeldung erscheint.

Wie schon geschrieben wurde, kann es sein, dass die Formulardaten nicht korrekt übergeben wurden. Es kann auch sein, dass eingegebene Daten nicht dem Format in der DB entsprechen (z.b. Text in ein Feld speichern, dass eine Zahl erwartet) oder der Zugriff auf die DB ist fälschlicherweise nicht erlaubt, oder oder oder... Und jeder dieser Möglichkeiten kann auch wieder mehrere Ursachen haben.

Wenn Du ein wenig PHP kannst (was ich allerdings ein wenig bezweifle, sorry) dann kannst Du an verschiedenen Stellen eigene Echo-Anweisungen einfügen, die den Fehler eingrenzen könnten.
z.B. die Stelle suchen, wo die DB geöffnet wird und anzeigen lassen, ob das Öffnen funktioniert hat, oder nicht.
Oder den erzeugten SQL-Befehl anzeigen lassen, dann sieht man ob die Werte richtig rüberkommen und ob der Befehl syntaktisch korrekt ist.

Vielleicht postest Du mal die gesamte Datei, dann könnte Dir einer von uns die Debug-Zeilen einbauen. Allerdings solltest Du sicher sein, dass keine Passwörter oder ähnlich brisantes in der Datei steht.
kschroeder
 
Posts: 254
Joined: 11. May 2007 13:33

Postby Jamma » 14. May 2007 13:03

kschroeder wrote:Es scheint mir, als wenn Du Dich noch nicht sehr lange mit dem Thema beschäftigen musst.


Nun ja, seit ein paar Wochen sitze ich schon dran und komme 0 weiter.
Ich hatte noch nie PHP und weiß auch überhaupt nicht, wie das alles funktioniert, aber ich muss das machen.
Ausgesucht hab ich mir das nicht.

Hier mal der Teil der Datei, der irgendwie noch umgeschrieben werden muss.
Alles andere funktioniert ja, nur eben das Speichern nicht.

Code: Select all
<table>
<tr>
<td valign="top" width="200"><span class="table_Title">Absenden:</span></td>
<td>
<input type="hidden" name="form_sended" value="1">
<input type="hidden" name="form_UStamp" value="0">
<input type="submit" name="submit_button" value="Neue Veranstaltung anlegen"></td>
</tr>
</table>


Wie gesagt, ich kann das absolut nicht, muss aber.
Irgendjemand hat mir mal gesagt, dass PHP fast gleich ist wie HTML.
Da ich HTML etwas kann, muss ich da deutlich verneinen.
Ich verstehe in PHP nur Bahnhof!

Im PHP Editor steht das an der Stelle mit dem Button:

Code: Select all
<table>
<tr>
<td valign="top" width="200"><?echo CSS_TABLE_TITLE;?>Absenden:<?echo CSS_END;?></td>
<td><input type="hidden" name="form_sended" value="1">
<input type="hidden" name="form_UStamp" value="<?echo $form_UStamp;?>">
<?
// Verschiedene Submit-Buttons fuer Neuen Eintrag und Aktualisierung
if ($form_UStamp == 0)
   echo '<input type="submit" name="submit_button" value="Neue Veranstaltung anlegen">';
else
   echo '<input type="submit" name="submit_button" value="Veranstaltung aktualisieren">';
?>
</td>
</tr>
</table>
Jamma
 
Posts: 20
Joined: 07. May 2007 08:01

Postby kschroeder » 14. May 2007 13:43

Also wer gesagt hat, dass html fast gleich php ist, gehört verbrannt. :wink:

PHP wird serverseitig ausgeführt. Das heisst alle Berechnungen DB-Zugriffe usw. bekommt der Client nicht mit. Nur was PHP mit echo oder print ausgibt, wird an den Client geschickt und im Browser angezeigt.
Das ist schonmal ein gewaltiger Unterschied und muss verstanden werden, da man die Sache sonst verkehrt angeht.

Was Du an Code-Schnipseln gezeigt hast, zeigt, dass die Datei HTML-Code und PHP-Code enthält.
Damit der Server weiß, wann es HTML ist und wann PHP, wird PHP-Code immer mit einem <?php oder auch kurz <? eingeleitet. Der Code endet wieder nach einem ?>.

HTML und PHP erzeugen in Deinem Beispiel ein Formular. Beim Abschicken des Formulars werden Daten an die Datei übergeben. Diese DAten beeinflussen wiederrum die Anzeige, beispielsweise, ob "Anlegen" oder ob "Aktualisieren" angezeigt werden soll.

Code: Select all
if ($form_sended == 1 and $loadDataset <> 0 and !($form_eintrag_loeschen_a and $form_eintrag_loeschen_b and $form_eintrag_loeschen_c)) { echo '
Patientendaten wurde aktualisiert


bedeutet z.B. dass die Anzeige "aktualisiert" nur dann kommt, wenn der Formular abgeschickt wurde, wenn Daten angegeben wurden und wenn weder eintrag_loeschen_b noch eintrag_loeschen_c "wahr" sind.

Ich vermute mal, dass $loadDataset nie Inhalt enthält, somit immer 0 ist und somit wird die Anzeige nie erscheinen. Das kann z.B. daran liegen, dass register_globals falsch gesetzt ist. Das ist ein Security-Ding, dass Variablen, die per POST übergeben werden sollen, nicht in der Browserzeile simuliert werden können etc. Die Variablen müssen daher über _POST["Variable"] ausgelesen werden.
Du kannst diese Sicherheit aber auch abschalten (was allerdings nicht empfohlen ist).

Ich nehme an, dass Du in dem Formular einige Textfelder hast:
<input type="text" name"xyz">

Es wäre schonmal ein Anfang wenn Du irgendwo im Bodybereich vom HTML-Code eine Debug-Zeile einfügen würdest:
<? echo "Test=$xyz<br/>"; ?>

Du solltest dann bei jedem Aufruf der Seite diese Zeile irgendwo stehen sehen. Schreibe anstatt xyz den Namen eines Text-Eingabefeldes.

Wenn Du, egal wann, immer nur "Test=" siehst, ohne dass was dahinter steht, dann weisst Du, dass die Formulardaten nicht ohne Zugriff auf _POST gelesen werden können.



[/code]
kschroeder
 
Posts: 254
Joined: 11. May 2007 13:33

Postby Jamma » 14. May 2007 14:43

Ich glaube, mein Problem ist das, dass bei dem Button im Quelltext nix steht (siehe Code).
Alles was nach dem "echo" steht, ist auskommentiert.
Es ist egal, ob ich nun die Zeile mit dem "xyz" irgendwo einfüge oder nicht, es geht nicht.

Code: Select all
<?
// Verschiedene Submit-Buttons fuer Neuen Eintrag und Aktualisierung
if ($form_UStamp == 0)
   echo '<input type="submit" name="submit_button" value="Neue Veranstaltung anlegen">';
else
   echo '<input type="submit" name="submit_button" value="Veranstaltung aktualisieren">';
?>
Jamma
 
Posts: 20
Joined: 07. May 2007 08:01

Postby kschroeder » 14. May 2007 15:24

Wieso sollte da nichts stehen?
Der PHP-Code zeigt, dass entweder der Submit-Button mit dem Text "anlegen" oder mit dem Text "aktualisieren" angezeigt wird.

Da es sich um einen Submit-Button handelt, wird beim Drücken des Buttons die Aktion ausgeführt, die beim Form-Tag angegeben ist.
Z.B. sowas:
Code: Select all
<form enctype="multipart/form-data" name="formname" action="dateiname.php" method="POST">


Die im Formular angegeben Werte werden dann an die aufgerufene Seite übertragen (in die _POST-Variable)

Vielleicht fängst Du erstmal an, ein Beispiel-Formular zu bauen, dass lediglich ein Text-Feld und den Submit-Button enthält. Das aufgerufene PHP-Script zeigt dann den Inhalt des Text-Feldes an.


Ich sehe noch ganz erhebliche Verständnis-Probleme, daher ist es wirklich nicht leicht, Dir so hier weiter zu helfen. :(
kschroeder
 
Posts: 254
Joined: 11. May 2007 13:33

Postby floppy1983 » 16. May 2007 07:46

Hallochen,

ich vermute das selbe Problem zu haben. Und ich denke es hat garnichts mit PHP zu tun sondern mit der Konfiguration vom Indianer.

Ich habe ein Formular welches ich durch Klick auf einen Button absende. Die Formulardaten werden dann im selben Dokument ausgewertet. Total einfacher Aufbau,...

Auf dem Xampp klappt diese "Übergabe" der Formularwerte nicht und auf meinem Webserver im Internet funktioniert es ohne Probleme. Ich kann mir nicht erklären wieso.

Es funktioniert garkeine Übergabe auch nicht über die Browserzeile,...

Hat darauf jemand eine Antwort?

Liebe Grüße,...
Christian
floppy1983
 
Posts: 2
Joined: 16. May 2007 07:39

Postby kschroeder » 16. May 2007 10:22

Wie versuchst Du denn die Werte wieder auszugeben?

Nehmen wir mal an, Du hast ein Text-Eingabefeld mit dem Namen XYZ.
Wenn Du nach dem Drücken des Submit-Buttons dasselbe Dokument wieder aufrufst und den eingegebenen Inhalt anzeigen lassen möchtest, wie machst Du das?

Ich nehme mal an, dass Du einfach ein echo $XYZ; machst.
Wenn aber in der PHP.ini register_globals auf Off gesetzt ist, dann kannst Du die Werte nicht so ausgeben lassen.
Du musst die Variable über echo $_POST["XYZ"]; ausgeben.

Das funktioniert dann übrigens auch auf jedem Server, egal welche Einstellung register_globals in der php.ini hat.
kschroeder
 
Posts: 254
Joined: 11. May 2007 13:33

Ohje

Postby floppy1983 » 16. May 2007 10:42

Hallo zusammen,

"Ohje", da hab ich mich nun selbst "zum Affen" gemacht. RTFM :) Habe jetzt auch verstanden warum es nicht geklappt hat. Danke für die Hilfe, das Thema ist im Grunde überflüssig,...

Vielen Dank,
Christian
floppy1983
 
Posts: 2
Joined: 16. May 2007 07:39

Postby KingCrunch » 16. May 2007 16:46

KingCrunch wrote:register_globals

KingCrunch wrote:Also paar mehr Hinweise (inkl Debugging-Infos) wären nett. Steht am Anfang der Datei error_reporting(E_ALL)?

-.-
-.-
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby Jamma » 21. May 2007 09:35

KingCrunch wrote:
KingCrunch wrote:register_globals

KingCrunch wrote:Also paar mehr Hinweise (inkl Debugging-Infos) wären nett. Steht am Anfang der Datei error_reporting(E_ALL)?

-.-
-.-


Hab doch schon geschrieben, was bei mir in der Datei am Anfang steht.
Hier noch einmal:

Code: Select all
...
;error_reporting = E_ALL & ~E_NOTICE
...
;error_reporting = E_ALL & ~E_NOTICE | E_STRICT
...
;error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR
...
error_reporting  =  E_ALL & ~E_NOTICE
...


kschroeder wrote:Ich nehme mal an, dass Du einfach ein echo $XYZ; machst.
Wenn aber in der PHP.ini register_globals auf Off gesetzt ist, dann kannst Du die Werte nicht so ausgeben lassen.
Du musst die Variable über echo $_POST["XYZ"]; ausgeben.


Das habe ich auch geändert, aber es funktioniert dennoch nicht. :evil:
Jamma
 
Posts: 20
Joined: 07. May 2007 08:01

Next

Return to MariaDB - MySQL

Who is online

Users browsing this forum: No registered users and 1 guest