tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
248
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    blancanieve blancanieve ist offline Grünschnabel
    Registriert seit
    Aug 2007
    Beiträge
    2
    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?

    Grüße und vielen Dank im Voraus!
     

  2. #2
    splasch splasch ist offline Mitglied Brillant
    Registriert seit
    Jul 2004
    Beiträge
    854
    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-Code:
    INSERT INTO subkategorien ('sub_name',f_cat_id') values ('link','1'); 
    Mfg Splasch
     

  3. #3
    blancanieve blancanieve ist offline Grünschnabel
    Registriert seit
    Aug 2007
    Beiträge
    2
    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-Code:
    <?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
     

Ähnliche Themen

  1. Ausgabe von Formulardaten in einer Tabelle
    Von filigrani im Forum PHP
    Antworten: 21
    Letzter Beitrag: 31.03.08, 12:12
  2. Antworten: 1
    Letzter Beitrag: 05.05.07, 19:44
  3. Bestimmte Einträge aus einer Tabelle in eine andere Tabelle kopieren
    Von medico im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 29.03.06, 18:42
  4. Antworten: 7
    Letzter Beitrag: 30.05.05, 08:55
  5. Antworten: 5
    Letzter Beitrag: 18.10.04, 20:59