php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
Alt 18.09.2009, 01:05  
Erfahrener Benutzer
 
Registriert seit: 08.04.2009
Beiträge: 324
Creator befindet sich auf einem aufstrebenden Ast
Standard

Ich übernehme mal dein Beispiel:
Code:
<select name="selectfeld">
<option value="0">Bitte wählen</option>
<option value="Auto">Auto</option>
<option value="Motorrad">Motorrad</option>
</select>
In diesem Fall wird Value übermittelt.
Code:
<select name="selectfeld">
<option>Bitte wählen</option>
<option>Auto</option>
<option>Motorrad</option>
</select>
Jetzt wird das zwischen den Option Tags übermittelt. Die Einzelene Option ist also nur durch diesen Wert identifizierbar.

Zitat:
Wobei man sich, denke ich, bei Textfeldern auf einen Scalarwert beschränken kann, wüsste nicht, wobei ein Array angebrachter wäre. Ebenso bei Checkboxen.
Genau das habe ich so umgesetzt. Allerdings funktionieren Checkboxen auch mit einem array.
Ich hab leider den Anwendungsfall nicht berücksichtig den ich gelegentlich mal benötige.
Als Beispiel nenne ich mal ein import in die Db aus einer CSV Datei aus. Die Daten sollen aber vorher nochmal bearbeitet werden können.
Da du nicht jeden Datensatz einzelnt bearbeiten möchtest stellt du das form in einer Tabelle da. Dann wirst du ungefär sowas haben.
Code:
<input type='text' name='adresse[]' /><br />
<input type='text' name='adresse[]' /><br />
<input type='text' name='adresse[]' /><br />
<input type='text' name='adresse[]' /><br />
<input type='text' name='adresse[]' /><br />
Dies macht das Speichern von Daten dann ziemlich einfach.
Also braucht man diese Variante immer wenn man mehrere Datensätze gleichzeitig bearbeiten möchte.

Zitat:
Naja, im Gegensatz zu Radio-Buttons kann man Checkboxen relativ "losgelöst" betrachten, d.h. sie benötigen eben nicht einen einheitlichen Namen.
Könnte man, aber macht aus meiner sicht nicht immer Sinn wenn ein User mehrere Zutaten aussuchen soll dieses per checkboxen, dann wäre es doch wunderbar das genau diese dann auch in einem array gleich vorhanden sind und nicht auf 20 namen.

Die Checkbox stellt bei mir nur ein Objekt da für eine Gruppierung kein weiteres HTML Tag nötig wäre. Bei einem Selectfeld sind es 2 Objekte eins für select und für jede option eins.
PHP-Code:
$select = new lb_ElementSelect();
        
$select->setLabel('Testselect:')
               ->
setName('select')
               ->
addOption(new lb_ElementOption('BMW''10'))
               ->
addOption(new lb_ElementOption('VW''20'))
               ->
addOption(new lb_ElementOption('Mercedes''30'))
               ->
setAttribute('label', array('class' => 'label_class'))
               ->
setAttribute('select', array('id' => 'selectmuell')); 

Geändert von Creator (18.09.2009 um 01:11 Uhr).
Creator ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 18.09.2009, 01:56  
Erfahrener Benutzer
 
Registriert seit: 28.08.2009
Beiträge: 233
PHP-Kenntnisse:
Anfänger
Steve befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Creator Beitrag anzeigen
Also braucht man diese Variante immer wenn man mehrere Datensätze gleichzeitig bearbeiten möchte.
Und warum muss es ein Array sein? Genausogut kannst du es so umsetzen:
Code:
<input type='text' name='adresse_csv_row_1'  /><br />
<input type='text' name='adresse_csv_row_2'  /><br />
<input type='text' name='adresse_csv_row_3'  /><br />
<input type='text' name='adresse_csv_row_4'  /><br />
<input type='text' name='adresse_csv_row_5'  /><br />
Zitat:
Könnte man, aber macht aus meiner sicht nicht immer Sinn wenn ein User mehrere Zutaten aussuchen soll dieses per checkboxen, dann wäre es doch wunderbar das genau diese dann auch in einem array gleich vorhanden sind und nicht auf 20 namen.
Wie gesagt, es gibt einzelne Chekboxen und gruppierte Checkboxen. Das übergeordnete Checkbox-Mutterelement gibt dann ein Array zurück.

Zitat:
Die Checkbox stellt bei mir nur ein Objekt da für eine Gruppierung kein weiteres HTML Tag nötig wäre. Bei einem Selectfeld sind es 2 Objekte eins für select und für jede option eins.
Das stimmt, eine einzelne Checkbox ist nur ein Element, eine Checkboxgruppe jedoch nicht.

So, zu der Select-Box (running Gag ) muss ich jetzt auch etwas loswerden.

Nur weil dr.e meint, dass es sich um mehrere DOM-Knoten (obwohl in seiner Applikation nicht mal DOM unterstützt wird) handelt, ist es für mich nach wie vor ein Objekt, mit einer Optionlist (Array) als Eigenschaft, dass sich auch wunderbar einem Template-Platzhalter zuweisen lässt.
Mir erschließt sich der Grund nicht, warum ich für jede Option ein eigenes Objekt erstellen sollte. Die Begründung, weil es im HTML auch so dargestellt wird, zieht nicht, da OOP so weit wie möglich abstrahiert.

Die klassischen OOP-Auto-Beispiele haben doch auch nur ein Auto-Objekt und nicht beispielsweise für alle vier Räder je ein separates Rad-Objekt. Wozu auch? - das Auto wird abstrahiert und nicht unnötig 1 zu 1 detailliert abgebildet - das macht man nur, wenn es für das Modell notwendig ist und das ist für den Fall einer Select-Box nicht gegeben.
Steve ist offline   Mit Zitat antworten
Alt 18.09.2009, 02:25  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Die Begründung, weil es im HTML auch so dargestellt wird, zieht nicht, da OOP so weit wie möglich abstrahiert.
Er hat aber noch was geschrieben: Options haben mindestens 3 Eigenschaften (value, text, selected-status (.. title, stylesheet, Klasse...)) und damit mindestens eine zuviel für ein Array. „Mindestens“ deswegen, weil genaugenommen auch non-unique Eigenschaften, die eine Option sowohl im value als auch im Text haben darf schon nicht mehr per Array sinnvoll handlebar sind.
Wenn Du jetzt mit Arrays wie
array (val , desc)
oder
array (value => val , description => desc)
kommst, sei Dir bereits im Vorfeld gesagt: Das ist auch bloß eine schlechtere Objektalternative.



Zitat:
Die klassischen OOP-Auto-Beispiele haben doch auch nur ein Auto-Objekt und nicht beispielsweise für alle vier Räder je ein separates Rad-Objekt.
Ja, weil sie vereinfachte Beispiele sind. Wenn Du das Rad als Element mit Luftdruck, Profiltiefe, Breite, Felgenart und und und betrachten willst, wird da ganz schnell ein eigenes Objekt draus.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 18.09.2009, 02:46  
Erfahrener Benutzer
 
Registriert seit: 28.08.2009
Beiträge: 233
PHP-Kenntnisse:
Anfänger
Steve befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von nikosch Beitrag anzeigen
Options haben mindestens 3 Eigenschaften (value, text, selected-status
Für mich sind das nur zwei Eigenschaften, die sich auch in einem assoziativen/nummerischen Array abbilden lassen, nämlich Option-Value und Option-Text.
Das dritte Attribut, selected, "handelt" wiederum das Select-Box-Objekt, was meiner Meinung nach auch dafür zuständig ist.

Zitat:
Ja, weil sie vereinfachte Beispiele sind. Wenn Du das Rad als Element mit Luftdruck, Profiltiefe, Breite, Felgenart und und und betrachten willst, wird da ganz schnell ein eigenes Objekt draus.
Sagte ich ja, wenn es benötigt wird, ist es OK.
Ich sehe allerdings nach wie vor keinen Grund die Options einer "Select-Box", als eigenständige Objekte abzubilden.
Steve ist offline   Mit Zitat antworten
Alt 18.09.2009, 12:03  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Code:
<select>
  <option value="#">Bitte auswählen<option>
  <option value="Tischlerei">Fensterrahmen<option>
  <option value="Tischlerei">Türrahmen<option>
  <option value="#">---<option>
  <option value="Parkettlegerei">Parkett<option>
</select>

<select>
  <option value="#">Bitte auswählen<option>
  <option value="0815">Leinentuch<option>
  <option value="0816">dito, Übergröße<option>
  <option value="1298">Wachstuch<option>
  <option value="1299">dito, Übergröße<option>
</select>
Das sind jetzt künstliche Beispiele, in der Praxis kommen aber definitiv sowohl doppelte Values als auch doppelte Beschreibungen vor.

Mann kann Selected zwar auch im Select-Objekt abbilden, disabled oder class kannst Du so aber nicht mehr sinnvoll verwalten, geschweige denn nach OOP Prinzipien.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--

Geändert von nikosch (18.09.2009 um 12:08 Uhr).
nikosch ist offline   Mit Zitat antworten
Alt 18.09.2009, 15:34  
Erfahrener Benutzer
 
Registriert seit: 08.04.2009
Beiträge: 324
Creator befindet sich auf einem aufstrebenden Ast
Standard

Also diese Variante:
Code:
<input type='text' name='adresse[1]' /><br />
<input type='text' name='adresse[2]' /><br />
<input type='text' name='adresse[3]' /><br />
<input type='text' name='adresse[4]' /><br />
<input type='text' name='adresse[5]' /><br />
Funktioniert jetzt auch Der Index muss halt gestzt sein einfach addresse[] funktioniert nicht.
In meiner setValue Methode die alle erfassten Werte wieder setzt im Fehlerfall habe ich folgendes ersetzt:
PHP-Code:
$element->setValue($_POST[$element->getName()]); 
mit
PHP-Code:
if (preg_match("!^([a-zA-Z_0-9]*)\[([a-zA-Z0-9_]*)\]$!"$element->getName(), $match)) {
    
$element->setValue($_POST[$match[1]][$match[2]]);
}
else{
    
$element->setValue($_POST[$element->getName()]);

Ob meine Lösung jetzt so elegant ist, kann ich nicht beurteilen auf alle fälle funktioniert sie wunderbar.
Creator ist offline   Mit Zitat antworten
Alt 19.09.2009, 16:12  
Erfahrener Benutzer
 
Registriert seit: 28.08.2009
Beiträge: 233
PHP-Kenntnisse:
Anfänger
Steve befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von nikosch Beitrag anzeigen
Das sind jetzt künstliche Beispiele, in der Praxis kommen aber definitiv sowohl doppelte Values als auch doppelte Beschreibungen vor.
Doppelte Beschreibungen sind ja kein Problem.
Allerdings frage ich mich, welche Option du bei der Formularwiederanzeige als selected markieren willst, wenn die Option-Values nicht unique sind? Von daher scheiden doppelte Values aus.
Steve ist offline   Mit Zitat antworten
Alt 20.09.2009, 11:34  
Erfahrener Benutzer
 
Registriert seit: 28.09.2008
Beiträge: 1.168
PHP-Kenntnisse:
Fortgeschritten
Koala befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
in der Praxis kommen aber definitiv sowohl doppelte Values als auch doppelte Beschreibungen vor
was heißt denn "in der Praxis kommen vor?"

Der html-Code sieht so aus wie DU ihn schreibst,
der fällt doch nicht vom Himmel.

Bei mir gibts weder doppelte values noch options ohne value.

Ich glaub ich hab da ein grundlegendes Verständnisproblem.

Wieso reagiert die Klasse auf "unbekannten" Code ?

Dann müßte sie auch so Fälle abfangen, bei denen option falsch geschrieben ist:

<obtion></opdschen>
Koala ist offline   Mit Zitat antworten
Alt 21.09.2009, 21:55  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Der html-Code sieht so aus wie DU ihn schreibst,
der fällt doch nicht vom Himmel.

Bei mir gibts weder doppelte values noch options ohne value.

Ich glaub ich hab da ein grundlegendes Verständnisproblem.

Wieso reagiert die Klasse auf "unbekannten" Code ?

Dann müßte sie auch so Fälle abfangen, bei denen option falsch geschrieben ist:

<obtion></opdschen>
Ich verstehe die gesamte Aussage nicht.
Zitat:
was heißt denn "in der Praxis kommen vor?"
Das heißt, beide Anwendungsfälle können durchaus in der Praxis nötig sein. Womit man keinen der Werte (value / Beschreibung) mehr als Schlüssel eines assoziativen Arrays nutzen kann.

Zitat:
Allerdings frage ich mich, welche Option du bei der Formularwiederanzeige als selected markieren willst
Das ist eine Frage der Anwendung. Technisch über das entspr. Option-Objekt. Ob Du eine Markierung des ersten gefundenen passenden Values, aller passenden Values umsetzt oder gar noch ein anderes Merkmal (Css-Klasse einer Option, Zugehörigkeit zu einer optgroup) verwendet, ist dann eine Frage der Umsetzung. Wichtig ist nur, dass dies auch umsetzbar ist, ohne Handstände.

Ein Basic-Klassiker zum Verständnis:

Code:
PHP-Code:
// assoz. Array
// $items = array (value => desc)

echo '<select name="sprachen[]">';
foreach (
$items as $value => $desc)
  {
  echo 
'<option value="' .$value'">' .$desc'</option>';
  }
echo 
'</select>'
PHP-Code:
$languages array_diff ($_POST['sprachen'] , array (''));
if (! empty (
$languages))
  echo 
'Sie sprechen: ' implode ($languages) ; 
Der Wunsch:
Code:
-- bitte auswählen --
international
  englisch
  französisch
  japanisch
West/Mitteleuropa
  englisch
  französisch
  deutsch
  belgisch
Osteuropa / Slawisch
  rumänisch
  russisch
  polnisch
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch 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] zwei Formulare - ein Eingabefeld Jasper PHP Tipps 2009 6 09.02.2009 21:40
Snoopy Formulare absenden helios PHP-Fortgeschrittene 17 26.12.2008 12:55
Formulare (Benutzer-Profil) aus MySQL generieren stockholm PHP-Fortgeschrittene 2 18.12.2008 14:11
php für mehrere formulare tosalileo PHP Tipps 2008 6 03.02.2008 18:41
Formulare automatisch ausfüllen lassen? Marlboro PHP Tipps 2008 4 23.08.2007 20:30
gehackte Formulare seb-web PHP-Fortgeschrittene 50 01.08.2006 15:59
Formulare verschachteln R4v3r HTML, Usability und Barrierefreiheit 8 16.01.2006 11:09
Mehrere Formulare auf einmal abschicken PHP Tipps 2005-2 3 23.09.2005 10:31
Formulare Fehlerbehandlung (ausgefüllt/richtiges Format,...) PHP Tipps 2005-2 2 04.09.2005 15:32
[Erledigt] zwei Formulare in einer Datei unterscheiden PHP Tipps 2005-2 5 12.08.2005 19:37
mehrere Formulare auf einer Seite kampfnickel PHP Tipps 2005 17 15.03.2005 13:37
Mehrere Formulare in einer Datei.... PHP Tipps 2005 7 10.03.2005 21:55
Formulare mit <label> oder ne Tabelle HTML, Usability und Barrierefreiheit 3 10.03.2005 21:35
zwei formulare... HTML, Usability und Barrierefreiheit 3 18.01.2005 10:38

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
gruppierte selectbox, php gruppierte radio-button frau herr, zend_form_element_select breite, wachstuch übergröße, luftdruck und felgenart, checkboxen relativ, zend_form_element_select optgroup

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