Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
(Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI...

Auswahlfeld in MySQL eintragen

Diskussion: Auswahlfeld in MySQL eintragen im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige Einen wunderschönen Guten Abend zusammen, hab hier ein gemeines Problem, und zwar habe ich ein Auswahlfeld mit 3 wichtigen ...

Antwort
Alt 23.08.09, 23:27   #1 (permalink)
 
Registriert seit: 25.05.08
Nohos Leistung: Facit NTK
Likes: 0
Auswahlfeld in MySQL eintragen

Anzeige

Einen wunderschönen Guten Abend zusammen,

hab hier ein gemeines Problem, und zwar habe ich ein Auswahlfeld mit 3 wichtigen Werten:

Code:
<select name="blub">
	  <option value='input[1]'>-----</option>
      <option value='input[2]'>1</option>
	  <option value='input[3]'>2</option>
	  <option value='input[4]'>3</option>
	  </select>
Meine Frage lautet wie kriege ich den vom Nutzer ausgewählten Wert in die MySQL DB bzw setze ich namen und value richtig oder muss es genau andersrum sein ?

Dachte mir eventuell die value werte via
PHP-Code:
if (isset($input['2']))
{
trage ein

einzutragen, wobei ich mir denke das das so ja eigentlich gar nich funktionieren kann, da ich damit ja nur input[2] abfrage, ich hoffe dochmal zumindest nich das ich für jedes input eine Abfrage machen muss :-)

Naja hoffe konnte die Frage gut Schildern,
danke im vorraus

Grüße
Nohos ist offline   Mit Zitat antworten
Alt 23.08.09, 23:54   #2 (permalink)
 
Registriert seit: 24.02.05
dupLex Leistung: Facit NTK
dupLex eine Nachricht über ICQ schicken
Likes: 0
Standard

in diesem fall muss sich die funktion isset schon auf "blubb" beziehen. also isset($blubb). auf die values kannst du so ja garnicht zugreifen, da man ja variablen prüft und der value ist keine variable sondern wie der name schon sagt der wert.
dupLex ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 24.08.09, 15:27   #3 (permalink)
Member of Honour
 
Benutzerbild von Brabax
 
Registriert seit: 04.10.01
Brabax Leistung: 8086Brabax Leistung: 8086
Brabax eine Nachricht über ICQ schicken
Likes: 42
Standard

Um das nochmal zu verdeutlichen :-D

Code:
<form method="POST" action="...">
<select name="VARIABLENNAME">
	  <option value='WERT0'>-----</option>
         <option  value='WERT1'>1</option>
	  <option value='WERT2'>2</option>
	  <option value='WERT3'>3</option>
	  </select>
</form>
und ein Beispielcode wäre:

Code:
<?PHP
$formular_variable = (typ) $_POST['VARIABLENNAME'];

if($formular_variable == "WERT1")
   {
       #Datenbankzeugs
   }
?>
Es bietet sich übrigens an, Usereingaben immer auf ihren Typ hin zu überprüfen respektive zu konvertieren um SQL-Injections zu verhindern (ich gehe davon aus, dass Form-Daten eventuell in die Datenbankabfrage integriert werden). Ist beim Select-Feld natürlich nicht ganz so brisant, aber man sollte es sich dennoch angewöhnen.
Besonders wichtig ist das bei GET Abfragen oder wenn man input type=text hat und diese in die Datenbankabfrage einbaut.
GET Variablen sollten am besten immer nur integer sein (der Einfachheit halber. nicht zwingend) und können dann mit einem einfach "$variable = (integer) $form_variable" konvertiert werden. Damit können nur integer passieren.
Bei Strings ist das schwieriger, dort musst du dann eventuell prüfen ob unerlaubte Zeichen vorhanden sind (i.d.R. gibt man nur die erlaubten Zeichen an und überprüft ob sonst nichts weiter im string ist - unerlaubte heraussuchen wäre sehr aufwendig).

lG

Brabax
__________________

<< Wir leben bereits im morgigen Gestern, doch vom gestrigen Morgen sind wir noch weit entfernt. >>

<< Träume sind Schäume. Es liegt an dir ob du sie lebst oder ein Schaumschläger bist! >>

<< Erst wenn man beginnt zu implizieren, wird man merken, dass einem sowieso keiner richtig zuhört. >>
Brabax ist offline   Mit Zitat antworten
Alt 24.08.09, 16:28   #4 (permalink)
sw33tlull4by
Guest
 
Likes:
Standard

Von der Verwendung des Get-Arrays rate ich ab, da mann sonst einfach stupide URL-Anfragen an deinen Server schicken kann, und schauen kann was passiert.

Für die Absicherung gab es hier schonmal ein paar Threads(Stichwort prepared Statements).
Casten der Werte schützt nicht vor SQL-Injections(wie sieht es mit Strings aus),zumal PHP eine schwach getypte sprache ist.

Das Überprüfen der Eingaben der Benutzer ist auch so eine Sache:
1.macht es das ganze langsamer als nötig
2.kann man mit sicherheit Sachen übersehen.
3.Es schrängt den Benutzer in der Eingabe ein.

mfg

sw33t
  Mit Zitat antworten
Alt 24.08.09, 18:03   #5 (permalink)
Themenstarter
 
Registriert seit: 25.05.08
Nohos Leistung: Facit NTK
Likes: 0
Standard

HeyHo,

erstmal danke für eure Antworten, wenn ich euch jetz richtig verstanden habe sollte es so möglich sein :

Code:
<select name="input[]">
	  <option value='1'>-----</option>
      <option value='2'>1</option>
	  <option value='3'>2</option>
	  <option value='4'>3</option>
	  </select>
der Code für das eintragen:

PHP-Code:

if (isset($input['1']))
{
BlubBlubBlub
}
if (isset(
$input['2']))
{
BlubBlubBlub
}
...... 
Seh ich das so richtig ?

Die von dir Brabax beschriebene Art kann ich so leider nicht anwenden da bei mir das Formular durch ein komplettes "Array" läuft und ich vorher schon die input Variable zur eigentlichen Hauptvariablen mache, bevor das ganze PHP gedöns anfängt.
MfG
Nohos ist offline   Mit Zitat antworten
Alt 24.08.09, 18:40   #6 (permalink)
Member of Honour
 
Benutzerbild von Brabax
 
Registriert seit: 04.10.01
Brabax Leistung: 8086Brabax Leistung: 8086
Brabax eine Nachricht über ICQ schicken
Likes: 42
Standard

Normalerweise sollte $input in diesem Fall kein Array sein!
Deswegen auch <select name="input"> (ohne Klammern) und Auslesen via Umwandlung von POST/GET auf PHP (oder wie auch immer du deine Variable PHP-tauglich machst) und dann if($input == WERT).

D.h. du hast kein Array mit allen Werten, sondern nur diese Variable mit EINEM der Werte.
Erst bei einer möglichen Mehrfachauswahl (was ich bei dir jetzt nicht sehe, korrigier mich bitte, wenn ich falsch liege) kommt ein Array zum Einsatz.

Zitat:
...bevor das ganze PHP gedöns anfängt...
Was kommt denn bei dir vor der PHP-Verarbeitung?

lG

Brabax
__________________

<< Wir leben bereits im morgigen Gestern, doch vom gestrigen Morgen sind wir noch weit entfernt. >>

<< Träume sind Schäume. Es liegt an dir ob du sie lebst oder ein Schaumschläger bist! >>

<< Erst wenn man beginnt zu implizieren, wird man merken, dass einem sowieso keiner richtig zuhört. >>
Brabax ist offline   Mit Zitat antworten
Alt 24.08.09, 18:49   #7 (permalink)
Themenstarter
 
Registriert seit: 25.05.08
Nohos Leistung: Facit NTK
Likes: 0
Standard

hm :-)

jetz bekomm ich zweifel an meinem script :-)

Ich poste dir mal ein bisschen vom Code:

Formular:

Code:
<form method='post' action=''>
  <fieldset>
  <ol>
    <li>
      <label> Username <em>*</em></label>
      <input class="form_feld" id="username" type='text' name='input[username]' value=""/>
    </li>
   	  .........
	<li>
	  <input class="button" type="submit" value="Senden" />
	  <input class="button" type="reset"  value="Reset" />
	</li>
PHP:

PHP-Code:

$ready 
"SELECT registrierung FROM registry";
$go_ready mysql_query($ready) or die (mysql_error());
$ready_active mysql_fetch_array($go_readyMYSQL_ASSOC);
    if(!isset(
$ready_active["registrierung"]) || $ready_active["registrierung"] == "Inaktiv")
        {
        echo 
INACTIVE;
        }
    else
        {
            include (
'./templates/register.tpl');
    
                
$pattern "^([A-Za-z0-9\.|-|_]{1,60})([@])";
                
$pattern .="([A-Za-z0-9\.|-|_]{1,60})(\.)([A-Za-z]{2,3})$";
                if (isset(
$_POST['input'])){$input $_POST['input'];} 
Das sind so die ersten 15 zeilen von der register.php

Und am ende natürlich

Code:
</ol>
</fieldset>
</form>
Klar kann man da einiges besser machen, aber es funktioniert und die Benutzereingaben werden auch gefiltert dank einem anderen Thread hier im Board.

Grüße
Nohos ist offline   Mit Zitat antworten
Alt 24.08.09, 19:11   #8 (permalink)
Member of Honour
 
Benutzerbild von Brabax
 
Registriert seit: 04.10.01
Brabax Leistung: 8086Brabax Leistung: 8086
Brabax eine Nachricht über ICQ schicken
Likes: 42
Standard

Hhmhm

Jetzt verstehe ich zumindest, wie du auf den Array kommst
Alles klar.

Es wäre dann aber trotzdem nach deiner Methode _theoretisch_ so:

<select name="input[x]">
<option value='1'>-----</option> ...

... bla bla bla hier der ganze andere Code ...

if($input[x] == WERT) # WERT = Wert des value-Feldes.

Du gibst also in den VALUE-Feldern der <option>-Elemente nur an, welchen Wert die definierte Variable aus <select name="..."> haben kann.
Wenn eines der Elemente ausgewählt ist, dann wird nicht "$input['WERT']" angelegt, sondern "$input["x"] = WERT".

Teste doch einfach mal folgendes Mini-Ding, dann siehst du, wie es funktioniert:

Code:
<!-- Seite 1 -->

<form name="test" action="seite2.php" method="POST">
  <select name="variable">
  <option value="1">Wert=1</option>
  <option value="2">Wert=2</option>
  </select>
  <br>
  <input type="submit">
  </form>
Code:
# Seite 2
   echo $_POST['variable'];
Das war das ganze mit einer einfachen Variable und wie sie die VALUE-Werte verarbeitet.

Ich bin mir aber unsicher ob EIN durchgehendes Array für alle Elemente eines Formulars (nicht nur eines Mehrauswahlfeldes) auch möglich ist.
Wenn nicht, dann nimm einfach für jedes <input> Objekt eine eigene Variable (name. Aber deine Lösung, alle Formularelemente in einem Array zu speichern, finde ich nicht verkehrt. Kannst ja mal posten, ob das so funktioniert hat
__________________

<< Wir leben bereits im morgigen Gestern, doch vom gestrigen Morgen sind wir noch weit entfernt. >>

<< Träume sind Schäume. Es liegt an dir ob du sie lebst oder ein Schaumschläger bist! >>

<< Erst wenn man beginnt zu implizieren, wird man merken, dass einem sowieso keiner richtig zuhört. >>
Brabax ist offline   Mit Zitat antworten
Alt 24.08.09, 20:12   #9 (permalink)
Themenstarter
 
Registriert seit: 25.05.08
Nohos Leistung: Facit NTK
Likes: 0
Standard

Feine Sache danke dir funktioniert wunderbar jetz, habs folgender maßen gemacht:

html:

Code:
<select name="input[1]">
	  <option value='2'>-----</option>
      <option value='3'>3</option>
	  <option value='4'>4</option>
	  <option value='5'>5</option>
	  </select>
php:

PHP-Code:
if ($input['1'] == '2')
{
echo 
'Wir möchten einen Wert';
}
else
{
alles weitere

Nohos ist offline   Mit Zitat antworten
Alt 24.08.09, 20:16   #10 (permalink)
Member of Honour
 
Benutzerbild von Brabax
 
Registriert seit: 04.10.01
Brabax Leistung: 8086Brabax Leistung: 8086
Brabax eine Nachricht über ICQ schicken
Likes: 42
Standard

wunderbar
__________________

<< Wir leben bereits im morgigen Gestern, doch vom gestrigen Morgen sind wir noch weit entfernt. >>

<< Träume sind Schäume. Es liegt an dir ob du sie lebst oder ein Schaumschläger bist! >>

<< Erst wenn man beginnt zu implizieren, wird man merken, dass einem sowieso keiner richtig zuhört. >>
Brabax ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Web, Network & Multimedia Palace » (Web-) Design und webbasierte Sprachen » Auswahlfeld in MySQL eintragen
Themen-Optionen
Ansicht

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 sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Buttons wie [B] oder [I] die den BBcode in eine Textarea eintragen reaLInsanity (Web-) Design und webbasierte Sprachen 11 11.06.07 08:10
filetypes eintragen zum DL bikmaek Linux/UNIX 4 08.12.05 16:27
Automatisch Adresse eintragen.....? cynus Internet Allgemein 6 13.03.05 13:37
php und mysql aus mysql db auslesen chrisi01 (Web-) Design und webbasierte Sprachen 1 02.11.03 13:28


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61