php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 16-04-2008, 13:23
fritzje610
 Registrierter Benutzer
Links : Onlinestatus : fritzje610 ist offline
Registriert seit: Mar 2004
Ort: Nahe der schönen Loreley
Beiträge: 318
fritzje610 ist zur Zeit noch ein unbeschriebenes Blatt
Standard Reloadsperre greift nur bei Aktualiseren im Browser; Button iost

Hallo zusammen,

das folgende Skript soll mir Daten in die DB schreiben, was es auch tut. Um allerdings doppelte Einträge zu vermeiden, soll nach dem ersten Klick auf speichern kein weiteres speichern möglich sein.
Im Formular klappt das auch. Wenn ich den Browser aktualiere, wird anstatt des Buttons der Text "Bereits gespeichert" angezeigt. So wie es sein soll. Das Skript funktioniert aber nur so.
Wenn ich mehrmals auf speichern drücke, wird der Satz auch mehrfach gespeichert. WEin Unique-Feld nützt mir nicht, das der Zählerstand sich ändert.
Ich dachte, mit der selben if-Bedingung wie im Formular, aber das haut nicht hin.

Wo ist mein Fehler, kann mir mal jemand helfen ! ! !

PHP-Code:
echo "<form action='index.php?navi=" $_GET['navi'] . "&menu=neuangebotgesamt' method='post'";
echo 
"<input type='submit' name='hauptmenu' value='Hauptmenü'></td>";
echo 
"<input type='submit' name='drucken' value='Drucken'></td>";
echo  
"<input type='hidden' name='is_saved' value='" md5(time() + rand(01000)) . "'>";

if(isset(
$_POST['is_saved']) && isset($_SESSION['is_saved']) && 
$_SESSION['is_saved'] == $_POST['is_saved'])
{
 echo 
"Bereits gespeichert !</td>";
}
else
{
 echo 
"<input type='submit' name='speichern' value='Speichern'></td>";
}
echo 
"</form>";
echo 
"</div>";


if (isset (
$_POST['speichern']) && $_POST['speichern'] == 'Speichern' && (!isset($_SESSION['is_saved'])
 || 
$_SESSION['is_saved'] != $_POST['is_saved'])) 
{

   
Datenbank schreibenDas lass ich mal raussonst wirds zu lang 

 $_SESSION
['is_saved'] = $_POST['is_saved'];

__________________
Gruß

Michael


Geändert von fritzje610 (16-04-2008 um 13:32 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 16-04-2008, 13:35
MelloPie
 PHP Master
Links : Onlinestatus : MelloPie ist offline
Registriert seit: Jan 2002
Ort: Hessen
Beiträge: 4.380
MelloPie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

wahrscheinlich wird bei Dir ja bei jedem aktualisieren
$_SESSION['is_saved'] = $_POST['is_saved']; gesetzt und damit wirkt Deine EBdingung nicht mehr
__________________
Beantworte nie Threads mit mehr als 15 followups...
Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25
Mit Zitat antworten
  #3 (permalink)  
Alt 16-04-2008, 13:45
fritzje610
 Registrierter Benutzer
Links : Onlinestatus : fritzje610 ist offline
Registriert seit: Mar 2004
Ort: Nahe der schönen Loreley
Beiträge: 318
fritzje610 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Bei jedem Klick auf speichern werden die beiden Variablen neu geschrieben. Beim Aktualisiren des Browsers bleiben sie gleich.
Ich doktere jetzt schon seid zwei Tagen an dem Problem rum. Irgendwie habe ich den Überblick etwas verloren.
Wie muss denn diese mistige Bedingung für den Button aussehen?
Das speichern darf nur gehen, wenn der Button speichern gedrückt ist
$_SESSION['is_saved'] ungleich $_POST['is_saved'] ist. Anderenfalls gibts den Satz schon. Das haut aber so nicht hin. Warum nur?
__________________
Gruß

Michael

Mit Zitat antworten
  #4 (permalink)  
Alt 16-04-2008, 13:57
MelloPie
 PHP Master
Links : Onlinestatus : MelloPie ist offline
Registriert seit: Jan 2002
Ort: Hessen
Beiträge: 4.380
MelloPie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

speicher doch $_POST['is_saved'] ab und wenn dieser Wert schon vorhanden ist, dann dann wird nicht mehr gespeichert.

Nebenbei kannste den submit button mit JS disablen
__________________
Beantworte nie Threads mit mehr als 15 followups...
Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25
Mit Zitat antworten
  #5 (permalink)  
Alt 16-04-2008, 13:59
MelloPie
 PHP Master
Links : Onlinestatus : MelloPie ist offline
Registriert seit: Jan 2002
Ort: Hessen
Beiträge: 4.380
MelloPie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

oder Du definierst einen unique key in deiner DB
__________________
Beantworte nie Threads mit mehr als 15 followups...
Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25
Mit Zitat antworten
  #6 (permalink)  
Alt 16-04-2008, 14:13
fritzje610
 Registrierter Benutzer
Links : Onlinestatus : fritzje610 ist offline
Registriert seit: Mar 2004
Ort: Nahe der schönen Loreley
Beiträge: 318
fritzje610 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Den Wert von $_POST['is_saved'] mit in die DB ? Der ändert isch doch bei jedem Klick auf speichern!

Allerdings muss ich doch dann wenn ich auf speichern klicke erst den letzteingetragenen Key lesen und dann entscheiden, ob schreiben gehen soll oder nicht. Richtig?
Wie sollte der key sinnigerweise auissehen?
__________________
Gruß

Michael

Mit Zitat antworten
  #7 (permalink)  
Alt 16-04-2008, 14:28
MelloPie
 PHP Master
Links : Onlinestatus : MelloPie ist offline
Registriert seit: Jan 2002
Ort: Hessen
Beiträge: 4.380
MelloPie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

also was möchtest Du?
verhindern dass ein user mehrfach das gleiche Formular abschickt oder das Datensätze doppelt auftreten?

Wenn ersteres speichere den is_saved wert ab und vergleiche ihn immer wieder
wenn zweites setze einen unique key auf die betreffenden Felder, die nicht doppelt sein dürfen.
__________________
Beantworte nie Threads mit mehr als 15 followups...
Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25
Mit Zitat antworten
  #8 (permalink)  
Alt 16-04-2008, 15:21
fritzje610
 Registrierter Benutzer
Links : Onlinestatus : fritzje610 ist offline
Registriert seit: Mar 2004
Ort: Nahe der schönen Loreley
Beiträge: 318
fritzje610 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

So funktioniert's. Einfach mal ne Stunde was anderes machen und schon klappt das wieder.


PHP-Code:
if(isset($_POST['is_saved'])){
    
// Irgendwas tun, da bereits versandt!
    
echo  "<input type='hidden' name='is_saved' value='" $_POST['is_saved'] . "'>";
    echo 
"Bereits versandt!";
}else{
    echo  
"<input type='hidden' name='is_saved' value='" md5(time() + rand(01000)) . "'>";
    echo 
"<input type='submit' name='speichern' value='Speichern'>";
}
echo 
"</form>";
echo 
"</div>";

/** Neue Bdingung **/
if (isset ($_POST['speichern']) && $_POST['speichern'] == 'Speichern' 
&& (!isset($_SESSION['is_saved']) || $_SESSION['is_saved'] != $_POST['is_saved'])) 
{

der Rest bleibt wie gehabt
Trotzdem vielen Dank für die Hilfe ! ! !
__________________
Gruß

Michael

Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 06:55 Uhr.