Web MYSQL Abfrage

Dieses Thema im Forum "Programmierung" wurde erstellt von ripehostess54, 11. Februar 2015.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. ripehostess54
    Offline

    ripehostess54

    Registriert seit:
    13. Januar 2015
    Beiträge:
    43
    Ort:
    Dresden
    Ich habe folgende Frage:

    Wie suche ich mittel einens Formular nach einer Tabelle wo die Datenen des Spielers gespeichert sind. Die verbindung zur Datenbank ist aufgebaut. Kann mirjemand helefn?
     
    #1
  2. Thalion
    Offline

    Thalion

    Registriert seit:
    22. Juli 2014
    Beiträge:
    25
    Ort:
    Berlin
    Minecraft:
    Spartaner_v1
    Wäre nett zu wissen welche Scriptsprache die benutzen möchtest. Ansonsten sollte es nicht schwer sein, eine Eintrag eines Spielers zu finden.
    ( Bitte keine Tabelle pro Spieler ;) - kann auch sein, dass ich das falsch aufgreife, was du geschrieben hast.)

    Mfg,
    Thalion
     
    #2
  3. LanToaster
    Offline

    LanToaster

    Registriert seit:
    12. Juli 2011
    Beiträge:
    20
    Wenn du nicht weisst in welcher Tabelle deine Spielerdaten sind dann ist das Schlecht. Ich kenne keine Commands die ne Tabelle suchen und ausspucken.

    Ansonsten, gehe ich einfach mal aus du willst das in PHP basteln. Da geht das so:

    In dem Falle Legst du zuerst fest mit

    $DB_Table = "XY";
    $user = "YX";
    $DB_comand = "SELECT * FROM `$DB_Table` WHERE `name` like '$user'";
    $DB_querry = mysql_query($DB_comand) or die("Anfrage fehlgeschlagen: " . mysql_error());
    $DB_output = mysql_fetch_array( $DB_querry, MYSQL_ASSOC);​

    In dem Falle legst du zuerst fest welche Tabelle durchsucht wird. Dann Legst du fest welchen User er suchen soll. (In dem Beispiel liegt der Username in der Spalte: "name"
    Deine Autput hast du dann im Array:
    "$DB_output["SPALTE"]"
    wobei du jede Spalte in nem eigenem Wert im Array hast.

    Wenn du mehrere User Datensätze gleichzeitig auslesen willst, änderst du natürlich den WHERE part des DB_comands in ein anderes Suchmuster.
    Und die Output (wenn du mehrere Datensätze erwartest) holst du dann mit:

    $count = 0;
    while ($DB_output = mysql_fetch_array( $DB_querry, MYSQL_ASSOC))
    {
    $username[$count] = $DB_output['name'];$count++
    }​

    In dem fall Speicher ich ein Array mit allen Usernamen die er findet. Ich hoffe das hilft dir.


    Edit:
    DISCLAIMER:
    Sollte das ein Profi lesen, ich hab das nie gelernt. Ich Code mir das alles bei "Trial and Error" zusammen. Ergo, gibt es mit sicherheit ne Elegantere lösung.
     
    #3
  4. ripehostess54
    Offline

    ripehostess54

    Registriert seit:
    13. Januar 2015
    Beiträge:
    43
    Ort:
    Dresden
    Dankeschön @LanToaster aber leider hat jeder spieler seine eigene Tabelle

    Ich würde gerne PHP nutzen @Thalion
     
    #4
  5. 可愛い
    Offline

    可愛い

    Registriert seit:
    19. Mai 2014
    Beiträge:
    654
    Wenn jeder User seine eigene Tabelle hat, dann ist dein Datenbankdesign falsch, so macht man das nicht. Ich würd dir empfehlen, dass du dir vielleicht ein paar Beispiele ansiehst, damit du weißt wie man sowas aufbaut.
     
    #5
  6. Thalion
    Offline

    Thalion

    Registriert seit:
    22. Juli 2014
    Beiträge:
    25
    Ort:
    Berlin
    Minecraft:
    Spartaner_v1
    Du musste nur Wissen, anhand welchen Wertes du die Tabellen unterscheiden kannst.
    Der Rest wäre dann nur noch das Script zu schreiben. Alle nötigen Infos zum Überprüfen, z.B. des Tabellennamen:
    http://dev.mysql.com/doc/refman/5.0/en/show-tables.html
    http://alvinalexander.com/blog/post/mysql/list-tables-in-mysql-database

    Mfg,
    Thalion

    PS: Falls du ein Script möchtest, müssten wir wissen, woran wir eine Tabelle erkennen können bzw. woran du bestimmst, welche Tabelle zu welchem Spieler gehört. Jedoch denke ich nicht, dass "je Spieler eine Tabelle" eine gute Wahl ist. ;)
     
    #6
  7. LanToaster
    Offline

    LanToaster

    Registriert seit:
    12. Juli 2011
    Beiträge:
    20
    Ich empfehle dir das Plugin: "Online Uers"
    Läuft wunderbar, ich benutze das schon lange seid MC Beta zeit. (iirc)
    (http://dev.bukkit.org/bukkit-plugins/onlineusers/)

    Das Managed dir eine Userliste auf dem Server, neue User werden eingetragen, (namen werden geändert beim NickChange).
    Ausserdem ist das nicht so Starr programiert, und arbeitet auchnoch gut wenn du eigene Spalten in die Tabelle einfügst.
    Ich hab die Tabelle z.b. auf 22 Spalten Erweitert, um den "User Rang", Eine Gilde, Titel, verwarnungen und ähnliches zu beinhalten.
    Ich bin damit sehr zufrieden.

    Aber wie Arbeitest du denn damit wenn jeder USer seine eigene Tabelle hat?

    Edit:
    Jenachdem wie die Tabellen benannt sind, kannst du die Genaue Tabelle der User auch konstruieren.
    z.b. Wenn deine "User Tabellen" alle mit dem prefix "user_" anfangen. Und dann den Usernamen. Kannst du da genauso drauf zugreifen wie ich oben geschrieben habe.
    Jedoch änderst du folgendes:

    $user = "YX";
    $DB_Table = "user_".$user;

    Dann musst du im Command halt noch die WHERE klausel abändern zu dem was du tatsächlich in der User Tabelle suchen willst.

    $DB_comand = "SELECT * FROM `$DB_Table` WHERE `name` like '$user'";
    $DB_querry = mysql_query($DB_comand) or die("Anfrage fehlgeschlagen: " . mysql_error());
    $DB_output = mysql_fetch_array( $DB_querry, MYSQL_ASSOC);

    Das Tolle an PHP ist, das du Strings in Variabeln zusammenbauen kannst wie du lustig bist.
    Du kannst sogar die Position in nem Array zusammenbauen wie du lustig bist.
    Wenn du da deinen Kopf drum bekommst über die ganzen Theoretischen namen die du da benutzt ist das irre geil. :D
     
    #7
  8. Zumal dies ja nur in PHP geht, keine Sicherheitstechnischen bedenken gibt und kein Script Kiddy dieses Script auseinander nehmen könnte. Zudem ist es Standard Datenbank Queries durch Verkettung von Strings zu erzeugen.
    (PS: Für diejenigen, die es nicht verstehen, das ist ironie)

    Es sollten hier erstmal die Grundlagen von einer Datenbank angesehen werden. - Eine Tabelle pro User? Warum nicht direkt eine eigene Datenbank für jeden Block? Tabellen sind zum Speichern von gleichen Informationen. User sind definitiv gleich von dem Features. Es gibt absolut keine Situation, in der für jeden User eine eigene Datenbank verwendet werden muss. [Ob hier nun weitere Tabellen für verschiedene Beziehungen verwendet werden ist ziemlich irrelevant.]

    Besonders sollte man sich mit den Grundlagen von MySQL Injektion befassen oder aber direkt ein Framework verwenden, welches einem eine elegante Lösung liefert (Beispielsweise Codeigniter, Cakephp oder Yii).

    Weiterführende Literatur:
    http://tut.php-quake.net/de/ [Schlechter Stil, aber wenigstens lernt man die Grundlagen]
    http://www.little-idiot.de/mysql/mysql.html [Empfohlen von Bekannten]
     
    #8
    [Dev] iTzSasukeHDxLP gefällt das.
  9. LanToaster
    Offline

    LanToaster

    Registriert seit:
    12. Juli 2011
    Beiträge:
    20
    Vll wäre es angebrachter für die "Profis", mal ein wenig weniger Ironisch zu sein, sondern Hilfreich.
    Wenn du meinen Ersten Post hier liest, steht da genau: "Ich bin kein Profi, ich bastel Learning by Doing". Mir ist z.b. kein weg bekannt wie irgendwelche Script Kiddies an meine PHP Scripte kommen. (Ohne irgendwie anderweitig Zugriff auf meinen Server zu bekommen, was irgendwo sinnfrei wäre dann sonderlich tolle "Sicherheits Codes" in den Code zu basteln.).

    Und überhaupt: Hab ich keine Ahnung was in all andern Sprachen die ich mir nochnicht angesehen habe möglich ist, und ich nicht gesagt hab das PHP die einzige is dies kann.
    Ich hatte damit vor zum ausdruck zu bringen, das es vll nicht er erste gedanke ist, das man sich seine Variabeln aus andern Strings zusammenbauen kann, und mir das an PHP gefällt wenn ich damit arbeite.
     
    #9
    MiCrJonas gefällt das.
Status des Themas:
Es sind keine weiteren Antworten möglich.