Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

PHP - Dropdown - Selektierten Text in Variable übergeben

Frage Entwicklung PHP

Mitglied: beckslevel91

beckslevel91 (Level 1) - Jetzt verbinden

01.10.2009, aktualisiert 02.10.2009, 11891 Aufrufe, 8 Kommentare

Hallo...

habe eine Frage bezüglich Dropdown:

Habe mit HTML ein Dropdownmenü erstellt, dass mit Daten aus einer MySQL-Datenbank gefüllt wird. Nun möchte ich den Selektierten Text (also nicht die Value) in eine Variable übergeben. Das ganze sieht bisher wie folgt aus, nur dass er mir dann eben die Value übergibt und nicht den Angewählten Text:

01.
... 
02.
<form method="POST"> 
03.
<?php 
04.
    $i = 1; 
05.
$filterabfrage = "SELECT * FROM tabelle WHERE abteilung = '".$filter."'"." ORDER BY name"; 
06.
$result = $db->query($filterabfrage); 
07.
			if (!$result) 
08.
09.
			die('Der Query konnte nicht ausgef&uuml;hrt werden: '.$db->error); 
10.
11.
		if ($result->num_rows) 
12.
13.
		echo '<select size="1" name="namefilter" onchange=submit()>'; 
14.
		echo '<option value="0" selected>Alle</option>'; 
15.
			while ($row = $result->fetch_assoc()) 
16.
17.
 
18.
	 
19.
		echo '<option value='.($row['name']).'>'.($row['name']).'</option>'; 
20.
		 
21.
		$i=$i+1; 
22.
23.
24.
?> 
25.
</select> 
26.
</form> 
27.
...
im anderen Formular steht nun:

01.
... 
02.
if(isset($_POST["namefilter"])) 
03.
04.
$namefilter = $_POST["namefilter"]; 
05.
} else { 
06.
$namefilter = ""; 
07.
08.
...
Wenn ich einen Datensatz "Mustermann, Hans" habe dann übergibt er in $namefilter" nur "Mustermann,", woran liegt das?

Gruß,

J.R.
Mitglied: maretz
01.10.2009 um 10:03 Uhr
Moin,

also nen kleiner Tipp am Rande: Ich würde immer versuchen die ID des Datensatzes per Select-Feld zu übergeben (d.h. wenn die Tabelle so aussieht:
ID Name
1 Mike
2 Irgendwer
3 Irgendwer anders

dann würde ich im Select-Feld nur 1, 2 oder 3 übergeben. Im Ziel-Modul kann ich mir über diese ID immer alle benötigten Werte aus der Datenbank holen - und falls das Ziel wieder in die Datenbank schreibt dann schreibe ich auch nur die ID des Users in die Tabelle...

Hintergrund ist ganz einfach: Ein Vergleich von 2 Zahlen geht immer um längen schneller als nen Text-Vergleich und ist auch unkomplizierter (je nach Abfrage ist bei dir ggf. "Mike" nicht gleich "mike" -> aber 1 ist definitiv = 1). Und ich habe - da meine ID immer ein Primary-Key und Auto-Increment ist niemals das Problem das ggf. 2x "Meyer" vorkommt -> denn Meyer 1 hat dann die ID 17, Meyer 2 hat z.B. die ID 236)

Gruß

Mike
Bitte warten ..
Mitglied: beckslevel91
01.10.2009 um 10:16 Uhr
Hey,

ja ich verstehe was Du meinst, aber das ganze ist wie folgt gegliedert:

ID Name Abteilung Betrieb
1 Mike EDV Musterbetrieb
2 Hans EDV Musterfirma
3 Mike EDV Musterfirma
...

Es geht nämlich um Praktikumsdaten von Klienten und ich will das eben erst nach Abteilung und dann nach Name filtern. Also kommt ein Name (von der gleichen Person) häufig mehrmals mit unterschiedlicher ID vor, wenn er mehrere Praktikas gemacht hat, verstehste?

Deshalb funkioniert das leider nur mit Namen statt ID.

Weißt Du, weshalb er den Namen nicht vollständig ausliest/übergibt? Die Namen werden nämlich so eingetragen: "Mustermann, Mike" und wenn ich nach dem Filtervorgang die "$namefilter" mit echo ausgebe steht da: "Mustermann," also denke ich mal es liegt am Leerschritt, aber wie kann ich das ändern, dass der gesamte Name angezeigt wird?
Mit "htmlspecialchars($row['name'])" funktioniert es nicht..

Gruß,

J.R.


PS: Im Dropdown werden die Namen vollständig angezeigt, nur eben nicht nach der Übergabe mit $_POST["namefilter"]
Bitte warten ..
Mitglied: Arano
01.10.2009 um 10:19 Uhr
Guten Morgen

du Hast ja um die <option> zu erzeugen folgendes in deinem Script:
01.
echo '<option value='.($row['name']).'>'.($row['name']).'</option>';
Wenn wir die Variable durch einen festen Text ersetzen würden, z.B. "Mustermann, Hans" kommt das dabei raus:
01.
echo '<option value=Mustermann, Hans>'.($row['name']).'</option>';
Siehst du es schon ?
Das wird folgend als Attribut=Werte erkannt:
  1. "value=Mustermann," - "value" = Attribut; "Mustermann," = Als Wert von Value
  2. "Hans" - "Hans" = Attribut
Das Leerzeichen dient hier als Trennzeichen zwischen den Attribut-Werte-Parren. Um dennoch Leerzeichen als Wert verwenden zu können, umschließt man dienen mit Anführungszeichen um so die "Recihweite" des Wertes zu bestimmten:
value="Mustermann, Hans"
01.
echo '<option value="'.($row['name']).'">'.($row['name']).'</option>';
Um solche Fehler zu vermeiden und einen einheitlichen Schreibstiel zu folgen, sollten die Werte einfach immer von Anführungszeichen umschlossen werden ;)


~Arano
Bitte warten ..
Mitglied: beckslevel91
01.10.2009 um 10:29 Uhr
Hey,

vielen Dank, ich weiß natürlich was Du meinst..

hat funktioniert.. das mit diesen Hochkommas ist mitunter sehr unübersichtlich, weshalb ich das manchmal vergesse..

jetzt läuft alles.. VIELEN DANK

=)

Gruß,

J.R.
Bitte warten ..
Mitglied: beckslevel91
01.10.2009 um 10:31 Uhr
Nächstes Problem

Mir werden Datensätze (hier: namen) die 2 Mal vorkommen auch doppelt ins Dropdownmenü geschrieben. Er filtert zwar richtig, aber wäre das i-wie möglich jeden vorhandenen Namen nur 1 mal ins Dropdownmenü zu schreiben?

Gruß,

J.R.
Bitte warten ..
Mitglied: Arano
01.10.2009 um 10:58 Uhr
Hm... Sind die Datensätze doppelt in der Datenbank ?
Immerhin ist es ja auch Möglich, das zwei Personen in verschiedenen Firmen oder Abteilungen in der selben Firma einen gleichen Namen haben !?

  • Wenn ein Datensatz zwei oder mehrfach existiert muss er gelöscht werden.
  • Bestehen doch Unterschiede zwischen den "vermeintlich" doppelten Datensätzen kannst du versuchen bei der Abfrage aus der Datenbank mit "ORDER BY", "GROUP BY", "SELECT DESTINCT" oder einer "WHERE"-Clausel die ähnlichen Datensätze von den benötigten zu filtern.


~Arano
Bitte warten ..
Mitglied: maretz
01.10.2009 um 11:15 Uhr
Moin,

in dem Fall kann ich dir ehrlich gesagt nur eines empfehlen: Grundlagen von Datenbanken zu lernen (Aufbau und wie man nen Tabellen-Design aufstellt)

Ich hätte das oben schonmal in 3 Tabellen aufgeteilt:

a) Abteilungen
ID Abteilungsname
1 EDV
2 GL
3 Kaffee-Kocher und Eierkrauler

b) Betrieb
ID Firmenname Firmenanschrift...
1 Musterfirma .....
2 XYZ .....

und c)
Person
ID Name Abteilung Betrieb
1 Mike 1 1
2 Hans 1 1
3 Gott 2 1
4 Mr. T 3 1

Warum das ganze?
a) Sind alle Abfragen die ich mache dadurch deutlich schneller.
b) Ich kann auch ohne Probleme eine Abfrage generieren "Liste mir alle User auf die in der EDV arbeiten" - ohne große String-Vergleiche zu fahren!
c) Und das beste: Ich kann einen neuen User per Drop-Downs anlegen - ohne das ich mit Tippfehlern rechnen muss... (Stell dir mal vor du hättest eine Daimler Chrysler Holding Limited Coorperation und 10 Leute die Daten in dein System hacken... Na, wieviele Schreibweisen wirst du wohl finden?)

Und zum Thema "Name kommt mehrmals vor wenn er mehrere Praktikas gemacht hat": GANZ SCHLECHT! Hier würde sich dann eine weitere Tabelle anbieten ->
UserID AbteilungsID DatumVon DatumBis
(als Beispiel). Denn so kann man genau sehen wo eine Person schon war usw... Ist es dieselbe Person mit 2 User-IDs so sind das zwei völlig verschiedene Personen. Wie erkennst du später ob die Person "Uwe Meyer" bereits ein Praktikum in der EDV gemacht hat - wenn es im Betrieb ggf. mal 2 Uwe Meyer gibt? Welcher war nun dort?
Bitte warten ..
Mitglied: beckslevel91
01.10.2009 um 11:19 Uhr
Super, danke, mit Select Distinct hats geklappt,...


Gruß,

J.R.
Bitte warten ..
Ähnliche Inhalte
PHP
HTML Dropdownmenü auslesen und in PHP als Variable übergeben
gelöst Frage von ITFloriPHP35 Kommentare

Hallo zusammen, ich habe eine Webseite erstellt in der ich ein Dropdown feld habe. Ich benötige aber nun in ...

PHP
PHP DropDown mit Hyperlinks
gelöst Frage von Tamara87PHP2 Kommentare

Hallo zusammen, Und zwar suche ich nach einer Möglichkeit HTML -Dateien aus einem Ordner Automatisch einzulesen und ausgeben zu ...

Batch & Shell
Variablen von Batch zu VBS übergeben
gelöst Frage von ciejayBatch & Shell10 Kommentare

Hallo liebe Com, ich versuche mich gerade in der Batch und vbs Programmierung und bin daher sozusagen noch Anfänger. ...

PHP
PHP Dropdown Menü, Werte aus DB
Frage von laladuduPHP3 Kommentare

Hi, ich hoffe jemand versteht mein Problem^^ Folgendes: Ich habe die Tabelle "Geräte" mit Geräte ID (PK) Gerätename raumID ...

Neue Wissensbeiträge
Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 1 StundeInternet2 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 4 StundenDSL, VDSL1 Kommentar

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Windows 10

Microsoft bestätigt DMA-Policy-Problem in Win10 v1709

Information von DerWoWusste vor 4 StundenWindows 10

Wer sein Gerät mit der DMA-Policy absichert, bekommt evtl. Hardwareprobleme in v1709 von Win10. Warum? Weil v1709 endlich "richtig" ...

Verschlüsselung & Zertifikate

Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows

Information von ticuta1 vor 8 StundenVerschlüsselung & Zertifikate

Interessant Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows SSH-Kommando in CMD.exe und PowerShell

Heiß diskutierte Inhalte
Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server19 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Hardware
Kein Bild mit nur einer bestimmten Grafikkarten - Mainboard Konfiguration
gelöst Frage von bestelittHardware18 Kommentare

Hallo zusammen, ich hatte schon einmal eine ähnliche Frage gestellt. Damals hatte ich genau das gleiche Problem. Allerdings lies ...

Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement18 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...