php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 21.12.2007, 21:47  
anonym01
Gast
 
Beiträge: n/a
Standard Tabellen für Vokabeltrainer anlegen...

Hallo,

ich habe mal eine frage
Also schonmal vorweg ... ich bin Anfänger.. :P
Also ich habe ein Vokabeltrainer fürs Web geproggt.
Mann kann sich anmelden (mit aktivirungslink).
Einloggen und Vokabeln eintragen. Danach kann man sich seine Vokabeln in einer Liste anschauen. Sich eine Statistik über jede Vokabel ansehen und die Vokabeln in einem Vokabeltrainer lernen. Dafür habe ich das Vokabelboxen Prinzip benutzt. (5 Boxen .. bei richtiger Antwort rutscht die Vokabel eine Box weiter und bei falscher kommt Sie wieder zurück in die erste. Wenn eine Vokabel in der letzten angekommen ist ist diese Vokabel "fertig gelernt")

Ich habe eine Tabelle in der ich die User speichere.

user
- id
- username
- email
- passwort
- angemeldet seit

und eine Tabelle in der ich die Vokabeln speichere...

vokabeln
- id
- uid [user-id]
- en [englische vokabel]
- de [Deutsche Vokabel]
- box
- falsch [wie oft falsch beantwortet]
- richtig [wie oft richtig beantwortet]
- zuletzt gelernt

In der Spalte uid speichere ich die User ID damit ich eindeutig zuordnen kann welche Vokabel zum welchem User gehört.

Ist das überhaupt "ordentlich" angelegt? Also sind die Tabellen in der Normalform?

So nun die eigentliche Frage

Ich möchte nun Tags programmieren.
Also der User kann wenn er eine Vokabel einträgt sagen ich möchte das die Vokabel mit dem Tag x und / oder mit dem Tag y versehen. Oder mit garkeiner!
Beim lernen soll der user dann sagen können ich will alle Vokabeln lernen oder nur die mit dem Tag x oder nur die mit dem y (etc.).

Wie würdet ihr die Tabellen anlegen?

also ich hab gedacht..

tags
- id
- vid [vokabelid - um Vokabel und Tag zuordnen zu können]
- name [name des tags]

Dann wird für jeden Tag der man einer Vokabel angibt eine eigener Eintrag angelegt..

Mit DB Tabellen anlegen tu ich mir manchmal ein bisschen schwer.... würdet ihr die Tabellen anders anlegen? Entsprechen die Tabellen überhaupt der Normalform? Ist das vill. vieeel zu umständlich und bescheuert durchdacht?

Schoneinmal vielen dank für Antworten..

Viele Grüße,
Robin
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 21.12.2007, 22:24  
Erfahrener Benutzer
 
Benutzerbild von Montellese
 
Registriert seit: 30.07.2007
Beiträge: 541
Montellese befindet sich auf einem aufstrebenden Ast
Montellese eine Nachricht über MSN schicken
Standard

Warum machst du in der Tabelle mit den Vokabeln nicht einfach noch eine Spalte "tag", wo du den jeweiligen Tag drin speicherst? Du kannst dann ja per "WHERE tag='$tag'" nur die mit dem entsprechenden Tag auslesen.

Oder habe ich das System falsch verstanden?

Was ist für dich eine Normalform bei Tabellen?
Also für mich sieht das so ok aus! Aber für die Tags extra noch ne Tabelle zu machen finde ich unnötig.
Montellese ist offline  
Alt 21.12.2007, 22:33  
anonym01
Gast
 
Beiträge: n/a
Standard

Und wie mache ich das dann wenn ich mehre Tags speichern möchte? ist das dann nicht etwas umständlich?

Da gibbts doch so Normalformen für Tabellen. Habe in der zwischenzeit mal gegoogelt..
Datenbanken entwickeln
<--- Für heute is es mir zu anstrenged die 17 Seiten durchzuarbeiten aber werde mir das morgen mal anschauen...
Hoffe ich verstehe das als anfänger..^^
 
Alt 22.12.2007, 15:47  
Benutzer
 
Registriert seit: 02.12.2007
Beiträge: 70
Drache befindet sich auf einem aufstrebenden Ast
Standard

wenn du mehrere tags speichern willst, kommst du wohl nicht um ne extra tabelle rum, wenn du's nich via php entschlüsseln willst.

zu den normalisierungen der tabellen: alles mit maß und ziel, sonst kann's vorkommen, dass performance des scripts oder wartbarkeit plötzlich verschwinden
__________________
Karteikasten
"Es gibt auch Linux-Aussteiger. Aber die Rückfallquote steigt mit jeder Win-Version." - Walter Saner in de.newusers.questions

Geändert von Drache (22.12.2007 um 15:54 Uhr).
Drache ist offline  
Alt 28.12.2007, 07:56  
Erfahrener Benutzer
 
Registriert seit: 08.08.2007
Beiträge: 549
PHP-Kenntnisse:
Fortgeschritten
drieling befindet sich auf einem aufstrebenden Ast
drieling eine Nachricht über ICQ schicken
Standard

allllllsoooo, mein Lieblingsthema, grad ne Arbeit drüber geschrieben. Normalisierung...

Erstmal vorweg, du brauchst eine extra Tabelle mit vokabel-id und user id, da es eine (so jetzt wirds schwieriger) n:m beziehung ist, d.h. eine Vokabel kann zu mehreren Usern gehören, ein User hat mehrere Vokabeln.

Wenn du das ganze wirklich verstehen möchtest, dann rate ich dir dazu, nimm dir ein paar Tage Zeit und beschäftige dich mit Normalisierung und Beziehungen von Tabellen.

Viele Grüße
Drieling
drieling ist offline  
Alt 28.12.2007, 23:49  
anonym01
Gast
 
Beiträge: n/a
Standard

Danke für die Antworten ..
Nach meinem Script würde jede Vokabel immer nur einem User gehören.
Wenn mehrere User die gleiche Vokabel eintragen wird für jeden User die Vokabel extra eingetragen..
Ist natürlich nicht gerade gut für die DB...

Also ich denke ich hab verstanden was du meinst.. (was nicht heißt das ich den ganzen Normalisierungskram verstanden habe :P - aber damit werde ich mich die nächsten tage mal beschäftigen.. )

Also bei der Tabelle Vokabel muss die uid weg..

Dann eien extra Tabelle
z.b
vokabel_zu_user // Mir fallen iwie nie ordentliche Tabellennamen ein
- vid
-uid

Wenn ein User eine Vokabel einträgt dann muss die Vokabel also in der Vokabeltabelle eingetragen werden und ein Eintrag in die Vokabel_zu_User Tabelle muss auch noch vorgenommen werden ( da wird dan die user id und der id der der gerade eingetragenen Vokabel eingetragen)
 
Alt 29.12.2007, 10:43  
Erfahrener Benutzer
 
Registriert seit: 08.08.2007
Beiträge: 549
PHP-Kenntnisse:
Fortgeschritten
drieling befindet sich auf einem aufstrebenden Ast
drieling eine Nachricht über ICQ schicken
Standard

Genau du hast es erfasst

Leider gibt es im Netz nur wenige Seiten wo der ganze Kram gut erklärt ist. Hier ein paar ansätze:
Kardinalität (Datenbanken) - Wikipedia
Normalisierung (Datenbank - Wikipedia)
drieling ist offline  
Alt 03.03.2008, 20:11  
anonym01
Gast
 
Beiträge: n/a
Standard

Hi,

Wie bekommt man den nun hin das alle Vokablen des benutzers x in einer Tabelle angezeigt werden?

Habe dazu ein kleines script geschreiben was aber nicht funzt.
Wie schaffe ich das das alle Vokablen aus der Vokablen Tabelle geholt werden? Die Ids der einzelnen Vokablen habe ich vorrher aus der User-Vokabel-Verknuepfungstabelle geholt und stehen danach in dem array $vocs...

PHP-Code:
<?php
    user_online
();
    
$sql_ver "SELECT 
                   *
               FROM
                   "
.DB_PREFIX."_user_voc_ver
               WHERE
                   uid='$_SESSION[user_id]'"
;

    
$result_ver mysql_query($sql_ver);
    
$vocs       mysql_fetch_array($result_ver);
    
$rows_ver   mysql_num_rows($result_ver);

    
$sql_voc "SELECT
                    id,
                    en,
                    de
                FROM
                    "
.DB_PREFIX."_voc
                WHERE
                    id = '$vocs'"
// alle vokabeln rausholen die im array $vocs drin sind Aber wie? :?

    
$result_voc mysql_query($sql_voc);
        
?>
        <h3>Vokabelliste</h3>
        <p>In dieser Liste stehen alle eingetragenen Vokablen.
        </p>
        <p>
          Es sind <b><?php echo $rows_ver ?></b> Vokablen eingetragen!
        </p>   
        <table style='border:ridge black; width:900px;'>
          <tr>
            <td><b>ID</b></td>
            <td><b>Englisch</b></td>
            <td><b>Deutsch</b></td>
          </tr>
        <?php
            
while ($eintrag=mysql_fetch_assoc($result_voc)) {
                echo 
"<tr>";
                foreach (
$eintrag as $key => $value) {
                    echo 
"<td><a href=\"?content=/user/bereich/voc&amp;id=$eintrag[id]\" style=\"text-decoration:none;\">$value&nbsp;</a></td>";
                }
                echo 
"</tr>";
            }
        
?>
        </table>
 
Alt 03.03.2008, 20:33  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Ich weiß nicht wie genau dein DB-Design jetzt aussieht. Aber grundsätzlich löst man sowas in der Regel mit einem JOIN:
Als z.B:
Code:
SELECT vocables.en, vocables.de FROM users_vocables JOIN vocables ON vocables.id = users_vocables.vocable_id WHERE users_vocable.user_id = 7
Wenn in vocables die Vokabeln stehen und in users_vocables die Verknüpfung von Vokabeln und Benutzern....
agrajag ist offline  
Alt 03.03.2008, 21:18  
anonym01
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von agrajag Beitrag anzeigen
Ich weiß nicht wie genau dein DB-Design jetzt aussieht. Aber grundsätzlich löst man sowas in der Regel mit einem JOIN:
Als z.B:
Code:
SELECT vocables.en, vocables.de FROM users_vocables JOIN vocables ON vocables.id = users_vocables.vocable_id WHERE users_vocable.user_id = 7
Wenn in vocables die Vokabeln stehen und in users_vocables die Verknüpfung von Vokabeln und Benutzern....
Vielen Dank für diene Hilfe.
Hat alles wunderbar geklappt
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
PHP Array in MYSQL Tabellen schreiben Matt Datenbanken 1 26.02.2008 19:43
5 tabellen miteinander verknüpfen. miwo Datenbanken 2 22.09.2007 11:17
LEFT OUTER JOIN für mehr als 2 Tabellen ? Alpha Centauri Datenbanken 4 05.04.2006 16:18
3 Tabellen verbinden madSoul Datenbanken 4 30.03.2006 15:37
Join-Abfrage über mehrere Tabellen sinai Datenbanken 3 04.02.2006 13:05
einträge aus 2 tabellen sortieren Tschuu Datenbanken 11 20.12.2005 08:21
[Erledigt] abfrage mehrere tabellen PHP Tipps 2005-2 3 31.10.2005 21:57
MySQL Daten aus verknüpften Tabellen auslesen ? PHP Tipps 2005-2 2 27.06.2005 03:21
sql über 2 tabellen PHP Tipps 2005 2 25.04.2005 21:26
[Erledigt] phpmyadmin, tabellen anlegen Datenbanken 3 15.04.2005 08:46
Probleme beim Tabellen anlegen mgoertz Datenbanken 5 07.03.2005 22:07
tabellen rows anlegen PHP Tipps 2004-2 8 14.11.2004 22:05
[Erledigt] Selectanfrage an eine Datenbank,aber aus mehreren Tabellen Datenbanken 2 26.10.2004 07:23
kann keine db und tabellen anlegen totz connect PHP Tipps 2004 3 31.08.2004 17:41
[Erledigt] fulltext suche priorität von tabellen setzen Datenbanken 1 09.08.2004 15:26

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
tabelle für vokabeln, php vokabeltrainer, vokabeltrainer php, html vokabeltrainer, englisch vokabel tabelle, vokabel tabelle, vokabelliste anlegen, vokabeltrainer html, vokabeln tabelle, tabelle vokabeln, vokabeln lernen tabelle, englisch vokabeln tabelle, php vokabeltrainer script, tabellen für vokabeln, vokabel tabellen, php vokabeln, englische vokabeln tabelle, englisch vokabel tabellen, vokabeltabelle anlegen, vokabeltrainer tabelle

Alle Zeitangaben in WEZ +1. Es ist jetzt 13:41 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum