Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Formular aktualisierung verhindern.

Frage Entwicklung PHP

Mitglied: 46356

46356 (Level 2)

27.08.2008, aktualisiert 29.08.2008, 4630 Aufrufe, 11 Kommentare

Guten Abend.

Grundsätzlich geht es um die Frage, wie ich es verhindern kann, dass Formulare, bei denen entweder die Url verändert wird oder die aktualisiert werden das Input Feld geleert wird...

Und zwar habe ich ein Formular (kurzform):

<form ... action="thispage.php" ...>
Name: <input type="text" name="name">
Nachname: Hier werden Einträge aus einer Datenbank geholt und der User muss den Link schlussendlich anklicken der seinem Nachnamen entspricht: Also
<a href="?surname=A">A</a>
Das a und b entspricht dem Wert aus der Datenbank ($row->A;)
<a href="?surname=B">B</a>
<input type="submit" value="Absenden">
</form>

<-- Noch mal zusammenfassend:
Der User schreibt seinen Vornamen in das Feld (Name).
Die Datenbank holt die Nachnamen. Der User klickt seinen Namen an. Der Nachname wandert in die Url.
Das Formular wird aktualisiert :@ und das Feld Vorname (Name) wird geleert. Dies möchte ich aber verhindern!

A ja und noch ein 2.tes Problem ergibt sich bei diesem Script:
Wird das Formular abgesendet, kann ich über $_HTTP_GET_VARS['surname'] den Nachnamen nicht mehr abrufen, da er nicht mehr in der URL steht.

Anmerkung: Dies ist nur ein Beispiel und in Echt wählt der User natürlich nicht seinen Nachnamen aus gg

Liebe Grüße und ich bin gespannt auf Eure Antworten,
Alex
Mitglied: bytecounter
28.08.2008 um 09:48 Uhr
Hi Alex,

also so ganz verstanden habe ich das noch nicht. Aber warum machst Du das Ganze nicht mit Ajax? Mit einem XML-Request hast Du das Problem mit der URL nicht mehr. Die Daten kannst Du einfach in einer Session speichern.
Solange Du Daten an eine URL hängst, kann man die jederzeit problemlos (absichtlich) "verbiegen"..

vg
Bytecounter
Bitte warten ..
Mitglied: Arano
28.08.2008 um 15:46 Uhr
Moin...

hm... warum werden die Nachnamen den als Hyperlinks angegeben ?
Wenn du auf einen von denen klickst, hat das mit dem eigentlichem Formular nichts mehr zu tun und dieses wird auch __nicht__ abgeschickt !

Verwende stattdessen doch das <select> (Dropdownliste).
Dann wird beim versenden auch der Name wieder mitgeschickt (weil jetzt das Formular ja abgeschickt wird) den du dann auch wieder anzeigen lassen kannst.
01.
<?php 
02.
  echo '<input type="text" name="name" value="'.(isset($_GET['name'] && trim($_GET['name'])!='' ? $_GET['name'] : '').'">'
03.
?>
~Arano

@bytecounter: weil dann auch ein alternativer Weg her __muss__ für all die die Javascript deaktiviert haben !
Meiner Meinung nach so schon richtig, erst ohne irgendwelchen Javascript zusätzen und dann für die Javascript Freunde mit Extras "erweitern".
Bitte warten ..
Mitglied: 46356
28.08.2008 um 21:40 Uhr
Hallo Arano!

Das mit der Dropdownliste habe ich mir auch schon überlegt.
Aber bei mir hat es nicht funktioniert.

Ich erklär nun schnell die Alterantive:
Es gibt 3 Themen.
Zum Beispiel: Thema A = IT
Thema B = Programmieren
Thema C = PHP
---
hier wird der Stammbaum angezeigt.

Was ich nun genau machen möchte ist, dass alle drei Werte aus einer Datenbank ausgegeben werden.
Und zwar so, dass es drei selects gibt.
Das A select ist immer das, das als erstens angezeigt wird. Dann klickt der User auf einen Wert von A, und das 2 Select wird angezeigt (in PHP / MySQL hätte ich das so realisiert: SELECT A, B FROM Links WHERE A = '$stammbaum von A'
Wie ist es aber möglich dass das ausgewählte Feld im select Tag sofort eine Variable zugewiesen bekommmt (sprich dass das zweite select ohne einen Butten etc. automatisch mit den Werten aufscheint, die zum ausgewählten A gehören....

Laut google wäre das Zauberwort dynamisches Dropdown.

Aber das ist Javascript und ich habe überhaupt keine Ahnung wie ich das mit einer Datenbank verknüpfen kann.

---
Das mit dem Vornamen etc. war nur einen Vereinfachung. In Wirklichkeit handelt es sich um die Links, die ich bis jetzt an die URL gehängt habe...

LG. Alex
Bitte warten ..
Mitglied: bytecounter
29.08.2008 um 09:17 Uhr
Hallo,

alles was sich erst beim Client entscheidet, ist Javascript. Wenn Du es ohne JS machen möchtest, bleibt Dir nichts anderes übrig, als das Formular nach der ersten Auswahl zum Server zu schicken, und das zweite Menu mit PHP zu erzeugen.

..wobei mir gerade einfällt: Vielleicht wären verschachtelte Auswahllisten Deine Lösung:
http://de.selfhtml.org/html/formulare/auswahl.htm#menuestruktur

vg
Bytecounter
Bitte warten ..
Mitglied: 46356
29.08.2008 um 10:50 Uhr
Hallo bytecounter!

Danke für den Tip! Das wäre genauso gut... :D
Aber lassen sich damit auch drei Optionen anzeigen?
Z.b.:
IT
->Programmieren
-->PHP
-->Java
-->C#
->Betriebssysteme:
-->Windows
-->Mac
usw.

Nach selfhtml geht das nicht:
Mit <optgroup> ist in HTML und XHTML nur eine einzige tiefere Ebene möglich, innerhalb eines optgroup-Elements darf kein weiteres optgroup-Element vorkommen. Eine Menüverschachtelung über mehrere Ebenen ist daher derzeit nicht realisierbar, auch wenn diese Möglichkeit mit den Worten "könnte eventuell später mal kommen" im HTML-Standard eingeräumt wird.

Vielleicht eine Alternative?
LG. Alex
Bitte warten ..
Mitglied: bytecounter
29.08.2008 um 11:26 Uhr
Hmm...langsam wird's trickreich

Du könntest so eine Verschachtelung auch nur grafisch realisieren:
01.
<optgroup label="IT"> 
02.
  <option style="padding-left:5px;" label="...">Programmieren</option> 
03.
  <option style="padding-left:10px;" label="...">PHP</option> 
04.
  <option style="padding-left:10px;" label="...">Java</option> 
05.
  <option style="padding-left:5px;" label="...">Betriebsyssteme</option> 
06.
  .... 
07.
</optgroup>
Durch das padding rückst Du den Text einfach weiter nach rechts, wodurch Du die verschiedenen Ebenen darstellst. Hat zwar den Nachteil, dass man auch auf Programmieren klicken kann, aber da würde ich dann auf der Folgeseite einfach alle dazugehörenden Themen auflisten.

Ansonsten doch Javascript..

vg
Bytecounter
Bitte warten ..
Mitglied: 46356
29.08.2008 um 12:10 Uhr
Hallo bytecounter!

Vielen, vielen Dank für die vielen Tips :D
Die letzte Möglichkeit erwies sich bis jetzt als die beste und ich werde die nun verwenden (DANKE)

LG. Alex
Bitte warten ..
Mitglied: 46356
29.08.2008 um 13:51 Uhr
Hallo nochmals...
Es funktioniert zwar, aber wie kann ich doppelte Einträge verhindern?

01.
							<select name="select">	 
02.
							<?php 
03.
							$abfrage = "SELECT A, B, C FROM Links"; 
04.
							$ergebnis = mysql_query($abfrage); 
05.
							while($row = mysql_fetch_object($ergebnis)) 
06.
07.
							?> 
08.
 
09.
											 
10.
							<optgroup label="<?php echo $row->A; ?>"> 
11.
							  <option style="padding-left:5px;" label="<?php echo $row->B; ?>"><?php echo $row->B; ?></option> 
12.
							  <option style="padding-left:10px;" label="<?php echo $row->C; ?>"><?php echo "-->".$row->C; ?></option> 
13.
 
14.
							<?php } ?> 
15.
							</select>
Hab mal ein Bild angehängt, dann seht ihr, wie ich es meine:
59fb6dd8e7f28cb817f741c8892ca2ee-thislike - Klicke auf das Bild, um es zu vergrößern
Bitte warten ..
Mitglied: 46356
29.08.2008 um 13:52 Uhr
Ach ja:
Distinct bzw. GROUP BY
bringen nichts...

Sonst bin ich wieder beim Ausgangsprobel ;)
LG. Alex
Bitte warten ..
Mitglied: bytecounter
29.08.2008 um 14:00 Uhr
Um das Bsp IT->asdf->asdf nehmen:

Dann steht "asdf" ja in den Spalten B und C, oder sehe ich da was falsch?
Ansonsten müsste ich mal den Aufbau Deiner Datenbank haben, falls ich das nu falsch verstanden hab.

Eventuell hilft Dir folgender Code:

01.
... 
02.
 <option style="padding-left:5px;" label="<?php echo $row->B; ?>"><?php echo $row->B; ?></option>  
03.
<?php if ($row->B != $row->C) { 
04.
  ?> 
05.
  <option style="padding-left:10px;" label="<?php echo $row->C; ?>"><?php echo "-->".$row->C; ?></option>  
06.
  <?php 
07.
08.
?> 
09.
...
Bitte warten ..
Mitglied: 46356
29.08.2008 um 14:32 Uhr
Hallo!

asdf steht sowohl in der Spalte B und in der Spalte C (also kein Fehler im Datenbankaufruf).
Mein einziges Problem ist nun, dass wie auf dem Bild zu sehen ist, jeder Eintrag seperat gelistet ist.

Aber ich möchte gerne, dass alles das zu IT gehört zusammengehört ;)

LG. Alex
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Microsoft Office
Formular Autofill - Infopath (1)

Frage von TlBERlUS zum Thema Microsoft Office ...

Windows 10
gelöst Herunterfahren RDP Windows 10 verhindern (4)

Frage von micha055 zum Thema Windows 10 ...

Apache Server
Joomla - Aktualisierung über das Backend möglich? (3)

Frage von FA-jka zum Thema Apache Server ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (18)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...