• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Variablen ohne Formular auswerten

Discopunx

New member
Hallo zusammen,
ich hoffe die Überschrift war passend. Ich will euch das Problem jedoch etwas näher erläutern.

Ich habe folgenden Code:
HTML:
while ($zeile = mysql_fetch_array($Veranstaltungsliste)) {
$counter = $counter+1;
echo 
"<div id=%".$myId."%".$zeile["Veranstaltungs_ID"]."%".$zeile["Aufteilungs_Nr"]."%".$zeile["Gruppen_Nr"]."<!--HIER MUSS DER RAUM HIN--> class=groupItem>
<div class=itemHeader>".$zeile["Veranstaltungs_ID"]." - ".$zeile["Fachkuerzel"]." - ".$zeile["Veranstaltungsart"]." - ".$zeile["Aufteilungs_Nr"]." - ".$zeile["Gruppen_Nr"]."<a href=# class=closeEl></a></div> 
<div class=itemContent> ";
?>
<select   onChange="mustervariable(this.value)"  name="raumauswahl" id="raumauswahl" > 
<option>Raum waehlen...</option>
 <?php
  $raumliste = mysql_query("SELECT * FROM zuweisung_raum_veranstaltung 
  LEFT JOIN raumliste ON (raumliste.Raum_ID = zuweisung_raum_veranstaltung.Raum_ID)
  WHERE Veranstaltungs_ID ='".$zeile["Veranstaltungs_ID"]."  ");
  while ($zeile1 = mysql_fetch_array($raumliste)) {
	  echo "<option value=".$zeile1["Raum_ID"].">" . $zeile1["Gebaeude"] . " " . $zeile1["Raumnummer"] . "</option>";
  }
 ?>
</select>
<input id="auswahl" type="hidden" />
                               
							
</div> 
</div>
<?php 
};

und die javaskript funktion
HTML:
<script type="text/javascript">
			function mustervariable(val){
				document.getElementById('ausgabe').value = val;
			}
		</script>

Das mit der Funktion ist zur Zeit nur ein Test, ich weiss gar nicht ob das ein richtiger Ansatz ist, auch das hiddenfeld war nur ein test.

Zum Problem:
Das ganze ist ein Auszug aus einem Stundenplan der per Drag und Drop aus einer Veranstaltungsliste erstellt werden kann. Das funktioniert alles einwandfrei jedoch will ich noch eine raumauswahl mit einbeziehen. Die AUswahl funktioniert auch super aber ich weiss nicht wie ich diese auswahl jeweils als wert dahin packe, wo die fragezeichen sind....

HTML:
"<div id=%".$myId."%".$zeile["Veranstaltungs_ID"]."%".$zeile["Aufteilungs_Nr"]."%".$zeile["Gruppen_Nr"]." ??????????? class=groupItem>

ich habs auch schon mit nem formular um das select versucht aber sobald ich da was anklicke verschwindet die ganze liste. Ich hab in dem ganzen Projekt bislang nur mit $POST gearbeitet wenn ich solche werte aus einem listenfeld brauchte, aber in demfall ist das natürlich etwas komplexer.

Ich hoffe ich konnte das Problem deutlich schildern ansonsten bitte nochmal nachfragen :)
 
Zuletzt bearbeitet:
Das mit den Fragezeichen verstehe ich nicht wirklich - warum willst du etwas in die ID eines DIVs schreiben?
Ich hab' auch den Grundansatz deines Vorhabens noch nicht wirklich durchblick. Hast du einen Testlink?
 
"<div id=%".$myId."%".$zeile["Veranstaltungs_ID"]."%".$zeile["Aufteilungs_Nr"]."%".$zeile["Gruppen_Nr"]." ??????Auswahl der Select box????? class=groupItem>

Also da wo die Fragezcihen stehen soll halt die Auswahl der Selectbox hin.
Ich packe den ganzen kram in die DIVs weil ich mittels JAVASKRIPT son nettes Drag and drop menu habe. Ich ziehe also zum beispiel eine dieser DIVs auf Montag (8:15) und dann trägt er das in der Datenbank mit Montag als Datum und 8:15 als Uhrzeit ein. Jetz will ich halt für die Veranstaltung einen Raum wählen und es kommen halt verschiedene in Frage, ansonsten könnt ich ja einwach ne Fixe zuweisung machen, aber das will ich nicht.

Hier siehst du den Stundenplan. Links ist die komplette Liste und diese Elemente davon wird quasi durch den code, den ich gepostet habe erstellt, die gleichen listen gibts dann auch jeweils noch für die einzelnen felder auf der rechten seite aber das tut erstmal nichts zur sache.

beispiel.jpg
 
OK - finde ich jetzt zwar nicht ganz logisch, aber du musst ja damit arbeiten.
Du kannst die ID eines Elementes natürlich ändern:
Code:
REFERENZ_AUF_DAS_DIV.id = "was_auch_immer";
Dabei kannst du natürlich auch einfach irgendetwas ersetzten - die Logik dafür kennst nur du.
Problematischer wird warscheinlich eine Referenz auf das Div zu bekommen - außer das <select> liegt innerhalb des Divs - dann kannst du mit parentNode arbeiten.

PS: IDs dürfen keine "%" enthalten - nur 1-0, a-z, -, _, : und . - beginnen müssen sie mit einem Buchstaben.
PPS: Man kann mit HTML-Entities auch Umlaute in HTML schreiben (z.B. Ü ).
 
also das mit den '%' läuft und das brauch ich auch da ich diese id auseinanderplfücke und später mit den einzelnen Werten in die DB schreibe.

Die ID setzt sich halt aus diesen 4 Sachen zusammen und jetz muss noch die 5te mit rein, nämlich die raumauswahl.

Und wie man im code sieht liegt dieses raum select ja im div, aber ich weiss trotzdem noch nicht wie ich diese raum aus wahl da jetzt mit z.B %' dahinter bekomme.

"<div id=%".$myId."%".$zeile["Veranstaltungs_ID"]."%".$zeile["Aufteilungs_Nr"]."%".$zeile["Gruppen_Nr"]."%".$WEISSNICHTWIE?"...
 
Die ID setzt sich halt aus diesen 4 Sachen zusammen und jetz muss noch die 5te mit rein, nämlich die raumauswahl.
Du verwechselst das DOM mit einem Datenspeicher. Sicherlich sollten IDs eindeutig sein, und bei einer Webanwendung den entscheidenden Hinweis geben, welches Element denn nun angeklickt wurde, oder ursächlich für den Event war, aber daraus dann einen zusammengesetzten Datenbandwurm zu bauen kann nicht das Ziel sein.
Wobei Du ja selbst schon gemerkt hast, dass Du da mit illegalen Zeichen tricksen musst. Die Verständlichkeit der IDs und das sofortige Wissen um den Inhalt mag zwar für Dich als nettes Feature im Viordergrund stehen, aber sinnvoller wäre es hier eine separate Datenstruktur in Javascript aufzubauen, mit entsprechenden Objekten, die die einzelnen Felder als Variablen / Member enthalten und z.B. in einer einfachen Liste / Array abgelegt sind. Die IDs würden dann nur noch diese Objekte referenzieren, z.B. über die Position im Array und könnten dann so aussehen: data_0, data_1 bis data_(n-1).

[edit]Und wenn dann mal ein Feld dazukommt, dann musst Du keinen Parser anpassen, sondern führst einfach eine neue Variable für Deine Objekte ein, die IDs bleiben so, wie sie sind.

Damit trennst Du Präsentation von Logik.[/edit]
 
Zuletzt bearbeitet:
Klugscheißermodus as
und A-Z
Klugscheißermodus aus
:D - bin vom RegExp /i wohl schon versaut.

@Discopunx: 1. Albu hat recht
2. Dir scheint die Trennung von cleintseitiger und serverseitiger Ausführung der verschiedenen Sprachen (PHP und JS) nicht klar zu ein - mach' dich darüber mal schlau und durchdenke die Konsequenzen für dein Problem.
3.Wieviel JS kannst du eigentlich? (Nicht ironisch gemeint!)
 
Also irgendwie wird hier total an der Frage vorbei geredet, aber um mal kurz einige Antowrten zu geben.

Das ist ein Projekt fürs Studium und ich habe dafür html/php vor 2 Monaten angefangen zu lernen und bin sicher kein Pro. Aber das Ding wird nächste Woche abgegeben und ich war nach dieser kurzen Zeit sicher nicht in der Lage perfekt zu programmieren.

Das est optmierter laufen kann ist mir klar, mag auch sein das ich mit den Zeichen rumtrickse aber es läuft ja auch alles. :)

Ich würd halt NUR gerne wissen ob es eine möglichkeit gibt diese Raumauswahl mit in div zu übergeben??? Das hat mir immer noch keiner beantwortet.
 
Ich würd halt NUR gerne wissen ob es eine möglichkeit gibt diese Raumauswahl mit in div zu übergeben???
Und ich würde gerne wissen, was du meinst!
Willst du wissen, wie man etwas in ein HTML-Element schreibt?
Code:
htmlelement.innerHTML = "dein Text oder <strong>HTML-Code</strong>";
 
ok ich probier mal den ansatz...

man nehme ein select

<select onChange="ich glaub hier muss ne bestimmte funktion hin" id="raumauswahl" >

...meine optionen...

</select>

UND hier möchte ich mir per php das ausgewählte der select box ausgeben lassen.

<?php echo $das_selectierte_der_selectbox;?>


vernachlässigt jetz mal das was ich zuvor geschrieben habe. Wenn ich das hier weiss bekomm ich den rest hin denk ich.
 
Zuletzt bearbeitet:
Ich kann mir nur wiederholen: das 2. aus meinem letzten Beitrag.

Und das das funktioniert (und eigentlich auch wie) hab' in meinem 2. Beitrag geschrieben.

Und das 3. ist auch noch unbeantwortet.
 
Ich kann mir nur wiederholen: das 2. aus meinem letzten Beitrag.

Und das das funktioniert (und eigentlich auch wie) hab' in meinem 2. Beitrag geschrieben.

Und das 3. ist auch noch unbeantwortet.

oder um es deutlicher zu sagen:
Du hast keine Ahnung was Serverseitig und/oder Clientseitig ausgeführt wird!
 
Ja genau, ich weiss absolut nicht was Clientseite und Serverseite bedeutet /ironieende.
Ich hab nur bislang kein Javaskript verwendet und ich kann mir auch kein Buch durchlesen, nur weil ich eine Zeile brauche, genau darum wende ich mich ja an ein Forum. :)

@kapsner: ich hab nicht viel ahnung von Javaskript da ich bislang fast ausschließlich alles in html/php lösen konnte, darum ja auch meine Fragen.

Aber um auf deinen zweiten beitrag näher einzugehen.

Mein Code ist ja so aufgebaut...

"<div id=%".$myId."%".$zeile["Veranstaltungs_ID"]."%".$zeile["Aufteilungs_Nr"]."%".$zeile["Gruppen_Nr"]." class=groupItem>
....
<select onChange="meinefunktion(this.value)" name="raumauswahl" id="raumauswahl" >
...meine optionen...
</select>

Wenn ich jetz meinefunktion() hab

function meinefunktion(val){
????
}

Wie genau könnte ich dann hier auf die div id mit parentnode zugreifen bzw. besser gesagt hätt ich ja am liebten das anhängen eines wertes an die div id das halt pseudocodemäißg so ausehen müsste

parentnode.id += val;

bzw. noch präziser müsste noch das "%" davor und dann das val

Das müsste ja gehen wenn ich dich richtig verstehe
 
Zuletzt bearbeitet:
Äh - nein.
Aber poste doch bitte mal deine komlette HTML-Struktur innerhalb des DIVs - dann kann ich dir erst sagen, wie das genau funktionieren kann. (Und bitte nicht PHP posten, sondern einfach mal ein Beispiel aus dem Quelltext, der auch beim Browser ankommt - am besten mit
Code:
-Tags)
 
PHP:
while ($zeile = mysql_fetch_array($Veranstaltungsliste)) {
  $counter = $counter+1;
  echo "<div id=%".$myId."%".$zeile["Veranstaltungs_ID"]."%".$zeile["Aufteilungs_Nr"]."%".$zeile["Gruppen_Nr"]." class=groupItem>
						
<div class=itemHeader>".$zeile["Veranstaltungs_ID"]." - ".$zeile["Fachkuerzel"]." - ".$zeile["Veranstaltungsart"]." - ".$zeile["Aufteilungs_Nr"]." - ".$zeile["Gruppen_Nr"]."<a href=# class=closeEl></a></div> 
						
<div class=itemContent> ";
?>
                           
<select onChange="meinefunktion(this.value)" name="raumauswahl" id="raumauswahl" > 
<option>Raum waehlen...</option>
<?php  
								  $raumliste = mysql_query("SELECT * FROM zuweisung_raum_veranstaltung 
								  LEFT JOIN raumliste ON (raumliste.Raum_ID = zuweisung_raum_veranstaltung.Raum_ID)
WHERE Veranstaltungs_ID ='".$zeile["Veranstaltungs_ID"]."'  ");

while ($zeile1 = mysql_fetch_array($raumliste)) {
  echo "<option value=".$zeile1["Raum_ID"].">" . $zeile1["Gebaeude"] . " " . $zeile1["Raumnummer"] . "</option>"
 }
?>                          
</select>
  </div> 
</div>
<?php 
};

Sorry ich konnte das nicht vernünftig einrücken hier, ich hoffe es geht so einigermaßen.
 
Zuletzt bearbeitet von einem Moderator:
kkapsner meinte den quellcode aus dem browser, nicht aus deiner entwicklungsumgebung. also dass was am ende nach ausgabe überbleibt.
 
Code:
<td valign="top" width="150" > 8:15
            <div id="montag1" class="groupWrapper">
              <div id=%3%5%1%1 class=groupItem>
<div class=itemHeader>5 - GIP - Vorlesung - 1 - 1<a href=# class=closeEl></a></div> 
<div class=itemContent> 
							
<select   onChange="mustervariable(this.value)"  name="raumauswahl" id="raumauswahl" > 
<option>Raum waehlen...</option>
								  <option value=4>Eupenerstrasse 027</option>                                  
							    </select>
                                
</div> 
</div>
</div></td>

sprich value=4 müsste zum bsp nach der auswahl des raumes mit hier dran:
div id=%3%5%1%1

also gewünscht ist div id=%3%5%1%1%4

in dem fall gibts nur einen raum in anderen fällen natürlich auch mehrere
 
Zuletzt bearbeitet:
Ähem... Das ist PHP... Trotzdem:
Deine Struktur ist ca. so:
Code:
<div id="deine_komische_id...">
	<div class="itemHeader">...</div>
	<div class=""itemContent>
		<select>
			...
		</select>
	</div>
</div>

Mit parentNode kommst du von einer Node-Referenz zu einer Refernz dessen Elternelemt.
D.h. wenn im onchange ein this.parentNode steht bist du erst bei itemContent - du musst also this.parentNode.parentNode machen - da ich heute gut drafu bin hier dann das fertige onchange:
Code:
onchange="this.parentNode.parentNode.id += '%' + this.value"
ABER damit bekommst du natürlich Probleme, wenn du den Raum dann noch einmal ändern willst - also ist dieser Code nur ein Anfang (Hilfestellung), damit du die Richtung wenigstens bekommst.
Ein Weg wäre, die alte ID (die du von PHP bekommst) irgendwo zwischenzuspeichern (z.B.:
Code:
if (!this.idPraefix) this.idPraefix = this.parentNode.parentNode.id;
) und dann dort immer auszulesen.
 
Danke, genau das war die Zeile die ich brauchte.

Aber du hast recht, da kommt natürlich ne problematik auf wenn man mehrfach wählt. Für den Anfang sollte es jedoch so reichen, werde versuchen das ganze noch zu optimieren aber so gehts erstmal.
 
Zurück
Oben