Datenbank Tabellen vom Script aus erstellen

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Guten zusammen


    Ich habe öfter mal gesehen, das einige Probleme damit haben, Datenbank tabellen zu erstellen.
    Daher dachte ich mir, das ich es euch mal Zeige, wie ihr eine Tabelle vom Script aus erstellen könnt und wie ihr auch Felder hinzufügen könnt.


    Bevor ihr was anfangen könnt, möchte ich euch auf das Thema hinweisen,
    da ich nicht alles neu erklären möchte, wenn es hier schon gemacht wurde.
    [ SCRIPTING ] MySQL (Installation, Zugriff, Einstellungen, Login & Register Beispiel)


    Wenn ihr das soweit fertig habt, dann können wir anfangen.
    Allerdings solltet ihr nicht die Tabelle erstellen wie es da beschrieben wird, sondern
    den pawnteil machen.


    Fangen wir an.
    Um eine Tabelle zu erstellen fragen wir vorher nach ob es die gibt.
    Dies Passiert bei meinen Beispielen gleich wenn er den query aufruft.
    mysql_query("CREATE TABLE IF NOT EXISTS `accounts` ()");
    Hier fragen wir ab ob es die Tabelle `accounts` gibt.
    wenn es die gibt macht er nicht weiter.
    Gibt es die aber nicht erstellt er die in den fall jetzt ohne Spalten.
    um Spalten hinzuzufügen, solltet ihr das beachten

    int = Integer (also eine Zahl)
    varchar = string (also eine Zeichenkette, wie z.b ein Name oder ein Passwort)
    float = ein Float wert (also eine zahl mit nachkomma stellen)

    Denn diese werte sind später für die Tabelle wichtig.
    Wir möchten jetzt da in die Tabelle mal den wert `id` eintragen
    Dies ist ganz einfach
    wir nehmen den Code (query) und geben da den wert ein und dahinter, was es für ein Typ ist.
    Die Typen sind im Zitat makiert!


    mysql_query("CREATE TABLE IF NOT EXISTS `accounts` (`id` int(11) AUTO_INCREMENT)");
    So hier sagen wir, das er die Tabelle `accounts` erstellen soll mit der Spalte `id`
    Dies kann er auch schon aber wenn ihr dann auf die Tabelle zugreift gibt es eine Fehlermeldung, das kein PRIMARY KEY
    angegeben wurde.
    Was bewirkt der Primary Key?
    der Primary key sagt, das es keine 0 Werte geben soll.
    Dies funktioniert nur einmal in einer Tabelle, daher nehmen wir den wert id,
    wenn ihr da ein Eintrag macht, werdet ihr sehen, das bei id nie eine 0 vorhanden ist.


    also muss der query jetzt so aussehen
    mysql_query("CREATE TABLE IF NOT EXISTS `accounts` (`id` int(11) AUTO_INCREMENT, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;");
    jetzt haben wir den Primary Key auf den wert id gesetzt.
    aber damit das auch richtig funktioniert, solltet ihr die alte Tabelle wieder löschen und dann den query neu ausführen lassen.
    Das

    Zitat

    ENGINE=MyISAM DEFAULT CHARSET=latin1;

    Sorgt dafür, das wenn ihr die tabelle leert, das der Auto_Increment wieder auf 0 gesetzt wird, sobald ihr die Tabelle leert
    man kann es auch weglassen, aber dann werden die Auto_Increment (in den fall die Spalte ID) weitergehen
    wenn ihr das gemacht habt, könnt ihr die Tabelle öffnen ohne ein Fehler zu bekommen.
    Aber jetzt braucht ihr den wert `Name` in der Tabelle.
    ich mach es mir da einfach, es gibt die Funktion
    ALTER TABLE
    hier wird bewirkt, das er eine Tabelle prüft, und fragt ob eine Spalte vorhanden ist
    ist sie da macht er nichts ist sie aber nicht vorhanden, dann Trägt er sie ein, ohne das ihr was machen müsst mit
    Navicat oder dergleichen.
    Es ist praktisch aber sie Funktion ist noch mehr
    hier mal ein kleines Muster
    mysql_query("ALTER TABLE `accounts` ADD `Name` varchar(64)");
    So hier lassen wir das machen:
    Tabelle accounts wird nach der Spalte name durchsucht
    Spalte name nicht gefunden
    Spalte Name wird erstellt.


    So ihr seht, das er die Spalte Name eingefügt hat. so wie wir es wollten.
    aber wofür steht die 64 in den Klammern?
    ganz einfach
    64 ist die Länge und da in Pawn ein name 64 Zeichen hat, setzen wir den stringwert auf 64
    Bei Passwörtern solltet ihr eine 128 nehmen


    So bei Floats sollte es so sein:
    mysql_query("ALTER TABLE `accounts` ADD `Health` float(20)");
    Hier machen wir das selbe nur mit Float werten wie z.B. Leben
    ich habe da jetzt 20 genommen, da es ein Optimaler wert ist für floats


    Bei Intgern ist es auch nichts anderes aber trotzdem tu ich jetzt dazu auch noch ein Muster rein
    mysql_query("ALTER TABLE `accounts` ADD `Skin` int(11)");
    Erklären brauch ich ja nicht mehr was er da macht
    diesmal haben wir ein Intgerwert gesetzt für Skin
    der ist 11 Zeichen lang also könnt ihr das ruhig so lassen.


    So bis hierhin war es das erstmal von mir aus wie man Tabellen vom Script aus erstellt, und hoffe mal das ihr
    damit klarkommen werdet.


    Bei Fragen steh ich in den Theard gerne zur verfügung

    All in all it's just another brick in the wall

    2 Mal editiert, zuletzt von [DT]Beavis () aus folgendem Grund: überarbeitung

  • Ja gut, aber um die Tabellen dann zu ändern bzw die user zu Bearbeiten, muss man ja phpmyadmin besitzen oder etwa nicht ?

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • du hättest noch was ergänzen können und zwar das einstellen der Tabellen Speicher-Engine und der Zeichensätze und Sortierfolgen ^^
    naja die Zeichensätze sind eher weniger wichtig eher mehr die Engine.
    Aber sonst ist das Tutorial eigentlich recht gut.

  • Du irritierst mich was meinst du?


    ^^
    Also als beispiel für die Speicher engine der Tabelle meine ist zum beispiel MyIsam, welche so gesehen die "beste" speicher engine ist beziehungsweise die schnellste und
    diese wird auch standartmäßig benutzt.
    Jetzt gibt es mit der Autoincrement funktion und MyIsam probleme und zwar solltest du die tabelle leeren sei es manuel oder mit Truncate so wird der wert der id weiter
    erhöht ja hört sich zwar nicht schlimm an jedoch je nach dem was mann macht wirkt sie das entsprechent auch darauf aus.
    damit ist gemeint das sagen wir mal der letzte Wert 5 ist und die leerst die tabelle dann hat der nächste Eintrag in der leeren Tabelle die id 6.( ja das kann man auch wieder mit ALTER TABLE zurück setzen)
    merh dazu findest du hier
    http://dev.mysql.com/doc/refman/5.1/de/storage-engines.html


    Zum Thema Zeichensätze und Sortierfolgen vllt kennst du latin1. Was man genau mit den Zeichensätzen und Sortierfolgen alles machen kann das weiß ich leider auch nicht so richtig jedoch weiß ich das du die Möglichkeit hast auch das ganze dem entsprechent für die Zeichen einzustellen, also Zeichem mit Apostrophe, Umlaute etc... .
    Einfach mal hier nach blättern
    http://dev.mysql.com/doc/refman/5.1/de/charset-mysql.html


    Code
    ENGINE=MyISAM CHARSET=latin1


    Also grundlegend will ich darauf hinaus das es noch gut wäre sowas zu erklären da es zum erstellen einer Tabelle gehört.

  • Finde es ist ein gutes Tutorial
    :thumbup:


    9/10

    [tabmenu][tab='Angebote','http://cdn3.iconfinder.com/data/icons/glyph/227/Tag-48.png']

    + Die Preise liegen bei 5-100+€ Ablauf:
    + Entweder ihr addet mich in Skype (PN vorher Schreiben) oder Ihr schreibt eine PN an mich (Betreff - Euer Wunsch z.B. Filterscript)
    + So nun schreibt ihr mir was ihr alles in dem Script haben wollt ich werd euch dann sagen ob ich es hinbekomme.
    + Dann machen wir ein groben Preis aus. Ich werde das Script erstellen und es zusammen mit dem Kunden Testen.



    [tab='Kontakt','http://cdn3.iconfinder.com/data/icons/line/36/person_add-48.png']
    edmix23

    + Bitte beim Adden angeben wer ihr seit oder per PN bescheid sagen!
    [tab='Zahlungs Methoden','https://cdn3.iconfinder.com/data/icons/line/36/check_money-32.png']
    +Paypal!
    +Direkte Banküberweisung

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen