mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Fr 29.03.2024 08:19 Benutzername: Passwort: Auto-Login

Thema: select-Boxen per PHP dynamisch aus ner DB füllen vom 06.07.2006


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> select-Boxen per PHP dynamisch aus ner DB füllen
Seite: 1, 2, 3  Weiter
Autor Nachricht
Nimroy
Community Manager
Threadersteller

Dabei seit: 26.05.2004
Ort: zwischen Köln und D'dorf
Alter: 45
Geschlecht: Männlich
Verfasst Do 06.07.2006 09:07
Titel

select-Boxen per PHP dynamisch aus ner DB füllen

Antworten mit Zitat Zum Seitenanfang

Nächstes Problem: Ich hab in einer Datenbank eine Liste von Namen. Die Liste bekomm ich per select-Statement auch prima ausgelesen.

1. Problem:
Code:
$ergebnis = mysql_query(blabla...);
$teilnehmer_name = mysql_fetch_array($ergebnis)


liefert mir nur den ersten eintrag von $ergebnis zurück. Wie krieg ich alle in das Array? Möchte mit dem Array nämlich noch folgende Sauerei veranstalten:




2. Problem
Die Select-Boxen sollen automatisch gefüllt werden. Da, wo jetzt noch "" stehen, soll ein Element des Arrays stehen. Sagen wir jetzt einfach mal, dass Array würde aus den drei Elementen Tick, Trick und Track bestehen. Wenn vorne Tick steht, soll die Select-Box die Namen Trick und Track beinhalten, da wo Trick steht (Zeile 2) soll Tick und Track zur Auswahl stehen usw. Also immer das, was vorne steht, wird in der Select-Box unterschlagen.

Jemand ne Idee, wie ich das angehen muss?
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
dastef

Dabei seit: 03.11.2003
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Do 06.07.2006 09:23
Titel

Antworten mit Zitat Zum Seitenanfang

http://de3.php.net/mysql_fetch_assoc

Code:
while ($row = mysql_fetch_assoc($result)) {
   echo $row["userid"];
   echo $row["fullname"];
   echo $row["userstatus"];
}


du kannst auch, wenn's dir nur drum geht, das zeug in nen array
zu kloppen folgenden source nehmen:

Code:
$row = array();
while ($row[] = mysql_fetch_assoc($result));


Das mit den Select-Boxen und bezogenen auswahlen, kann man
auf verschiedenen Wegen lösen .. entweder array kopien erstellen
oder ne funktion für schreiben die einen daraus extrahiert ..
und das ganze dann so lange wie man einträge im array hat
(aber natürlich immer wieder mit nem vollzähligen array *zwinker*)
  View user's profile Private Nachricht senden
Anzeige
Anzeige
Nimroy
Community Manager
Threadersteller

Dabei seit: 26.05.2004
Ort: zwischen Köln und D'dorf
Alter: 45
Geschlecht: Männlich
Verfasst Do 06.07.2006 09:31
Titel

Antworten mit Zitat Zum Seitenanfang

Du meinst also, den Basisarray zu nehmen, den zu durchlaufen und jedes gerade betrachtete Element mit Namen am Zeilenanfang zu vergleiche. Sind diese ungleich, kommts in nen neuen Array, ansosnten bleibts draußen.

Aber muss ich das dann nicht für jede Select-Box machen? Ist das nicht unglaublich Performance-fressend?
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
pRiMUS

Dabei seit: 09.09.2003
Ort: Vienna
Alter: 48
Geschlecht: Männlich
Verfasst Do 06.07.2006 10:26
Titel

Antworten mit Zitat Zum Seitenanfang

Code:

<?php
$sql = ("select spalte1,spalte2 from tabelle");
$query = mysql_query($sql);
?>

<select name="select">
  <?php
  while($liste = mysql_fetch_array($query))
  {
  ?>
  <option value="<?= $liste["spalte1"] ?>"><?= $liste["spalte2"] ?></option>
  <?php
  }
  ?>
</select>

<select name="select2">
  <?php
  while($liste = mysql_fetch_array($query))
  {
  ?>
  <option value="<?= $liste["spalte1"] ?>"><?= $liste["spalte2"] ?></option>
  <?php
  }
  ?>
</select>


ungetestet, sollte aber so tun. allzuperformance fressend ist es eigentlich nicht, aber afaik eh nicht anders lösbar.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Nimroy
Community Manager
Threadersteller

Dabei seit: 26.05.2004
Ort: zwischen Köln und D'dorf
Alter: 45
Geschlecht: Männlich
Verfasst Do 06.07.2006 10:41
Titel

Antworten mit Zitat Zum Seitenanfang

Au weia! * Applaus, Applaus *

Danke! Probier das nachher mal aus. Es sei denn, irgendwer widerspricht dir. *zwinker*
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Account gelöscht


Ort: -
Alter: -
Verfasst Fr 07.07.2006 07:53
Titel

Antworten mit Zitat Zum Seitenanfang

Du könntest auch die neuen pdo-funktionen von php5 verwenden, da gibts ne methode "fetchAll", die dir die komplette Ergebnismenge in eine Struktur deiner Wahl schreibt...
 
Nimroy
Community Manager
Threadersteller

Dabei seit: 26.05.2004
Ort: zwischen Köln und D'dorf
Alter: 45
Geschlecht: Männlich
Verfasst Fr 07.07.2006 08:50
Titel

Antworten mit Zitat Zum Seitenanfang

So, ich hab jetzt mal folgendes ausprobiert: (Auszug)

Code:

...
<form method='post' action='".$_SERVER['PHP_SELF']."'>");
                        $anfrage = "SELECT name FROM teilnehmer WHERE aktion = '".$_SESSION['aktions_id']."' ORDER BY `Teilnehmer_ID` ASC";
                        $ergebnis = db_query($anfrage);
                        //$ergebnis_array = mysql_fetch_row($ergebnis);
                        for($i = 0; $i < $_SESSION['fields']; $i++) {
                         echo $teilnehmer_name[$i];
                         echo '<select name="ausschluss['.$i.']">';
                         while($liste = mysql_fetch_array($ergebnis)){
                           echo '<option value="'.$liste['name'].'">'.$liste['name'].'</option>';
                         }
                         echo '</select><br />';
                        }
                    echo '<input type="submit" name="abschicken" value="Daten eintragen"/>';


echo "</form>";
...






Und das kommt dabei raus. Finde aber dummerweise den Fehler nicht. Warum werden die letzten beiden selct-boxen nicht gefüllt?

Code:
<!DOCTYPE htmp PUBLIC "-//W§C//DTD HTML 4.01 Transistional//EN">
<html><head>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="pragmas" content="no-cache">
<title>Wichtelautomat.de - Teilnehmerdaten eintragen</title>
</head>
<body>
  <div id='navi'>
     <ul>
         <li><a href='admin_index.php'>Admin-Home</a></li>

         <li><a href='new_project.php'>2. Neue Aktion anlegen</a></li>
         <li><a href='enter_dos.php'>3. Teilnehmer eintragen</a></li>
         <li><a href='enter_donts.php'>4. Ausschschlüsse festlegen</a></li>
         <li><a href='show_pairs.php'>5. Paarungen anzeigen</a></li>
         <li><a href='send_mails.php'>6. Mail verschicken</a></li>
         <li><a href='logout.php'>7. Logout</a></li>

     </ul>
</div>
<div id='content'>
   <h1>Teilnehmer für Aktion eintragen</h1>
   <form method='post' action='/wichtel/enter_donts.php'><select name="ausschluss[0]"><option value="tick">tick</option><option value="trick">trick</option><option value="track">track</option></select><br /><select name="ausschluss[1]"></select><br /><select name="ausschluss[2]"></select><br /><input type="submit" name="abschicken" value="Daten eintragen"/></form></div></body></html>




Für das Aufräumen der Optionen, sprich das Ausschließen jeweils einer Option, würd eich ne If-Schleife bauen. Würde alle Namen in ein Array packen, welches ich über die Zählervariable i durchlaufen und jeweils vor dem select anzeigen lassen würde. Die if-Schleife müsste dann doch in das while, wo ich dann das options-element mit dem vorangestellten vergleichen täte, richtig?
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
dastef

Dabei seit: 03.11.2003
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Fr 07.07.2006 09:18
Titel

Antworten mit Zitat Zum Seitenanfang

if-Abfrage - nicht Schleife!

Zudem würde ich sagen, wenn du einmal durch dein $ergebnis
durchgeloopt hast, dann steht der zeiger am Ende - ob bzw.
wie du den, wenn überhaupt, wieder nach vorne kriegst weis
ich nicht. helfen könnte, vor der bzw. als erstes in der for-
Schleife ne Kopie davon machen.

Code:
$ergebnis_tpl = ;
for()
{
  $ergebnis = $ergebnis_tpl;
  // hier dein code
}


Dann sollte das gehen. alternativ kannste natürlich auch erst
einmal vor dem ganzen schleifen zeug alle Daten auslesen und
in nen eigenes Array packen .. dann lässte die datenbank in
Ruhe *zwinker*
  View user's profile Private Nachricht senden
 
Ähnliche Themen PHP Formular: Select Boxen abfragen?
AJAX/PHP-Ausgabe mit zwei Select-Boxen
select-box option aktiviert select-box
CSS und div-Boxen
CSS-Boxen übereinander?
Problem mit div-Boxen
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2, 3  Weiter
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.