php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 21.12.2011, 21:02  
Neuer Benutzer
 
Registriert seit: 07.10.2010
Beiträge: 18
PHP-Kenntnisse:
Anfänger
Sauerkrautwurst befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Formular sendet sich scheinbar selbst

N' Abend zusammen,

ich stehe mit meinem Skript gerade etwas am Schlauch, evtl. kann mir hier ja jemand weiterhelfen. Jedesmal, wenn ich eines der Felder im Formular fülle, scheint sich das Formular von selbst abzuschicken und läuft damit auf meine Fehlermeldung, da nicht alle Felder ausgefüllt sind. Ich sehe wahrscheinlich den Wald vor lauter Bäumen nicht mehr, aber ich kann den Fehler beim besten Willen nicht finden.

Anbei der Code:

Artikel_Form.php:
PHP-Code:
<?php
session_start
();
if (
$_SESSION['VALID'] != TRUE) {
    
header("Location: ./index.php?Nachricht=Sitzung ist abgelaufen");
}
?>

<html>
    <head>
        <title>
            Anmeldung
        </title>
    </head>
    <body>
        <form action="./Artikel_senden.php" method="POST">
            <?php
                
if (!empty($_GET['Nachricht']))  {
                echo 
'<p><font color="red"><b>'.htmlspecialchars($_GET['Nachricht']).'</b></font></p>';
                    
                }                
                if (!empty(
$_GET['NachrichtOK']))  {
                echo 
'<p><font color="green"><b>'.htmlspecialchars($_GET['NachrichtOK']).'</b></font></p>';
                    
                }                
            
?>
        
                <p>
                Bitte die Buchungsart wählen:
                </p>
                <select size="1" name="bewegungsschluessel">
                    <option value="001">Inventur</option><?php if (!empty($_GET['inventur']))  {echo $_GET['inventur']; }?>" /></p>
                    <option value="002">Zu-/Abgang</option><?php if (!empty($_GET['bestandskorrektur']))  {echo $_GET['bestandskorrektur']; }?>" /></p>
                    <option value="003">Bestandskorrektur</option><?php if (!empty($_GET['zu_abgang']))  {echo $_GET['zu_abgang']; }?>" /></p>
                    <option value="004">Umlagerung</option><?php if (!empty($_GET['umlagerung']))  {echo $_GET['umlagerung']; }?>" /></p>
                </select>
                </select>
                <p>
            Bitte scannen Sie den Stellplatz ab:
            </p>
                <input type="text" name="stellplatz" value="<?php if (!empty($_GET['stellplatz']))  {echo $_GET['stellplatz']; }?>" /></p>
                <p>Bitte scannen Sie den Artikel ab:</p>
                <input type="text" name="ware" value="<?php if (!empty($_GET['ware']))  { echo $_GET['ware']; }?>" /></p>
            <p>Bitte geben Sie die gewuenschte Menge an:</p>
            <input type="text" name="menge" value="<?php if (!empty($_GET['menge']))  { echo $_GET['menge']; } ?>" />
            <br /><input type="submit" value="absenden" />
                
        </form>
         
    </body>
</html>
und hier die Artikel_senden.php

PHP-Code:
<?php
require './DB.php';
session_start();


function 
StartsWith($Haystack$Needle){
    
// Recommended version, using strpos
    
return strpos($Haystack$Needle) === 0;
}

if (
$_SESSION['VALID'] == TRUE) {
    
$DBcon ODBCVerbindung();
    
    if (empty(
$_POST['ware']) or $_POST['ware']  ==  "" or empty($_POST['menge']) or $_POST['menge'] ==  "" or empty($_POST['stellplatz']) or $_POST['stellplatz'] ==  "")  {
            
header("Location: ./Artikel_Form.php?ware=".$_POST['ware']."&menge=".$_POST['menge']."&stellplatz=".$_POST['stellplatz']."&Nachricht=Sie haben keine(n) Stellplatz, Artikelnummer oder Menge eingegeben !");
    }
    
$Bewegungsschluessel $_POST['bewegungsschluessel'];
        
$ArtNr    $_POST['ware'];
        
$Startstelle 3;
        
$ArtikelNr substr($ArtNr$Startstelle);
        
$ArtikelMenge $_POST['menge'];
    
$Stlplz $_POST['stellplatz'];
        
$Stellplatz substr($Stlplz$Startstelle);
        
$Werk 01;
        
$Geschbereich $Werk;
        
$Buchungskreis 04;
        
$Datum date("Y-m-d");
        
$Zeit date("His");

        
ob_start();
        echo 
$_SESSION['User'];
        
$user ob_get_contents();
        
ob_end_clean();
        
    
    
    if (!
StartsWith($ArtikelMenge"-")) {
        
$ArtikelMenge "+".$ArtikelMenge;
    }
    
$SQLStatement "INSERT INTO xxx (itnr32, acqt32, lgnt32, fscd32, crdt32, tsuser, time32, scpb32, cmpn32, trke32) VALUES (".$ArtikelNr.",".$ArtikelMenge.",".$Buchungskreis.",'".$Stellplatz."','".$Datum."','".$user."','".$Zeit."',".$Geschbereich.",".$Werk.",".$Bewegungsschluessel.")"
    
    if (
ODBCInsert($DBCon$SQLStatement) == TRUE) {
        
header("Location: ./Artikel_Form.php?NachrichtOK=erfasst!");
    }else{
    
header("Location: ./Artikel_Form.php?ware=".$_POST['ware']."&menge=".$_POST['menge']."&stellplatz=".$_POST['stellplatz']."&Nachricht=Fehler beim Verarbeiten des Datensatzes, bitte veruschen Sie es erneut!");
    }
}else{
    
header("Location: ./index.php");    
}
?>
Ich denke, der Fehler wird in einer der beiden o. G. Datein sein, daher Poste ich vorerst nur diese.

Für jeden stupser wäre ich dankbar.

Grüße
Sauerkrautwurst ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 21.12.2011, 21:15  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Ist Javascript beteiligt, das bei Änderungen das Formular abschickt? Oder was ist damit gemeint?
Zitat:
Jedesmal, wenn ich eines der Felder im Formular fülle, scheint sich das Formular von selbst abzuschicken
Generell ist die andauernde Umlenkerei per Location header auch nicht empfehlenswert.
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline   Mit Zitat antworten
Alt 21.12.2011, 21:22  
Neuer Benutzer
 
Registriert seit: 07.10.2010
Beiträge: 18
PHP-Kenntnisse:
Anfänger
Sauerkrautwurst befindet sich auf einem aufstrebenden Ast
Standard

Nein, kein Javascript.

Ich versuche es nochmal deutlicher zu erklären.
Das Script wird mit einem Barcodescanner aufgerufen. Den Bewegungsschlüssel wählt man per Dropdownmenü. Wenn man im zweiten Schritt die Artikelnummer scannt, füllt sich das Feld mit dem entsprechend gescannten Wert und schickt sich dummerweise selbst ab. Das läuft dann auf einen Fehler, da alle Felder ausgefüllt sein müssen. Das ganze passiert bei allen weiteren Feldern auch.

Geplant war eigentlich, dass man das Formular mit Hilfe des Senden-Buttons manuell abschicken muss.
Sauerkrautwurst ist offline   Mit Zitat antworten
Alt 21.12.2011, 21:25  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Zitat:
[...] füllt sich das Feld mit dem entsprechend gescannten Wert und schickt sich dummerweise selbst ab.
Ich denke Du solltest die Ursache am Barcodescanner suchen. Dieser wird ein CR am Ende mitliefern, das zum Absenden des Formulars führt.
__________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
Albert Einstein
Arne Drews ist offline   Mit Zitat antworten
Alt 21.12.2011, 21:30  
Neuer Benutzer
 
Registriert seit: 07.10.2010
Beiträge: 18
PHP-Kenntnisse:
Anfänger
Sauerkrautwurst befindet sich auf einem aufstrebenden Ast
Standard

Das würde einiges erklären! Wenn ich das Skript im Browser aufrufe und manuell, also per Tastatur fülle, klappt auch alles wie es soll... Schaue ich mir morgen mal an und werde berichten!
Sauerkrautwurst ist offline   Mit Zitat antworten
Alt 21.12.2011, 21:55  
Neuer Benutzer
 
Registriert seit: 07.10.2010
Beiträge: 18
PHP-Kenntnisse:
Anfänger
Sauerkrautwurst befindet sich auf einem aufstrebenden Ast
Standard

Es scheint wirklich dieser "CR"-Befehl zu sein. In der Doku konnte ich den Befehl jedenfalls finden und die Beschreibung dazu würde passen. Danke dir!

Interesserhalber:
Zitat:
Zitat von lstegelitz Beitrag anzeigen
Generell ist die andauernde Umlenkerei per Location header auch nicht empfehlenswert.
Hast du einen Tipp für mich, wie ich das in Zukunft eleganter lösen könnte?

Grüße
Sauerkrautwurst ist offline   Mit Zitat antworten
Alt 21.12.2011, 21:59  
meikel
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Sauerkrautwurst Beitrag anzeigen
Hast du einen Tipp für mich, wie ich das in Zukunft eleganter lösen könnte?
Verwende ein Affenformular:
http://www.php-faq.de/q-formular-absenden.html
http://www.php-faq.de/q-stil-normalform.html

Dann entscheidet das Script, ob alle erforderlichen Eingaben vorhanden sind.
  Mit Zitat antworten
Alt 21.12.2011, 23:56  
Erfahrener Benutzer
 
Benutzerbild von drsoong
 
Registriert seit: 05.08.2008
Beiträge: 1.127
drsoong wird schon bald berühmt werden
Standard

Dieses CR, von dem ich noch nie gehört habe, kann man doch bestimmt mit Javascript abfangen (preventDefault, siehe JQuery z. B.), oder?! Beim Affenformular fände ich unschön, dass die Seite neu geladen wird, um serverseitig festzustellen, dass der Input noch nicht beendet ist.
__________________
Es ist schon alles gesagt. Nur noch nicht von allen.
drsoong ist offline   Mit Zitat antworten
Alt 22.12.2011, 00:43  
Erfahrener Benutzer
 
Benutzerbild von Dark Guardian
 
Registriert seit: 10.10.2009
Beiträge: 2.630
PHP-Kenntnisse:
Fortgeschritten
Dark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekannt
Standard

Zitat:
Zitat von drsoong Beitrag anzeigen
Dieses CR, von dem ich noch nie gehört habe, kann man doch bestimmt mit Javascript abfangen (preventDefault, siehe JQuery z. B.), oder?! Beim Affenformular fände ich unschön, dass die Seite neu geladen wird, um serverseitig festzustellen, dass der Input noch nicht beendet ist.
Carriage Return

Simulieter Druck auf die Enter Taste durch den Scanner = Formular wird abgeschickt.

Abhilfe könnte hier wirklich via JS ein Abfangen des entsprechenden Charcodes und ein Unterdrücken der Standardaktion machen.
__________________
"Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".
Dark Guardian ist offline   Mit Zitat antworten
Alt 22.12.2011, 01:12  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Ein Abfangen via JS ist selbstverständlich möglich, allerdings finde ich es sinnvoller, das Verhalten direkt zu unterbinden, sofern das über die Scanner-Einstellungen machbar ist. JS sehe ich immer nur als zusätzliche Funktionalität.

Für den Fall, daß es am Scanner nicht eingestellt werden kann, sollte sowas imho schon reichen:
Code:
<input type="text" name="barcodescanner" onchange="return false;" />
...ist aber ungetestet!
__________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
Albert Einstein
Arne Drews ist offline   Mit Zitat antworten
Antwort


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
[Erledigt] &quot;Form action&quot; soll zweites Formular abschicken Farlif PHP Tipps 2010 7 19.08.2010 11:27
PHP: Formular Generator Zergling-new Tutorials 16 06.07.2010 03:14
Formular im Formular mistermint JavaScript, Ajax und mehr 11 21.06.2010 22:29
Formular 1 wurde verändert, Formular 2 Submit muss dies erkennen smilla JavaScript, Ajax und mehr 2 28.03.2010 21:26
Mehrseitiges verzweigtes Formular RobbyNaish PHP Tipps 2009 1 19.12.2009 01:51
[Erledigt] Formular ergebnisse direkt unter Formular ausgeben www.donald.com^ PHP Tipps 2009 3 16.11.2009 17:20
PDF Formular ausfüllen mit PHP Formular oomworld PHP Tipps 2009 1 26.03.2009 19:09
Problem mit Formular, Daten an datenbank senden Aurec PHP Tipps 2008 11 20.11.2008 18:17
Formular mit GET sendet Umlaute falsch BartTheDevil89 PHP Tipps 2008 3 30.08.2008 20:50
Wert aus Textfeld in neues Formular übernehmen (kein Submit) PsychoEagle HTML, Usability und Barrierefreiheit 9 02.01.2007 14:51
[Erledigt] Formular in Formular HTML, Usability und Barrierefreiheit 4 19.10.2005 12:18
Formular sendet schon beim Seitenaufbau, warum? PHP Tipps 2005-2 6 11.08.2005 18:42
IE sendet formular nicht richtig?? konsti HTML, Usability und Barrierefreiheit 4 21.11.2004 23:12
[Erledigt] Daten in neuem Formular anzeigen PHP Tipps 2004 6 21.07.2004 10:44

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
kontaktformular sendet bei enter taste, wie macht man ein in php ein formular das daten an sich selber schickt, formular sendet sich selbst

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:35 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