PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS (https://www.php-resource.de/forum/html-javascript-ajax-jquery-css-bootstrap-less/)
-   -   Select-Felder in Abhängigkeit aus mySQL befüllen und wieder in SQL eintragen? (https://www.php-resource.de/forum/html-javascript-ajax-jquery-css-bootstrap-less/105966-select-felder-in-abhaengigkeit-aus-mysql-befuellen-und-wieder-in-sql-eintragen.html)

MorphoisII 20-04-2017 14:04

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)

bandit600 21-04-2017 10:16

  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:

Zitat von MorphoisII (Beitrag 673841)
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

MorphoisII 21-04-2017 10:49

Zitat:

Zitat von bandit600 (Beitrag 673842)
  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.

bandit600 21-04-2017 11:05

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

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

MorphoisII 21-04-2017 12:22

http://imgur.com/a/WzvIY

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.

bandit600 21-04-2017 12:51

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.


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:08 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG