Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
HTML-Select Felder dynamisch nach Mysq-Query Anpassen [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
HTML-Select Felder dynamisch nach Mysq-Query Anpassen


 
masteryoda
02-03-2005, 09:38 
 
Hallo :)

mir wurde als Netzwerktechniker aufgebrummt ein Online-Anmeldesystem f. Schulungen zu "programmieren". Bin auch schon ganz schön weit gekommen (für meine Kenntnisse) aber jetzt hänge ich an folgendem Problem: Es soll ein Select-Feld mit Option-Werte angeboten werden, in dem die User die Termine auswählen können, je nachdem welchen Typ Schulung Sie aus einem vorherigen Select-Feld auswählen (Word,Outlook,Excel).

Das ganze schaut ungefähr so aus:

$kquery = "SELECT id from $table";
$resultat_k = MYSQL_QUERY($kquery);
for ($k=0; $k < MYSQL_NUM_ROWS($resultat_k); $k++); {
echo $resultat_k;
$abfrage_ergebnis_k = MYSQL_FETCH_ROW($resultat_k);
for ($k1 = 0; $k1 < MYSQL_NUM_FIELDS($resultat_k); $k1++) {
?>
<option value="xyz"><?php echo $abfrage_ergebnis_k[$k1]; ?>
<?php
}
}
?>
</option>
</select>

//Debugging
<?php echo $abfrage_ergebnis_k; ?>



Es existieren im Moment die ID-s 1-9 in der Datenbank, das Select Feld zeigt aber nur die 1 an. ein Einfaches echo der Abfrage gibt "array" aus.

wie muss das richtig heissen? O_O

PS: hier ist der gesamte Code: http://nopaste.php-q.net/118444

gruß

 
mrhappiness
02-03-2005, 09:43 
 
mysql_fetch_row liefert dir Beispielcode

Wenn du dann noch Fragen hast: Einfach fragen

 
masteryoda
02-03-2005, 09:59 
 
und was soll mir das bringen? meine sql-abfrage ist richtig (denke ich^^)
aber das einbinden in das options feld klappt nicht...ausserdem ist in deinem beispiel nur statische ausgabe geschildert , ich brauche eine for-schleife mit drinne ^^

 
mrhappiness
02-03-2005, 10:04 
 
Es gibt da auch User Contributed Notes ;)

Abgesehen davon ist deine for-Schleife viel zu früh beendet:
for ($k=0; $k < MYSQL_NUM_ROWS($resultat_k); $k++); {

 
wahsaga
02-03-2005, 10:08 
 
http://www.php-faq.de/q/q-formular-select.html

 
masteryoda
02-03-2005, 12:28 
 
hallo, danke für den Hinweis aber kann ich leider nicht benutzten da auf dem Rechner kein Pear::DB Modul installiert ist...

:(

 
wahsaga
02-03-2005, 12:59 
 
Original geschrieben von masteryoda
hallo, danke für den Hinweis aber kann ich leider nicht benutzten da auf dem Rechner kein Pear::DB Modul installiert ist...
*seufz*

PEAR::DB wird dort einzig und allein für die abfrage der daten aus der DB genutzt ... das auf eine andere art der abfrage, beispielsweise über die normalen mysql_-funktionen von PHP, umzuschreiben, ist eine recht triviale transferleisteng ...

 
Wendel
02-03-2005, 13:49 
 
mysql_num_fields gibt die Anzahl der Felder aus Deiner Ergebnismenge an.
siehe www.php.net
Da Du nur nach einer id suchst wird also auch immer nur 1 zurückgegeben.
Ähm, willst Du die Zeile Spalte für Spalte durchlaufen oder
ein und dieselbe Spalte zeile für zeile?
Is so nicht ganz klar.
$kquery = "SELECT id from $table";
$resultat_k = MYSQL_QUERY($kquery);
while ($abfrage_ergebnis_k = MYSQL_FETCH_ROW($resultat_k))
{
?>
<option value="xyz"><?php echo $abfrage_ergebnis_k[id]; ?>
<?php
}
}
?>
</option>
</select>

//Debugging
<?php print_r($abfrage_ergebnis_k); ?>

vorschlag von mir.Gehe davon aus Du willst die ids anzeigen.
while= solange da zeilen aus der Ergebnismenge zurückgegeben werden(egal wie viele)
gibt er das Feld in der die id steht wieder aus.($abfrage_ergebnis_k[2]
setz da den Spaltenindex ein z.B. [2] wenn es die dritte vorhandene Spalte ist inder die id steht.(index beginnt mit 0!)
das array kannst du Dir mit : print_r($abfrage_ergebnis_k); ausgeben lassen.
Die Ergebnismenge ($resultat) meines wissens überhaupt nicht.
Viel Spass noch.
Gruss Wendel

 
masteryoda
02-03-2005, 16:16 
 
jo, ich möchte das die ID's als Option angezeigt werden.

danke, werde das mal versuchen, bin ja nicht so ein profi programmierer :)
wird scohn irgendwie hinhauen^^

kann man die Values "xyz" auch dynamisch aus der Mysql-Abfrage definieren? ich muss diese Werte später, je nachdem der User auswählt, wieder auslesen können!


btw: gibts sowas nicht schon als rohbau fertig, ein anmeldesystem mit mysql anbindung :) ich weiss ist lame :teach: aber hab leider nicht soviel zeit muss ja meine hauptarbeit auch noch erledigen :/

 
Wendel
02-03-2005, 16:52 
 
Ja, prinzipiell kannst Du fast alles dynamisch generieren, folglich auch deine xyz-values.
Was suchst Du für ein script?
loginfunktion mit Datenbank?
Hast Du keine Datenbank als Admin von der Du nen Dump erzeugen kannst?
phpMyadmin - damit kannst Du auch nur die Struktur erstellen ohne Daten.
Den Rest musst Du Dir im Netz suchen. Hier oder goooogle!
Aber mal im Ernst, als Admin bringt Dir PHP jede Menge zwecks Automatisierung!
Also die Zeit, die Du investierst ist nicht verloren!
Aber ich kenn das....
Melde Dich wenn Du mal wieder "Kotbrocken" hast.
Alles Gute
Wendel

 
masteryoda
02-03-2005, 17:08 
 
ich bräuchte im endeffekt nur ein formular das verfügbare schulungen mit termin auf einer html seite anzeigt und für diese sich user über ein formular eintragen können. die daten sollen in einer mysql db gespeichert werden, ausgelesen wird das ganze entweder über konsole oder import in ne csv datei.

greetz

 
masteryoda
03-03-2005, 08:25 
 
thx @wendel, dein Vorschlag klappt prima ! :)

jetzt würde ich aber gerne anstelle der ID direkt das Datum anzeigen lassen im <option> feld, und habe dazu laut deiner Anweisung die Indexnummer von 0 auf
1 (die Spalte datum ist die 2.) erhöht.

Hier die MySQL Struktur der Tabelle Termin:
mysql> describe Termin;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(3) | | PRI | NULL | auto_increment |
| datum | varchar(10) | | | | |
| art | varchar(10) | | | | |
+-------+-------------+------+-----+---------+----------------+
3 rows in set (0.28 sec)

Wenn ich wie gesagt als Index 1 eintrage in :
<option value="<?php echo $abfrageergebnis_k[0]; ?>"><?php echo $abfrageergebnis_k[0]; ?></option> dann zeigt er mir 3 leere Felder (weil 3 Einträge existieren), bei Index 0 für die id zeigt er mir die 3 IDs an.


und wie löst man dies: wenn jemand in einem select - feld die values word,excel oder outlook auswählt, soll die abfrage entsprechend nach der Auswahl stattfinden.
ich habe an javascript gedacht:
<select size="1" name="schulungauswahl" onchange="Checkauswahl();">

und die Funktion Checkauswahl():
<SCRIPT type="text/javascript">
function Checkauswahl() {
if(document.FORM.schulungauswahl.selectedIndex == 2)
{ <?php $art = "'Word'"; ?>};
if(document.FORM.schulungauswahl.selectedIndex == 3)
<?php $art = "'Excel'"; ?>;
if(document.FORM.schulungauswahl.selectedIndex == 4)
<?php $art = "'Outlook'"; ?>;
JavaScript:location.reload()
}
</SCRIPT>

$art wird in die MYSQL_QUERY eingebunden:
$k_query = "SELECT id from $table where art=$art";


==> klappt aber leider nicht. :) (wie immer halt)

könnte mir da noch jemand auf die Sprünge helfen? WEnn ich das noch hinkriege dann wäre das Teil schon einsatzbereit ^^

 
masteryoda
03-03-2005, 15:59 
 
niemand? :(

 
wahsaga
03-03-2005, 16:03 
 
Original geschrieben von masteryoda
niemand? :(
darauf, zum x-ten male zu erklären, dass PHP serverseitig abläuft und javascript clientseitig, und deshalb deine funktion absolut sinnfrei ist, hat vermutlich kaum einer lust.

und deshalb warten wir jetzt einfach mal ab, bis du das selber checkst ...

 
masteryoda
03-03-2005, 17:15 
 
vielen dank für den freundlichen hinweis.

edit:
hab das Javascript herausgeworfen, ein formular mit verweis auf sich selbst erstellt, ne abfrage mit if (isset $variable) vorneweg gestellt und schon klappts.

ausserdem anstelle von mysql_fetch_row ein mysql_fetch_object und mit dem dazugehörigen echo $abfrage -> spalte , und schon klappts auch.

bedanke mich bei allen die mir geholfen haben.


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:07 Uhr.