php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 23.07.2005, 04:18  
Gast
 
Beiträge: n/a
Standard "Typ Set" Daten aus Formular werden falsch abgespe

hallo,

vielleicht kann mir jemand helfen.
Ich bekomme immer falsche Werte in der Datenbank abgespeichert, wenn ich Daten vom Type Set aus dem Formular eingebe, auch die Ausgabe/Update erfolgt nicht so, wie ich es vorhabe.

in der mysql-db habe ich ein Type Set definiert: Montag, Dienstag, ...
im formular kann ich die einzelnen Werte auswählen, aber gespeichert werden immer nur eins oder andere, ist irgendwie ganz komisch!
Code:
<html> 
<head><title>Neuer Benutzer</title></head> 
<body> 
<h1>Datenbankeingabe</h1> 
<?
 
echo "Sie sind Benutzer: $PHP_AUTH_USER 



"; 

$wasfehlt=""; 
$allesda=0; 
if ( isset($Nachname) or isset($Vorname) or isset($Email) or isset($Adresse) or isset($Stadt) or isset($PLZ) or isset($Tel_nr) or isset($Wochentag)) { 
    if ( empty($Nachname)) 
        $wasfehlt="Bitte geben Sie den Nachnamen ein!"; 
    if ( empty($Vorname)) 
        $wasfehlt="Bitte geben Sie den Vornamen ein!"; 
    if ( empty($Adresse)) 
        $wasfehlt="Bitte geben Sie die Adresse ein!"; 
    if ( empty($Stadt)) 
        $wasfehlt="Bitte geben Sie die Stadt ein!"; 
    if ( empty($PLZ)) 
        $wasfehlt="Bitte geben Sie die Postleitzahl ein!"; 
    if ( empty($Email)) 
        $wasfehlt="Bitte geben Sie die E-Mail-Adresse ein!"; 
    if ( empty($Tel_Nr)) 
        $wasfehlt="Bitte geben Sie die Tel-Nr: ein!"; 
    if ( empty($Wochentag)) 
        $wasfehlt="Bitte geben Sie den Wochentag: ein!"; 
    if ( empty ($wasfehlt)) 
        $allesda=1; 
} 
 
if ($allesda) { 
 
        include ('dbpass.php'); 
        // Im Fehlerfalle bewirkt der Klammeraffe, dass die Fehlermeldungen 
        // unterdrckt werden. ms_sqlconnect verbindet mit der Datenbank 
    @mysql_connect($dbhost, $dbuser, $dbpass); 
        // Auswahl der Datenbank 
    @$x=mysql_select_db($dbdata); 
 
        // Aufbau des SQL-Statements aus den Formularfeldern 
    $sql = "INSERT INTO personen (Username, Nachname, Vorname, Adresse, Stadt, PLZ, Email, Tel_Nr, Wochentag) VALUES ('$PHP_AUTH_USER', '$Nachname', '$Vorname', '$Adresse', '$Stadt', '$PLZ', '$Email', '$Tel_Nr', '$Wochentag)"; 
    $result = mysql_query($sql); 
 
        // Anzeigen des Primaerschluessels des neuen Datensatzes 
        echo "neue ID:", mysql_insert_id(), "
"; 
    echo $sql,"

"; 
 
        // MYSQL-Fehlermeldungen ausgeben: 
    if(!$result) 
        echo "fehler: ",mysql_error(),"
"; 
    else 
        echo "$Vorname $Nachname wurde erfolgreich in die Datenbank eingetragen!"; 
 
} 
else 
{ 
if (!empty($wasfehlt)) 
    echo $wasfehlt,"
"; 
// Anzeige des Webformulars 
?> 
<FORM method=post action=new_user.php> 
Vorname:

<INPUT type=text name=Vorname size=50>
 
Nachname:

<INPUT type=text name=Nachname size=50>
 
Adresse:

<INPUT type=text name=Adresse size=50>
 
Stadt:

<INPUT type=text name=Stadt size=50>
 
Postleitzahl:

<INPUT type=text name=PLZ size=50>
 
E-Mail:
 
<INPUT type=text name=Email size=50>
 
Tel-Nr: (Vorwahl und Rufnr. ohne Trennzeichen eingeben)

<INPUT type=text name=Tel_Nr size=50>
 
Wochentag:

<select name=Wochentag size=10 multiple>

  <option value='1'> Montag</option>
  <option value='2'> Dienstag </option>
  <option value='3'> Mittwoch </option>
  <option selected value='4'> Donnerstag </option>
  <option value='5'> Freitag </option>
</select>
<INPUT type=submit value="Eintragen">
 
</FORM> 
<? 
} 
?>




Zur&uuml;ck</p> 
</body> 
</html>
auch bei meinem update-formular ist das so, alles andere funktioniert,
nur eben nicht dieses Set-Type Menu.

wäre schön, wenn jemand eine idee hat.

gruss und danke
mambo
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 24.07.2005, 12:43  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Wie du in http://dev.mysql.com/doc/mysql/de/set.html nachlesen kannst, werden die SET-Daten entsprchend ihrer gesetzten Bits gespeichert. D.h. 1 (2 ^ 0) entspricht in deinem Fall dem Montag, 2 (2 ^ 1) dem Dienstag, 4 (2 ^ 2) dem Mittwoch, 8 (2 ^ 3) dem Donnerstag usw. Also musst du die Werte entsprechende vorgeben:
PHP-Code:
<?php
...
Wochentag:

<
select name=Wochentag size=10 multiple>

  <
option value='1'Montag</option>
  <
option value='2'Dienstag </option>
  <
option value='4'Mittwoch </option>
  <
option selected value='8'Donnerstag </option>
  <
option value='16'Freitag </option>
</
select
?>
Die Mehrfachauswahl, die du hier zulässt, hast du in deinem Code nicht behandelt. In diesem Falle musst du die selektierten Werte mit einem bitweisen und (|) verknüpfen, und dann speichern. 3 entspricht dann z.B. Montag und Dienstag, 20 Mittwoch und Freitag, 19 Montag, Dienstag und Freitag, etc
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Alt 24.07.2005, 14:48  
Gast
 
Beiträge: n/a
Standard

hi lazydog,

danke für deinen tipp! das ist es also, die werte mit dezimalwerte aufrufen.

für mehrfachauswahl verstehe ich aber nicht ganz.
wie kann ich das im code umsetzen?

danke im vorraus,

gruss
mambo
  Mit Zitat antworten
Alt 25.07.2005, 09:36  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Da du ja im Select-Tag das Attribut multiple angibst, ermöglichst du, mehrere Optionen auszuwählen. Damit das aber zum Tragen kommt, musst du den Namen alls Array definieren (name=Wochentag[]). Und die einzelnen Elemente dieses Arrays musst du dann mit einem bitweisen und verknüpfen, z.B.
PHP-Code:
<?php
eval("\$wtag = "implode(' | '$_POST['Wochentag']) . ";");
?>
Damit erhälst du dann genau den Wert für die selektierten Tage. Wenn z.B. Dienstag, Mittwoch und Freitag ausgewählt wurden, liefert die implode-Funktion "2 | 4 | 16", was dann zu 22 evaluiert wird.
Falls das nicht gewünscht ist, musst du das Attribut multiple aus dem Select-Tag entfernen.

[edit]
Jetzt habe ich das Pferd aber am Schwanz aufgezäumt. Da die bitweise Verknüpfung von Zweierpotenzen dasselbe ist, wie eine Addition, kannst du die Werte selbstverständlich einfach addieren:
PHP-Code:
<?php
eval("\$wtag = "implode(' + '$_POST['Wochentag']) . ";");
?>
__________________
Gruss
L
lazydog 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
Eintragen von Daten per Formular in MySQL Datenbank PHP Tipps 2004 11 07.06.2009 08:58
Formular mit Daten aus mehreren Frames Jacks Rache HTML, Usability und Barrierefreiheit 8 27.06.2006 15:03
POST Daten ohne Formular übergeben? &lt;Daniel&gt; PHP Tipps 2006 8 19.06.2006 14:34
formular unterscheidet falsch bei update und neueintrag vod`` PHP Tipps 2006 8 07.06.2006 17:19
Formular übermittelt keine Daten PHP Tipps 2006 4 08.03.2006 13:09
Formular - Daten für nächste Seite behalten NetLook PHP Tipps 2007 7 18.11.2005 13:21
[Erledigt] sql daten für einen kunden auslesen/ändern im Formular PHP Tipps 2005-2 3 12.10.2005 08:36
Formular Daten in die Datenbank schreiben… sunset PHP Tipps 2005-2 3 26.08.2005 11:49
Daten in Formular formatieren. PHP Tipps 2004 3 11.08.2004 12:47
Wie übergebe ich aus einem Formular die Daten in Variablen. PHP Tipps 2004 14 11.08.2004 01:58
[Erledigt] Probleme mit dem anzeigen von Daten in einem Formular PHP Tipps 2004 2 26.07.2004 19:29
[Erledigt] Daten in neuem Formular anzeigen PHP Tipps 2004 6 21.07.2004 10:44
Ich hab ein problem mit dem speichern von formular daten PHP Tipps 2004 7 23.06.2004 07:11
Bei Fehler Daten an Formular zurück, mit Session Sonja PHP Tipps 2004 3 22.06.2004 18:00
Daten aus einem Formular auslesen??? PHP-Fortgeschrittene 1 21.06.2004 17:43

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql set mehrfachauswahl, sql type set, mysql session variable typ set, sql alle plz der stadt ausgeben, html formular vorname nachname stadt plz, html formular php mysql feldtyp set, php select option \selected value\ action vorwahl, html mehrfachauswahl sql, sql zweierpotenz, dbpass.php, mehrfachauswahl-sets bei spss, in option value ist falsch, php formular mysql isset null, sql typ für vorwahlen, isset plz, msyql set mehrfachauswahl, mysql set in formularfeld, typ set bei php, mehrmals set sql, mysql set auswahl

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