Schwierige!? Datenbankabfrage bei verknüpften Tabellen

anno_1976

Grünschnabel
Hallo Fachleute,

nachdem ich mich nun erstmalig an verknüpfte Tabellen gewagt habe, tauchen auch prompt Probleme auf. ;-)

Also ich habe ein kleines Formular, welches ich dazu nutze neue Datensätze in eine DB einzutragen. Gleichzeitig dient das Formular natürlich auch zur Bearbeitung vorhandener Daten. Möchte ich also einen vorhandenen Datensatz bearbeiten übergebe ich von einer Übersichtseite per $_GET die ID des Datensatzes an das Formular. Führe dann in Abhängigkeit davon ob eine ID übergeben wurde eine Abfrage des entsprechenden Datensatzes in der Datenbank durch. Die Textfelder im Formular lasse ich ebenfalls in Abhängigkeit einer übergebenen ID mit den Werten aus der Datenbankabfrage füllen. Unter den Formular felder befinden sich 2 auch ein Radiobuttonset. Eins davon ist mit einer verknüpften Tabelle verbunden. Bei dem nicht verbundenen Set gehe ich ähnlich vor wie bei den Textfeldern und alles prima. Beim verknüpften Radioset mache ich erstmal eine Tabellenabfrage in der Datenbank und lasse die Werte in einer Schleife ausgeben. Wie kann ich dort nun noch zusätzlich den entsprechenden Radiobutton auf aktiv setzen, dessen ID der ID der per $_GET übergebenen ID entspricht. Bei meiner unten dargestellten Version zwar die Schleife und die Ausgabe des Radiosets, aber keins davon ist entsprechend aktiv.

Ich hoffe es ist halbwegs verständlich. Ich danke schon mal für eure Vorschläge.

Code:
<?php
       include ("../Connections/db_config.php");
       
       $id = $_GET[id];
       if (!empty($id))
       {
       $abfrage="SELECT * FROM tabelle WHERE id = $id LIMIT 1 ";
       $ausgabe=mysql_query($abfrage);
       $edit = mysql_fetch_array($ausgabe);
       }
       
       <form action="eingabe_und_edit_formular.php" method="post">
       <input name="text1" type="text" value="<?php if (!empty($news_id)) echo $edit[news_id]; ?>" size="20" />
       <input name="text2" type="text" value="<?php if (!empty($news_id)) echo $edit[news_id]; ?>" size="20" />
       
 <input type="radio" name="kategorie" value="Kategorie_1" <?php if ($edit[kategorie] == "Kategorie_1") echo "checked='checked'"; ?>>
 <input type="radio" name="kategorie" value="Kategorie_2" <?php if ($edit[kategorie] == "Kategorie_2") echo "checked='checked'"; ?>>
 <input type="radio" name="kategorie" value="Kategorie_3" <?php if ($edit[kategorie] == "Kategorie_3") echo "checked='checked'"; ?>>
       
       <?php
       $abfrage="SELECT * FROM tabelle_2";
       $ausgabe=mysql_query($abfrage);
       while ($bereich = mysql_fetch_array($ausgabe))
       { 
       ?>
 <input type="radio" name="Bereich" value="<?php echo $bereich[bereich_id]; ?>" <?php if ($edit[sub_id] == $bereich[bereich_id]) echo "checked='checked'"; 
       
       ?>><?php echo $bereich[bereich_name]; ?>
       <?php 
       }
       ?>
       	
       <input type="submit" name="submit" value="Passwort ändern" />
       </form>
 
Zuletzt bearbeitet:
Wenn ich dich richtig verstanden habe, möchtest über dasselbe Formular Daten neu anzulegen und vorhandene Daten ändern ?
Vielleicht könntest du dein Problem mal ein bisschen konkreter schildern, wo hakts denn genau ? Bekommst du irgendwelche Fehlermeldungen ?
Hab genau diesen Fall erst vor kurzem umgesetzt, und könnte dir möglicherweise helfen.

Achja, verwende doch bitte beim posten von PHP-Code die entsprechende Funktion
PHP:
<? blabla ?>
 
Zuletzt bearbeitet:
Hallo,

da war meine Beschreibung wohl doch ein wenig konfus.;-) Ich probiers nochmal.
Wie du gesagt hast hab ich ein Formular mit 2 Funktionen. Datensatz NEU eintragen und Datensatz UPDATE.

Dazu muss ich erwähnen, dass ein Formularfeld dynamisch über eine Datenbankabfrage erstellt wird, welche mit einer verknüpften Tabelle verbunden ist. Datensatz neu erstellen einwandfrei. Bei Datensatz update, übergebe ich von einer Übersicht eine Datensatz ID und lasse nach Datenbankabfrage eben dieser ID die zugehörigen Werte im Formular ausgeben. auch. Dann habe ich aber noch das dynamisch erzeugte Formularfeld. Und genau hier bekomme ich den nach der Datenbankabfrage zugehörigen Eintrag nicht voreingestellt, so dass der User dieses Feld nochmal neu auswählen muss. Also ich glaub einfacher kann ich es nicht beschreiben. ;-) Ich hoffe du kannst was damit anfangen.
 
Also ich hab mir mal den Spaß gemacht, deinen Code zu überarbeiten einige Syntaxfehler zu beheben und an manchen Stellen eine PHP-Kurzschreibweise zu verwenden:

PHP:
<?php
       include ("../Connections/db_config.php");
       
       if (isset($_GET['id'])) {
           $id = $_GET['id'];
           $abfrage = "SELECT * FROM tabelle WHERE id = '".$id."' LIMIT 1";
           $ausgabe = mysql_query($abfrage);
           $edit = mysql_fetch_array($ausgabe);
       } else {
           $id ="";
       }
 ?>      
       <form action="eingabe_und_edit_formular.php" method="post">
       <input name="text1" type="text" value="<?= (!empty($news_id)) ? $edit['news_id']:"" ?>" size="20" />
       <input name="text2" type="text" value="<?= (!empty($news_id)) ? $edit['news_id']:"" ?>" size="20" />
       
 <input type="radio" name="kategorie" value="Kategorie_1" <?= $edit['kategorie'] == "Kategorie_1" ? 'checked="checked"' : ''?>>
 <input type="radio" name="kategorie" value="Kategorie_2" <?= $edit['kategorie'] == "Kategorie_2" ? 'checked="checked"' : ''?>>
 <input type="radio" name="kategorie" value="Kategorie_3" <?= $edit['kategorie'] == "Kategorie_3" ? 'checked="checked"' : ''?>>
        
       <?php
       $abfrage="SELECT * FROM tabelle_2";
       $ausgabe=mysql_query($abfrage);
       while ($bereich = mysql_fetch_array($ausgabe))
       { 
       ?>
 <input type="radio" name="Bereich" value="<?= $bereich['bereich_id']; ?>" <?= ($edit['sub_id'] == $bereich['bereich_id'])? 'checked="checked"' : '' ?>> 
       
       <?php echo $bereich['bereich_name']; 
      
       }
       ?>
       	
       <input type="submit" name="submit" value="Passwort ändern" />
       </form>

Einen Coding-Fehler kann ich aber nicht feststellen, interessant wäre noch wo und wie du die Änderungen abspeicherst. Außerdem gibt es in dem Code einige Variablen, die nirgends deklariert sind, aber ich nehme an, das geschieht irgendwo vor diesem Codeschnipsel ?
Allerdings könnte es auch sein, daß es an den Syntaxfehlern lag.
 
Zuletzt bearbeitet:
Vielen Dank,

Eine derartige Kurzschreibweise war mir gar nicht bekannt, hab sie gleich integriert und werde mich mal bisschen mit beschäftigen, um meine Arbeitszeit zu optmieren. ;-)

Bei meinem Script habe ich noch mal alle Variablen überprüft, der Fehler lag wohl daran, dass ich für die Hauptabfrage und die Formularfeldabfrage die gleichen Variablen genutzt habe. Das kommt halt von Copie & Paste. ;-) Auf jeden Fall es jetzt und ich hab ein Problem weniger.
 
Zurück