Formulardaten aus einer Tabelle an andere übergeben

blancanieve

Grünschnabel
Hallo,

ich bin ziemlich neu in php und mysql und habe ein Problem mit einem Formular, über welches Subkategorien erstellt werden können, die gleichzeitig bestimmten Kategorien zugeordnet werden: Für Kategorien und Subkategorien existieren jeweils mysql-Tabellen mit folgender Struktur:

Tabelle kategorien

cat_id
cat_name
....

Tabelle subkategorien

sub_id
sub_name
cat_id
....

Das Formular soll nur aus den beiden Feldern Subkategorie Name (text) und Kategorie (drop-down bzw. select) bestehen. Das Drop-down-Feld soll die Namen der Kategorien enthalten, es sollen aber letztendlich die IDs dieser Kategorien in der Subkategorie-Tabelle in der Spalte cat_id gespeichert werden (eine andere Variante wäre, die Kategorienamen direkt zu speichern, z.B. in einer Spalte cat_name), um die Subkategorien eindeutig zuzuordnen.
Ich hoffe, mein Problem ist einigermaßen verständlich.

Wie bekommt man das an besten hin?:confused:

Grüße und vielen Dank im Voraus!
 
Zunächst mal einen kleine Tip verwende unterschiedlich Spalten namen in den Tabellen.Dann wirste Dir später leichter tun und es kommt weniger zu Verwechslungen.Also wenn möglich in der ganze Datenbank nur einmal einen bestimmten spalten namen verwenden.

So nun zu deinen Tabellen das ist eine Klassische 1/n Beziehung wenn man davon ausgeht das es nur mehrer subkategorien geben soll.Daher brauchst du mal einen Fremdkey in deiner 2 Tabelle.

Tabelle kategorien

cat_id
cat_name

Tabelle subkategorien

sub_id
sub_name
f_cat_id

So nun brauchst die Tabellen mit einen ganz gewöhnliche insert into befehl füllen.
Zum füllen verwendet du ein Formular wenn ich das Richtig verstanden hab.Dort fragst du alle benötigen Werte hab und schreibst dann den Datensatz in die Tabelle rein.
Bsp.
PHP:
INSERT INTO subkategorien ('sub_name',f_cat_id') values ('link','1');

Mfg Splasch
 
Hallo Splash, vielen Dank für Deine Antwort.

Ich habe schon einiges ausprobiert und bin jetzt soweit, dass ich das Formular mit einem Eingabefeld für den Subkategorienamen und einer Drop-Down-Liste zur Auswahl der Kategorien (die schon in der Tabelle vorhanden sind) hingekriegt habe. Hier der Code:

PHP:
<?php function editcategories( &$row, $option) {

global $database;

?>

<form action="index2.php" method="POST" name="adminForm">
<table>
		<tr>
			<td width="200">Subcategory</td>
			<td><input class="inputbox" type="text" name="name" size="30" value="<?php echo $row->name;?>" /></td>

		</tr>
		
		<tr>
		<td>
<?php
//drop-down box, soll kategoriennamen als select ausgeben, es soll dann aber die cat_id an andere Tabelle übergeben werden

    $query = "SELECT cat_id, name FROM kategorien"; 
    $result = mysql_query($query);
 
    echo "<select name='cat_id'>"; //wenn ich hier name statt cat_id nehme überschreibt es mir die Subkategorienamen
 
    while ($data = mysql_fetch_array($result))
    {
      echo "<option value='" . $data["cat_id"] . "'>";
      echo $data["name"] . "</option>";
    }
 
    echo "</select>";
	
//übergabe an kategorien-Tabelle	- hier hakt es
	$eintrag = "UPDATE subkategorien (cat_id) SET cat_id'";
	 
$result = mysql_query($eintrag);

?> 	
		</td></tr>


	</table>

	<input type="hidden" name="sub_id" value="<?php echo $row->sub_id; ?>" />

	<input type="hidden" name="task" value="" />

	<input type="hidden" name="option" value="<?php echo $option; ?>" />

</form>

<?php 
}
?>

Wie gesagt, das Formular funktioniert, das Problem ist nur, dass die Subkategorientabelle nicht upgedatet wird (auch nicht mit INSERT INTO statt UPDATE). Es tut sich leider gar nichts.

Das Problem mit den gleichen Spaltennamen kann ich leider nicht beheben, da sich der Code innerhalb einer Joomla-Komponente befindet und die Tabellen noch in anderem Zusammenhang verwendet werden.

Ach ja, noch kurz eine Schludrigkeit von mir in meinem ersten Post: Die Namensspalten in beiden Tabellen heißen beide name, nicht cat_name und sub_name. Aber wie gesagt, das kann ich leider nicht ändern.

Und noch eine ganz blöde Frage: Wie erstelle ich einen Fremdschlüssel, hab in phpmyadmin keine Option dazu gefunden.

Ich hoffe nochmals auf Hilfe,
Grüße
blancanieve
 
Zurück