Select-Felder in Abhängigkeit aus mySQL befüllen und wieder in SQL eintragen?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Select-Felder in Abhängigkeit aus mySQL befüllen und wieder in SQL eintragen?

    Moin allerseits.

    Ich habe folgende 2 Probleme:

    Problem 1:
    Ich habe ein Formular mit mehreren Select-Feldern.
    Abhängig von der Auswahl im ersten Select-Feld soll die Auswahl im zweiten bzw. dritten Select-Feld zur Auswahl stehen.
    Hatte es über ein Javascript gelöst, da aber die Datenmenge doch relativ groß wird/werden kann und zudem noch mit möglichst geringem Aufwand gewartet werden können soll, möchte ich für die Daten eine SQL-db nutzen.
    Nun soll eben in Select-Feld 1 die Daten aus Tabelle 1 auswählbar sein.
    Das funktioniert auch problemlos.
    Allerdings sollen nun im Select-Feld 2 abhängig zur Auswahl in Feld 1 die Daten aus Tabelle 2 angezeigt werden und auswählbar sein.
    Feld 1 ist wie unten zu sehen befüllt als Abteilung und dementsprechend sollen dann im zweiten Select-Feld nur die Mitglieder aus der ausgewählten Abteilung auswählbar sein

    Hab mir schon verschiedene Tut´s für Ajax angeschaut, aber das sind bisher noch böhmische Dörfer für mich.


    Problem 2:

    Wie gesagt, die Auswahl in den Select-Feldern soll dann wieder in eine weitere Tabelle der db geschrieben werden.
    Das funktioniert auch. Teilweise.

    Hab 2 verschiedene Varianten ausprobiert.
    Version 1:
    Direkt im HTML-Code
    HTML-Code:
    .... <td>
    	<?php
    	mysql_connect("localhost:666", "root", "") or die (mysql_error ());
    	mysql_select_db("test") or die(mysql_error());
    	$strSQL = "SELECT * FROM abteilung ORDER BY abt_id ASC";
    	$rs = mysql_query($strSQL);
    	echo '<select name="abteilung">';
    	while($row = mysql_fetch_array($rs)) {
    	   if ($row['unterabteilung'])
    	   {
    		   $strName = $row['abteilung'] . " - " . $row['unterabteilung'];
    	   }
    	  else
    	  {
    		  $strName = $row['abteilung'];
    	  }
    	    echo '<option value=".$strName.">'. $strName . '</br>' . '</option>';
    	  }
    	  echo '</select>';
    	mysql_close();
    	?>
    	</td>....
    Version 2:
    Per Aufruf einer PHP-Datei:
    HTML-Code:
    ...<td>
    	<?php
    	include ("list2.php");
    	?>
    	</td>...
    Und dann die PHP-Datei:
    PHP-Code:
    <?php
        mysql_connect
    ("localhost:666""root""") or die (mysql_error ());
        
    mysql_select_db("test") or die(mysql_error());
        
    $strSQL "SELECT * FROM abteilung ORDER BY abt_id ASC";
        
    $rs mysql_query($strSQL);    
        echo 
    '<select>';    
        while(
    $row mysql_fetch_array($rs)) {
           if (
    $row['unterabteilung'])
           {
               
    $strName $row['abteilung'] . " - " $row['unterabteilung'];
           }
          else
          {
              
    $strName $row['abteilung'];
          }
            echo 
    '<option value=".$strName.">'$strName '</br>' '</option>';
          }
          echo 
    '</select>';
        
    mysql_close();
    ?>
    Wie gesagt. Das Befüllen des Select-Feldes funktioniert problemlos. Beim Absenden/ Eintragen in die db steht dann
    Code:
    . $row[
    im Datenbank-Feld.

    Ich hoffe jemand kann mir (im besten Fall) nur eine fehlerhafte Sonderzeichennutzung aufzeigen.
    Oder eben einen Lösungsansatz / eine Lösung für meine Probleme zeigen.

    Ach. Als Hinweis noch. Es MUSS im IE11 funktionieren. (Und nur da)

  • #2
    1. Dein Script ist jetzt schon veraltet und wird unter PHP 7 nicht mehr laufen, da du die veralteten mysql_*-Funktionen benutzt. Stelle um auf mysqli_
    2. Ich sehe nirgendwo ein Insert

    Zitat von MorphoisII Beitrag anzeigen
    Hab mir schon verschiedene Tut´s für Ajax angeschaut, aber das sind bisher noch böhmische Dörfer für mich.
    Dann musst du dich mehr damit beschäftigen, denn es wird dir niemand ein fertiges Script liefern.


    16.14. Warum soll ich nicht SELECT * schreiben?
    http://www.php-faq.de/q/q-sql-select.html
    Zuletzt geändert von bandit600; 21.04.2017, 10:19.

    Kommentar


    • #3
      Zitat von bandit600 Beitrag anzeigen
      1. Dein Script ist jetzt schon veraltet und wird unter PHP 7 nicht mehr laufen, da du die veralteten mysql_*-Funktionen benutzt. Stelle um auf mysqli_
      2. Ich sehe nirgendwo ein Insert


      Dann musst du dich mehr damit beschäftigen, denn es wird dir niemand ein fertiges Script liefern.


      16.14. Warum soll ich nicht SELECT * schreiben?
      FAQ der Newsgroups de.comp.lang.php.* - 16.14.****Warum soll ich nicht SELECT * schreiben?
      Zu 1.: PHP7. Danke für den Hinweis. Muss ich mir mal anschauen.
      Zu 2.: Das INSERT passiert in der formular.php an die ich die Eingaben übergebe.

      PHP-Code:
      <?php
        mysql_connect
      ("localhost:666","root","")or die("Keine Verbindung moeglich");
        
      mysql_select_db("test");

      $datum $_POST['datum']; 
      $abteilung $_POST['abteilung'];
      ...
      $insert 'INSERT INTO liste 
      (datum, abteilung, ...) 
      VALUES 
      ("'
      .$datum.'", "'.$abteilung.'",.....)';

      $eintragen mysql_query($insert) or die("Fehler: ".mysql_error());
           echo 
      'Der Eintrag war erfolgreich';

      echo 
      '<a href="test.php">Zurück</a>';
      ?>
      Zu dem Hinweis bzgl des fertigen Scripts: Ich hatte gehofft, ich könnte vielleicht einen Ansatz bekommen, damit ich mich nicht komplett in die Materie einlesen muss, sondern "learning by doing".

      Zu 16.14.: Das "SELECT *" verwende ich nur weil in der Tabelle eh nur 3 bzw 4 Spalten drin stehen. Ich könnte natürlich auch "SELECT vorname, nachname, abt_id FROM..." schreiben, aber in meinem Fall ist "SELECT *" kürzer und erfüllt den gleichen Zweck.
      Bei umfangreicheren Tabellen würde ich das DEFINITIV nicht so schreiben.

      Kommentar


      • #4
        Dein Script passt nicht zur Aussage, dass ". $row[" in der DB steht.

        "Select *" ist immer kürzer, aber auch immer falsch.

        Kommentar


        • #5


          So sieht es in der Datenbank aus. Das ist die Tabelle in die der Eintrag geschrieben wird.
          Die erste Spalte sollte eigentlich das Mitglied sein das im Formular ausgewählt ist, Datum und Nummer passen aber die Abteilung passt wieder nicht.

          Kommentar


          • #6
            Also, wenn in der DB .$strName. stehen würde, könnte ich das verstehen, weil das steht bei dir im Value der Selectbox, aber wo das $row[ herkommen soll, keine Ahnung.

            Sieh' dir mal den generieten HTML-Code im Browser an.

            Kommentar

            Lädt...
            X