Zurück   RR:Board > Webmaster > Webentwicklung

Web-Technik: ASP, PHP, XML, Javascript, AJAX, SQL Datenbanken. Webentwicklung: CMS, Foren, Blog -Scripte.
Antwort
 
Themen-Optionen Thema durchsuchen

[PHP] - Formular Pflichtfeld und Komma als Punkt übertragen
Alt 18.04.2012, 08:32   # 1
Buzzer
+*FRC-BiG-PaPa*+
blau
Bewertung:
Buzzer hat mehr als 25.000 PunkteBuzzer hat mehr als 25.000 PunkteBuzzer hat mehr als 25.000 PunkteBuzzer hat mehr als 25.000 PunkteBuzzer hat mehr als 25.000 PunkteBuzzer hat mehr als 25.000 PunkteBuzzer hat mehr als 25.000 PunkteBuzzer hat mehr als 25.000 PunkteBuzzer hat mehr als 25.000 PunkteBuzzer hat mehr als 25.000 Punkte
Buzzer hat mehr als 25.000 PunkteBuzzer hat mehr als 25.000 PunkteBuzzer hat mehr als 25.000 PunkteBuzzer hat mehr als 25.000 Punkte
Registriert seit: Oct 2005
Internet: DSL 3000
Beiträge: 2.024
Power: 33
Hi,

ich habe ein kleines Problem, ich habe ein Formular in dem Werte eingetragen werden.

Ich möchte jetzt das alle Felder Pflichtfelder sind, also Absenden nur dann funktioniert wenn die Felder alle gefüllt sind:

Code:
<?php include "auth.php"; include "mysql_connectinfo.php"; if (isset( $_POST['senden'] )) { if(strlen($d)==0){ $error_msg="Bitte Preis für d eingeben!<br />"; } if(strlen($s10)==0){ $error_msg.="Bitte Preis für s10 eingeben!<br />"; } if(strlen($s5)==0){ $error_msg.="Bitte s5 eingeben!<br />"; } if(isset($error_msg)){ echo $error_msg; } else { $d = $_POST["d"]; $s10 = $_POST["s10"]; $s5 = $_POST["s5"]; $sql = "INSERT INTO e362 (d, s10, s5) VALUES ('$d', '$s10', '$s5')"; $absenden = mysql_query($sql); if(!$absenden) echo "SQL-Anweisung fehlgeschlagen!" .mysql_error(); if (mysql_affected_rows() == 1) { header('Location: danke.html'); } else { echo '<h3>Der Datensatz konnte <span class="hinweis">nicht</span> hinzugefügt werden!</h3>'; } } ?>
Leider klappt es so nicht, bekomme folgenden Fehler:

Parse error: syntax error, unexpected $end in ***.php on line 84

Ich hab jedoch garkeine Zeile 84.

Wo liegt der Fehler, die Stelle an der ich den Code zur Überprüfung eingegeben habe stimmt doch soweit oder?

Problem 2 Komma als Punkt,

in den Feldern werden Dezimalzahlen eingegeben. Diese werden von der MySQL Tabelle aber nur als solche erkannt wenn diese mit Punkt geschrieben werden z.B. 2.898, gibt der User jetzt 2,898 ein steht in der Tabelle 2898 das möchte ich verhindern, ich glaube es gibt eine Möglichkeit die eingabe von 2,898 vor der Übergabe an die Variable in 2.898 umzuwandeln, oder?

Kann mir da jemand weiter helfen.

Ich bin in dem gebiet noch blutiger anfänger, ich les mich auch vorher immer ein, es fällt mir aber noch schwer, anhand von beispielen das richtige für mich anzuwenden. Deswegen wäre es super wenn ihr mir helfen könntet

~« Fantasy Release Crew »~
Es war eine schöne Zeit Jungs
  Buzzer ist offline   Mit Zitat antworten

Alt 18.04.2012, 09:08   # 2
Nanobyte
Kabel Wurm
rot rot rot 
Bewertung:
Nanobyte hat die Renommee-Anzeige deaktiviert
Registriert seit: Jan 2010
Internet: DSL2 16K
Beiträge: 717
Power: 13
Entfern das letzte ?> aus deiner Datei, dies ist unnötig und kann unter umständen Fehler verursachen!



// Edit - 10:25

Habe das Script von dir etwas Modifiziert:
  • mysql_real_escape_string() beugt SQL-Injektion vor
  • Fehlermeldungen als Array erhöht die Wiederverwendbarkeit
  • Erst die POST Variablen umschreiben und dann deren Inhalt prüfen, ergibt mehr sinn oder?


PHP-Code:
<?php
include 'auth.php'
include 
'mysql_connectinfo.php';

if( isset( 
$_POST['senden'] ) )
{
    
$d mysql_real_escape_stringtrim($_POST['d']) );
    
$s10 mysql_real_escape_stringtrim($_POST['s10']) );
    
$s5 mysql_real_escape_stringtrim($_POST['s5']) );
    
    
    
$error_msg = array();
    
    
    if( 
strlen($d)==) {
        
$error_msg[] = 'Bitte Preis für d eingeben!';
    }
    
    if( 
strlen($s10)==) {
        
$error_msg[] = 'Bitte Preis für s10 eingeben!';
    }
    
    if( 
strlen($s5)==) {
        
$error_msg[] = 'Bitte s5 eingeben!';
    }
    
    
    if( 
count($error_msg) > ) {
        echo 
implode'<br />'$error_msg );
    }
    else
    {
        
        
$sql "INSERT INTO `e362` (`d`, `s10`, `s5`) VALUES ('$d', '$s10', '$s5')";
        
$absenden mysql_query($sql);
        
        if( 
$absenden === false ) {
            echo 
"SQL-Anweisung fehlgeschlagen!" .mysql_error();
            exit;
        }
        
        if( 
mysql_affected_rows() == )
        {
            
header('Location: danke.html');
            exit;
        }
        else
        {
            echo 
'<h3>Der Datensatz konnte <span class="hinweis">nicht</span> hinzugefügt werden!</h3>';
        }

    }
}

| Sollte ich mich irren, dann schickt mir bitte eine PM ;)
  Nanobyte ist offline   Mit Zitat antworten

AW: Formular Pflichtfeld und Komma als Punkt übertragen
Alt 18.04.2012, 09:55   # 3
Yuri
The Madness
blau blau 
Bewertung:
Yuri hat 2500 bis 5000 PunkteYuri hat 2500 bis 5000 PunkteYuri hat 2500 bis 5000 PunkteYuri hat 2500 bis 5000 PunkteYuri hat 2500 bis 5000 PunkteYuri hat 2500 bis 5000 PunkteYuri hat 2500 bis 5000 PunkteYuri hat 2500 bis 5000 PunkteYuri hat 2500 bis 5000 PunkteYuri hat 2500 bis 5000 Punkte
Registriert seit: Aug 2004
Internet: Modem/ISDN
Beiträge: 2.545
Power: 34
Kurzer Senf von mir.

Folgendes ist blöd:
PHP-Code:
if ($foo == 4) {
    
// ...

Warum?
Vergisst du bspw. ein =-Zeichen, so wird aus deiner Gleichheitsfrage eine Zuweisung.
Besser ist:
PHP-Code:
if (== $foo) {
    
// ...

Vergisst du dort dann ein =-Zeichen, crasht PHP und du wirst den Fehler bemerken

Zweiter Punkt:
PHP-Code:
$sql "INSERT INTO `e362` (`d`, `s10`, `s5`) VALUES ('$d', '$s10', '$s5')"
Finde ich unschön. Dafür gibt es prepared Statements bzw. sprintf. du kannst mit sprintf sogar ne Typangabe machen. Außerdem machst du so dein SQL-Statement wiederverwendbar. Sonst hast du duplicate code.

Ich nehm an, du fängst grad erst mit PHP an - dann ist's damit noch nicht zu spät. Und es wird dir viel bringen
  Yuri ist offline   Mit Zitat antworten

AW: Formular Pflichtfeld und Komma als Punkt übertragen
Alt 18.04.2012, 12:33   # 4
Buzzer
+*FRC-BiG-PaPa*+
blau
Bewertung:
Buzzer hat mehr als 25.000 PunkteBuzzer hat mehr als 25.000 PunkteBuzzer hat mehr als 25.000 PunkteBuzzer hat mehr als 25.000 PunkteBuzzer hat mehr als 25.000 PunkteBuzzer hat mehr als 25.000 PunkteBuzzer hat mehr als 25.000 PunkteBuzzer hat mehr als 25.000 PunkteBuzzer hat mehr als 25.000 PunkteBuzzer hat mehr als 25.000 Punkte
Buzzer hat mehr als 25.000 PunkteBuzzer hat mehr als 25.000 PunkteBuzzer hat mehr als 25.000 PunkteBuzzer hat mehr als 25.000 Punkte
Registriert seit: Oct 2005
Internet: DSL 3000
Beiträge: 2.024
Power: 33
Themenstarter
Zitat:
Zitat von Nanobyte Beitrag anzeigen
Entfern das letzte ?> aus deiner Datei, dies ist unnötig und kann unter umständen Fehler verursachen!
Echt, wieso das? Wenn danach ein HTML Code kommt ist es doch korrekt oder? Ich hab den php Code und den HTML code für das Formular in einer Datei.

Zitat:
Habe das Script von dir etwas Modifiziert:
  • mysql_real_escape_string() beugt SQL-Injektion vor
Hatte ich weggelassen oder mich nicht mit beschäftigt da der Bereich nur von 5 Usern genutzt wird die nur mit Passwort rein kommen. Aber Sicher ist sicher

Zitat:
  • Erst die POST Variablen umschreiben und dann deren Inhalt prüfen, ergibt mehr sinn oder?
Das hatte ich dann zwischenzeitlich auch probiert, dadurch hat sich der Fehler um eine Zeile verschoben

Also ich habe das ?> weggelassen, dadurch bekam ich einen Fehler wegen des folgenden HTML Codes.
Hab es wieder hinzugefügt, jetzt geht die Seite wieder.
(Ich habe deinen Code Kopiert und in die Datei eingefügt.)
ABER jetzt kann ich immernoch auf Absenden drücken wenn keines der Felkder gefüllt ist und er trägt mir Null werte in die Tabelle.

Verstehs nicht wirklich, er macht doch jetzt vor dem insert die Abfrage ob die drei Felder 0 enthalten, wenn ja sendet er die Error Message, wenn nicht, dann macht er mit Insert weiter.

So sollte es sein, aber er tut genau das Gegenteil.

EDIT:
Kommando zurück, Funktioniert alles einwandfrei, Problem war das ich nach der Eingabe der Preise auf eine andere Seite weitergeleitet habe(Wollte die Preise gleich schön anzeigen lassen) dadurch konnte mir die Fehlermeldung garnicht mitgegeben werden.

Hab die Verbindung auf sich selbst wieder hergestellt jetzt gehts.

@Yuri
Einwand 1 hab ich verstanden
Einwand 2, nur Bahnhof was meinst du genau, vll für Dummis formulieren.

So bleibt noch die Frage wie ich es umgehe das wenn der User die Zahl mit Komnma eingibt, es mir falsche werte in die Tabelle trägt.
Müsste es nicht damit gehen das ich jedes eingegeben Komma vor der Weitergabe in einen Punkt verwandle?

Edit#2:

Also das mit dem Komma ist wirklich sehr sehr einfach wenn mans dann mal raushat:

Code:
$zahl = str_replace(",",".", $zahl);

~« Fantasy Release Crew »~
Es war eine schöne Zeit Jungs
  Buzzer ist offline   Mit Zitat antworten
Antwort

RR:Board > Webmaster > Webentwicklung > [PHP] - Formular Pflichtfeld und Komma als Punkt übertragen


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

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[PHP] - Problem: Formular an MySQL übertragen Judoki Webentwicklung 4 28.04.2012 12:39
Komma ,und Imoo Diskussionen 12 28.08.2010 12:34
[PC] - CSS fadenkreut nur als punkt???? plussrator Gamer Support 5 15.05.2009 22:24
Vor dem 'UND' ein komma myGTA360 Literatur und Philosophie 15 10.03.2009 13:40
Komma zu Punkt batslayer Windows 4 09.02.2009 07:33



Alle Zeitangaben in WEZ +1. Es ist jetzt 06:49 Uhr.
vBulletin Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.