PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   Dropdown (https://www.php-resource.de/forum/php-developer-forum/86899-dropdown.html)

Revolverheld 12-09-2007 19:03

Dropdown
 
Hallo,

also ich habe folgendes Problem und zwar habe ich eine DB in der Artikel drin sind. Zu jedem Artikel gibt es einen Zustand: Neu, Gebraucht, Alt. Nun werden bei meiner Abfrage alle Artikel schön angezeigt. Jetzt möchte ich gerne, dass der Status nicht mehr in Textform angezeigt wird, sondern in einem DropDown-Menü.
Und zwar möchst ich gerne, dass das DropDown-Menü auf der Zustand steht, in dem sich der Artikel grad befindet. Zudem soll man den Status ganz leicht ändern können und zwar stelle ich mir das wie folgt vor. Man wählt aus dem Menü einen anderen Punkt aus (Bsp: Zustand ist akt. gebraucht und soll als defekt gemeldet werden) wählt aus und wenn man die Maus dann loslässt kommt eine Box ("Wollen Sie wirklich ändern" ABBRECHEN | OK), beim OK klick wird das dann in der DB übernommen.

PHP-Code:

<p><select name="Status" size="1">
<
option value="neu">neu</option>
<
option value="gebraut">gebraucht</option>
<
option value="defekt">defekt</option>
</
select></p


BugBite 12-09-2007 21:07

http://de.selfhtml.org/html/referenz...nte.htm#option
messagebox geht nich in php
status ändern in der DB: UPDATE

futzinator 12-09-2007 21:54

und wo ist nun das Problem? Du musst schon genau sagen wo dein Problem liegt. Ich glaube nicht das hier jemand dir den Code reincodet.

Revolverheld 17-09-2007 02:07

Nein ich brauche einen fertigen Code.
Also ich versuche es mal anders zu erklären ;-)

Also mein Problem ist zu jedem Datensatz wird ein Status gespreichert (Neu, Gebraucht, usw). Nun gebe ich alle Datensätze in einer Tabelle aus. Alles kein Problem! Mein Problem ist nun nur, dass ich den Status nicht in Textform ausgeben möchte. Sondern stelle ich mir das so vor, dass es das Dropdown-Menü gibt (1. <option>Neu, 2. <option>Gebraucht). In der Datenbank ist der Status in Textform gespeichert. Nun möchte das aktuelle Status oben im Dropdown-Menü steht (Zum Beispiel bei einem gebrauchten Artikel soll das Menü wie folgt aussehen 1. <option>Neu, 2. <option selected="selected">Gebraucht. Wenn der neu wäre sollte 1. <optionselected="selected">Neu, 2. <option>Gebraucht) stehen.

Wenn das klappen würde dann wäre ich schonmal einen großen Schritt weiter. Im Moment versuche ich es mit einer IF-Else, aber das klappt nicht =(

tontechniker 17-09-2007 06:18

"... das klappt nicht" ist keine Fehlerbeschreibung, zeig doch mal deinen Versuch, fertigen Code ohne Grundlage wirst du hier sicher nicht bekommen.

Dr.Speck 17-09-2007 07:52

Hallo,

ich glaube was Du suchst sind Event-Handler von Auswahllisten. Dort gibt es z.B. "onchange" mit dem Du bei einer Änderung der Auswahl, ohne weiteren Code, ein Javascript oder eine URL aufrufen kannst.

So in der Art: <input type="....... onchange="{CODE|URL}" />

Schau mal in einer HTML-Referenz nach. Über die aufgerufene URL wird dann z.B. der Datensatz aktualisiert.

Revolverheld 17-09-2007 11:27

PHP-Code:

    if(Gebraucht == $line->status) { $status_1 'selected="selected"'; }
    elseif(
Neu == $line->status) {$status_2 'selected="selected"'; }
    elseif(
Defekt == $line->status) {$status_3 'selected="selected"'; }
    
echo 
'    <td><select>    <option value="Gebraucht" '.$status_1.'>Gebraucht</option>';
echo 
'    <option value="Neu" '.$status_2.'>Satz / Neu</option>';
echo 
'    <option value="Defekt" '.$status_3.'>Defekt</option></select></td>'

Sooo der Code, leider klappt es so NICHT!

ZombieChe 17-09-2007 11:59

1. Da der Status wohl als String aus der DB kommt, solltest du auch den Vergleich auf einen String machen ("...").
2. Lass dir $line->status doch mal ausgeben
3. Schau, was dir der Quelltext sagt.

Das ist kein Problem, das man mit einer einfachen Testausgabe nicht alleine lösen könnte...bzw. könnte der Terminus "klappt...nicht" durch eine für uns weitaus präzisere Aussage ersetzt werden.

Hier noch ein kleiner Schnipsel für dich (nicht getestet), falls du mit deinem Code unzufrieden sein solltest^^:

PHP-Code:

<?php
$status 
= array("Gebraucht"=>"Gebraucht",
                
"Neu"=>"Satz / Neu",
                
"Defekt"=>"Defekt");
//...
    
echo '<td>';
// echo $line->status; //Testausgabe könnte hier stehen...
    
echo '<select>';
    foreach (
$status as $dbstatus => $display) {
        echo 
'<option value="'.$dbstatus.'"';
        if (
$dbstatus == $line->status) echo ' selected="selected"';
        echo 
'>'.$display.'</option>';
    }
    echo 
'</select>';
    echo 
'</td>';
?>

für dein zweites Problem, schau - wie erwähnt - beim onchange event Handler nach (z.B. SelfHTML). Der könnte z.B. das Formular abschicken, wodurch du den neuen Status verarbeiten kannst...

arkos 17-09-2007 15:05

Zitat:

Zitat:

Original geschrieben von tontechniker
"... das klappt nicht" ist keine Fehlerbeschreibung, ...
Original geschrieben von Revolverheld
Sooo der Code, leider klappt es so NICHT!
grrr... beschreib deinen fehler besser....!!!

zum beispiel könntest du folgendes machen. den leuten hier

a) eine php-fehlermeldung geben (falls vorhanden)

oder b) den vom code produzierten quelltext posten - also das ergebnis.

so.
mahlzeit!

Revolverheld 18-09-2007 12:16

So mit dem Codeschnipsel von ZombieChe hat Teil 1 geklappt.
WUNDERBAR - DANKESCHÖN!

Nun probiere ich grad mit der Java Script Confirmbox rum. Das klappt bisher auch!
Rufe im Moment über über Onchange eine JS-Funktion die ich im Head definiert habe.
Nun haben sich wieder zwei neue Probleme aufgetan (-;

1) Werteübergabe: Ich möchte gerne den aktuellen Wert und den ausgewählten Wert übergeben.

PHP-Code:

confirm("Sind Sie sich sicher, dass Sie den aktuellen Status von NEU auf GEBRAUCHT ändern möchten?"); 

nun sollen natürlich NEU und GEBRAUCHT Variablen sein und vom Dropdownmenü übergeben werden.

2) Da ich ja eine Confirmbox habe werd ich wohl mit IF arbeiten. Bei false (also abbrechen) wird alles abgebrochen und bei true soll die DB geändert werden (update).

jahlives 18-09-2007 12:47

Zitat:

Ich möchte gerne den aktuellen Wert und den ausgewählten Wert übergeben.
Dann musst du wohl eine Var einführen, worauf du den alten Wert speicherst (weil im Moment des Events des onchange exisitert dieser Wert dann nicht mehr)
Den ausgewählten Wert kriegst du z.B.
Code:

var wert = document.getElementById('DeinSelect').value;

Revolverheld 18-09-2007 12:54

PHP-Code:

var wert document.getElementById('DeinSelect').value 

Das ist ja das Problem. Ich habe nun ca. 20 Dropdowns untereinander, welche ja auch alle den gleichen Namen und zum Teil die gleichen Werte haben.

Ich lese ja die Datensätze aus der DB in Form einer Tabelle aus.
Dort werden dann alle Artikel angezeigt (Textausgabe) und ich möchte nun dem User ermöglichen direkt in der Tabelle via dem Dropdown-Menü den Status der einzelnen Artikel zu ändern.

jahlives 18-09-2007 13:21

Zitat:

Ich habe nun ca. 20 Dropdowns untereinander, welche ja auch alle den gleichen Namen und zum Teil die gleichen Werte haben.
20 Optionen oder 20 Selects ? Du musst einfach jedem Select ne ID verpassen und im jeweiligen onchange auf die entsprechende ID zugreifen.

Revolverheld 18-09-2007 14:24

Das sind ja ca 20 Artikel und jeder Artikel hat einen eigenen Status. Also auch 20 <selects>.
Wie soll ich die ID dann zum JS übergeben?

arkos 18-09-2007 14:24

Zitat:

Original geschrieben von jahlives
20 Optionen oder 20 Selects ? Du musst einfach jedem Select ne ID verpassen und im jeweiligen onchange auf die entsprechende ID zugreifen.
dennoch wird er dabei nur den neuen wert bekommen. also muss er wohl noch jede selectbox mit zb nem hidden-field ausstatten, um auch den original-zustand als variable zu bekommen...


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:28 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG