Willkommen, Gast!

Wenn dies Ihr erster Besuch in unserem Forum ist, sollten Sie sich zuerst unsere Forum-Netiquette durchlesen. Bevor Sie nun Beiträge schreiben, empfehlen wir Ihnen eine kostenlose Registrierung, da Sie durch Ihren eigenen Account deutlich mehr Features und Komfort im Forum genießen können. Wenn Sie ein bestimmtes Thema suchen, können Sie unsere Suchfunktion benutzen. Falls Sie sich bereits angemeldet haben, können Sie Ihren Account (im Menü links unter Mein Profil aufrufbar) verwalten.


Neue Beiträge, der letzten 24 Stunden
.


Es ist jetzt 20:21 Uhr.

Hardware-Mag - Forum » Software » Programmieren »
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Seiten (2): [1] 2 nächste » Neues Thema erstellen Antwort erstellen
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Mjolnir Mjolnir ist männlich
High-End-User


images/avatars/avatar-485.png

Dabei seit: 24.12.2005
Beiträge: 612

SQL - Daten werden nicht in Tabelle eingefügt Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden

Hallo,
habe das Problem, dass ich eine neue Zeile zu einer Tabelle (housekeys) hinzufügen will. Damit die Zeilen nach Entstehungszeitpunkt sortiert bleiben, habe ich auch eine Sortiervariable (housecounter), die bei jedem Hinzufügen einer neuen Zeile für "houseid" eingesetzt und dann um 1 erhöht werden soll, für die nächste neue Zeile.
Mein Code, den ich bis jetzt dazu hab, lautet:

$sql = "INSERT INTO ".db_prefix("housekeys")." (ownerid, houseid, housecounter, housename, location) VALUES (".$session[user][acctid].", SELECT MAX(housecounter) FROM ".db_prefix("housekeys").", SELECT MAX(housecounter) FROM ".db_prefix("housekeys").", , ".get_module_pref("village").")";
$sql = "UPDATE " .db_prefix("housekeys"). " SET housecounter = housecounter+1";
db_query($sql);

Das Problem: es kommt nichts in der Datenbank an. Gebe ich ihm über ein Formular die benötigten Daten (die werden weiter oben definiert), so werden diese nicht in die Tabelle eingetragen. Mit einer früheren Codeversion werden die Daten zwar eingetragen, sind aber weiterhin unsortiert, weil da noch nicht "housecounter" existiert. Der alte Code:

$sql = "INSERT INTO ".db_prefix("housekeys")." (ownerid, houseid, housename, location) VALUES (".$session[user][acctid].", ".$session[user][acctid].", , ".get_module_pref("village").")";
db_query($sql);

Wo liegt nun mein Fehler, dass das nicht in der Datenbank erscheint/gibt es eine einfacherere Lösung, die Daten nach dem Eintragungszeitpunkt sortiert zu halten?



__________________
Gigabyte GA-X58A-OC, Intel i7-980X, 12GB DDR3-RAM 2000Mhz, 2x Geforce GTX480, 1x Geforce 8800GTS, X-Fi Platinum, 3x OCZ-SSD 120GB (Raid0), watercooled

"Die Welt ist klein, gemein und gnadenlos, und jeder stirbt einsam..."

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Mjolnir: 30.06.2007 05:19.

30.06.2007 05:18 E-Mail an Mjolnir senden Homepage von Mjolnir Beiträge von Mjolnir suchen Fügen Sie Mjolnir in Ihre Kontaktliste ein
BigWhoop BigWhoop ist männlich
Redakteur


images/avatars/avatar-278.gif

Dabei seit: 02.03.2007
Beiträge: 7.168
Herkunft: Bielefeld

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden

Ach du scheisse welch ein kuddelmuddel smile

Wo soll man da anfangen ....

das ist ein chaos hoch 10 mit viel müll drin Augenzwinkern

eine sehr einfach lösung ist für dich die ausgabe dessen was du an die DB schicken willst. da wird dir sicher einiges klarer.

schreib also über

php:
1:
db_query($sql);


noch folgendes:

php:
1:
echo $sql;


wenn du siehst wie dein string aussieht dann weisst du das die DB damit nichts anfnagen kann.

was bei dir auch nicht schaden kann ist folgendes:

unter

php:
1:
db_query($sql);


machst du:

php:
1:
echo mysql_error();



Ausserdem solltest du mit den orig. funktionen arbeiten ... sowas wie db_query ist doch scheisse ! Der Befehl von php mysql_query macht das ja und ist orig.

Achja falls das da oben mit dem echo mysql_error nicht geht kannst du auch das versuchen:

aus

php:
1:
db_query($sql);


machst du:

php:
1:
db_query($sql) or die("Anfrage fehlgeschlagen: " mysql_error());




__________________
2.00000000 + 2.000000000 = 3.999998456


30.06.2007 09:51 E-Mail an BigWhoop senden Homepage von BigWhoop Beiträge von BigWhoop suchen Fügen Sie BigWhoop in Ihre Kontaktliste ein
Mjolnir Mjolnir ist männlich
High-End-User


images/avatars/avatar-485.png

Dabei seit: 24.12.2005
Beiträge: 612

Themenstarter Thema begonnen von Mjolnir
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden

Mhm. Irgendwas macht er, ich erhalte, wenn ich deine Befehle einsetz, als Debug-Ausgabe "UPDATE housekeys SET housecounter = housecounter+1".

Schön, aber in der Tabelle taucht es dennoch nicht auf;
was kann ich denn statt " ".$session[user][acctid].", " eintragen, dass er da stattdessen den größten Wert der Spalte "Housecounter" auswählt?



__________________
Gigabyte GA-X58A-OC, Intel i7-980X, 12GB DDR3-RAM 2000Mhz, 2x Geforce GTX480, 1x Geforce 8800GTS, X-Fi Platinum, 3x OCZ-SSD 120GB (Raid0), watercooled

"Die Welt ist klein, gemein und gnadenlos, und jeder stirbt einsam..."
02.07.2007 18:33 E-Mail an Mjolnir senden Homepage von Mjolnir Beiträge von Mjolnir suchen Fügen Sie Mjolnir in Ihre Kontaktliste ein
BigWhoop BigWhoop ist männlich
Redakteur


images/avatars/avatar-278.gif

Dabei seit: 02.03.2007
Beiträge: 7.168
Herkunft: Bielefeld

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden

und du bist sicher das das mit dem housecounter richtig ist ?!?

smile

du fragst echt extrem confuse sachen ... bist du sicher das du überhaupt nen Plan hast von SQL ? sonst fang doch bitte klein an und lerne erstmal wie man überhaupt was aussliest etc.



__________________
2.00000000 + 2.000000000 = 3.999998456


02.07.2007 19:19 E-Mail an BigWhoop senden Homepage von BigWhoop Beiträge von BigWhoop suchen Fügen Sie BigWhoop in Ihre Kontaktliste ein
Mjolnir Mjolnir ist männlich
High-End-User


images/avatars/avatar-485.png

Dabei seit: 24.12.2005
Beiträge: 612

Themenstarter Thema begonnen von Mjolnir
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden

Nein, bin ich nicht. *sfz*
Du hast recht, ich hab noch nicht viel SQL drauf, das Problem ist nur: ich muss es trotzdem hinkriegen, weil derjenige, der das Teil ursprünglich einbauen sollte, verschollen gegangen ist und ich der einzige bin, der wenigstens halbwegs PHP kann und immerhin SQL-Code versteht, wenn er ihn liesst.

housecounter war eine Sortiervariable, deren Spalte ich bei der Erstellung der Tabelle mit

`housecounter` int( 11 ) unsigned NOT NULL default 0,

eingebaut habe. Oder andere Lösung, die Tabelle zu sortieren? *hilflos guck*



__________________
Gigabyte GA-X58A-OC, Intel i7-980X, 12GB DDR3-RAM 2000Mhz, 2x Geforce GTX480, 1x Geforce 8800GTS, X-Fi Platinum, 3x OCZ-SSD 120GB (Raid0), watercooled

"Die Welt ist klein, gemein und gnadenlos, und jeder stirbt einsam..."
03.07.2007 08:38 E-Mail an Mjolnir senden Homepage von Mjolnir Beiträge von Mjolnir suchen Fügen Sie Mjolnir in Ihre Kontaktliste ein
BigWhoop BigWhoop ist männlich
Redakteur


images/avatars/avatar-278.gif

Dabei seit: 02.03.2007
Beiträge: 7.168
Herkunft: Bielefeld

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden

du kannst die tabelle beim auslesen schon von mysql sortieren lassen smile

mit der ORDER BY clausel.

Ich meine ja du solltest dir mal die syntax anschauen.
da steht eigentlich alles drin.

http://dev.mysql.com/doc/refman/5.1/de/index.html
^^ das ist die ganze reference.

http://dev.mysql.com/doc/refman/5.1/en/query-speed.html
^^ und das ist speziell eine SELECT optimierungs seite smile



__________________
2.00000000 + 2.000000000 = 3.999998456


03.07.2007 11:10 E-Mail an BigWhoop senden Homepage von BigWhoop Beiträge von BigWhoop suchen Fügen Sie BigWhoop in Ihre Kontaktliste ein
Mjolnir Mjolnir ist männlich
High-End-User


images/avatars/avatar-485.png

Dabei seit: 24.12.2005
Beiträge: 612

Themenstarter Thema begonnen von Mjolnir
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden

Auf die Idee, ins Entwicklerhandbuch nach der Syntax zu gucken, hätt ich eigentlich auch selbst kommen können ~.~ - danke!

Habe das ganze mit counter, blablabla nun rausgeschmissen und durch einen einfachen Zeitstempel in der Spalte `creationtime´ ersetzt:

$sql = "INSERT INTO ".db_prefiböse "housekeys")." (ownerid, houseid, housename, location, creationtime) VALUES (".$session[user][acctid].", ".$session[user][acctid].", , ".get_module_pref("village").",CURRENT_TIMESTAMP)";

Funktioniert auch ausgezeichnet, habe da nun das Datum drinstehen, nur jetzt die Frage zum Thema order by: irgendwie krieg ichs anhand der Syntax, die da angegeben ist, nicht hin, die Daten zu sortieren; mein Select-Befehl, den ich sortieren muss, lautet wohl

$sql = "SELECT * FROM ".db_prefiböse "housekeys")." WHERE ownerid=".$session[user][acctid]." AND location=".$session[user][location]."";

Wenn ich da nun aber ein "order by `creationtime` ASC" dranhänge, sortiert er trotzdem nicht - gibt es eine spezielle Order by-Syntax, um nach Datum zu sortieren? Dazu hab ich im Referencemanual nix gefunden, oder ich war zu doof zum Suchen...



__________________
Gigabyte GA-X58A-OC, Intel i7-980X, 12GB DDR3-RAM 2000Mhz, 2x Geforce GTX480, 1x Geforce 8800GTS, X-Fi Platinum, 3x OCZ-SSD 120GB (Raid0), watercooled

"Die Welt ist klein, gemein und gnadenlos, und jeder stirbt einsam..."
03.07.2007 18:35 E-Mail an Mjolnir senden Homepage von Mjolnir Beiträge von Mjolnir suchen Fügen Sie Mjolnir in Ihre Kontaktliste ein
BigWhoop BigWhoop ist männlich
Redakteur


images/avatars/avatar-278.gif

Dabei seit: 02.03.2007
Beiträge: 7.168
Herkunft: Bielefeld

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden

nach datum ist ja schlecht. Ich würde nach dem primekey sortieren der ja meistens eine ID ist o.ä,



__________________
2.00000000 + 2.000000000 = 3.999998456


03.07.2007 20:23 E-Mail an BigWhoop senden Homepage von BigWhoop Beiträge von BigWhoop suchen Fügen Sie BigWhoop in Ihre Kontaktliste ein
Mjolnir Mjolnir ist männlich
High-End-User


images/avatars/avatar-485.png

Dabei seit: 24.12.2005
Beiträge: 612

Themenstarter Thema begonnen von Mjolnir
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden

Naja, das doofe ist: wenn ich userid oder houseid als Primekey setze,sortiert er die Tabelle bei der Ausgabe nicht nach dem Zeitpunkt der Erstellung, sondern nach dem Zeitpunkt der Registrierung der User, da die Userid bei der Registrierung gesetzt wird...



__________________
Gigabyte GA-X58A-OC, Intel i7-980X, 12GB DDR3-RAM 2000Mhz, 2x Geforce GTX480, 1x Geforce 8800GTS, X-Fi Platinum, 3x OCZ-SSD 120GB (Raid0), watercooled

"Die Welt ist klein, gemein und gnadenlos, und jeder stirbt einsam..."
04.07.2007 09:49 E-Mail an Mjolnir senden Homepage von Mjolnir Beiträge von Mjolnir suchen Fügen Sie Mjolnir in Ihre Kontaktliste ein
BigWhoop BigWhoop ist männlich
Redakteur


images/avatars/avatar-278.gif

Dabei seit: 02.03.2007
Beiträge: 7.168
Herkunft: Bielefeld

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden

nach dem zeitpunkt welcher erstellung willst du denn da sortieren ? smile



__________________
2.00000000 + 2.000000000 = 3.999998456


04.07.2007 12:32 E-Mail an BigWhoop senden Homepage von BigWhoop Beiträge von BigWhoop suchen Fügen Sie BigWhoop in Ihre Kontaktliste ein
Mjolnir Mjolnir ist männlich
High-End-User


images/avatars/avatar-485.png

Dabei seit: 24.12.2005
Beiträge: 612

Themenstarter Thema begonnen von Mjolnir
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden

Nach den Timestamps, die ich erzeug, wenn ich da oben in die Tabelle schreib... Öö



__________________
Gigabyte GA-X58A-OC, Intel i7-980X, 12GB DDR3-RAM 2000Mhz, 2x Geforce GTX480, 1x Geforce 8800GTS, X-Fi Platinum, 3x OCZ-SSD 120GB (Raid0), watercooled

"Die Welt ist klein, gemein und gnadenlos, und jeder stirbt einsam..."
04.07.2007 17:38 E-Mail an Mjolnir senden Homepage von Mjolnir Beiträge von Mjolnir suchen Fügen Sie Mjolnir in Ihre Kontaktliste ein
BigWhoop BigWhoop ist männlich
Redakteur


images/avatars/avatar-278.gif

Dabei seit: 02.03.2007
Beiträge: 7.168
Herkunft: Bielefeld

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden

vielleicht soltlest du etwas mehr zu dem ganzen projekt erklären smile



__________________
2.00000000 + 2.000000000 = 3.999998456


04.07.2007 17:39 E-Mail an BigWhoop senden Homepage von BigWhoop Beiträge von BigWhoop suchen Fügen Sie BigWhoop in Ihre Kontaktliste ein
Mjolnir Mjolnir ist männlich
High-End-User


images/avatars/avatar-485.png

Dabei seit: 24.12.2005
Beiträge: 612

Themenstarter Thema begonnen von Mjolnir
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden

Ehm, ja, kla, logo
Sagt dir vielleicht LOGD, Legend of Green Dragon was?
Das ist ein Browserfantasygame, aufgebaut aus PHP und MySQL, in dem man mit seinem Charakter in einem kleinen Dorf im Wald lebt, im Wald gegen Monster kämpft und stärker wird, irgendwann den Drachen besiegt, und dann gehts wieder von vorn los.

Weiterhin kann man Roleplay an bestimmten Orten betreiben, eben per Texteingabe, was dann die anderen lesen können, á la "Bauer Sacharon betritt den Dorfplatz, schaut umher und versucht, bekannte Leute zu erblicken".

Nun ja. Jedenfalls, ich spiele das auf dem Server "rabenthal.net" und gehör da zum Programmierteam (bzw, ich BIN das Programmierteam) der Server ist jedoch sehr instabil, und wir wollen/müssen auf PHP 5 und die neue MySQL-Version wechseln, um diese Instabilität zu ändern.
Nun gibt es in diesem Thal auch ein Wohnviertel, wo man sich ein Haus kaufen kann und dort Roleplay betreiben, seinen Charakter ausloggen etc.
Diese Häuser sind ebenfalls per MySQL in der Serverdatenbank gespeichert.

Ich bin zur Zeit bei der Neuprogrammierung bzw Überarbeitung dieses Wohnviertels, hab jedoch das Problem, dass er sämtliche erstellten Häuser nach dem Registrierungsdatum des Charakters sortiert - eben, weil er für die HouseID die UserID vergibt, wie man oben om Code sieht.
Das ist ein Problem.
Die Häsuer sollen nämlich nach "Bau-"Datum sortiert werden; aber irgendwie... naja, irgendwie funzt das net.
Und ich komm nicht weiter. Ich kann auch mal die gesamten Module, an denen ich arbeite, anhängen, wenn das interessiert oder weiterhilft...?



__________________
Gigabyte GA-X58A-OC, Intel i7-980X, 12GB DDR3-RAM 2000Mhz, 2x Geforce GTX480, 1x Geforce 8800GTS, X-Fi Platinum, 3x OCZ-SSD 120GB (Raid0), watercooled

"Die Welt ist klein, gemein und gnadenlos, und jeder stirbt einsam..."
04.07.2007 18:19 E-Mail an Mjolnir senden Homepage von Mjolnir Beiträge von Mjolnir suchen Fügen Sie Mjolnir in Ihre Kontaktliste ein
BigWhoop BigWhoop ist männlich
Redakteur


images/avatars/avatar-278.gif

Dabei seit: 02.03.2007
Beiträge: 7.168
Herkunft: Bielefeld

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden

ok ... wenn du es so machst das er das bau datum als timestamp nimmt also sowas wie

134654645 smile dann sollte es kein problem sein !



__________________
2.00000000 + 2.000000000 = 3.999998456


04.07.2007 23:22 E-Mail an BigWhoop senden Homepage von BigWhoop Beiträge von BigWhoop suchen Fügen Sie BigWhoop in Ihre Kontaktliste ein
Mjolnir Mjolnir ist männlich
High-End-User


images/avatars/avatar-485.png

Dabei seit: 24.12.2005
Beiträge: 612

Themenstarter Thema begonnen von Mjolnir
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden

*schnief* das ist ja mein Problem... ich WOLLTE es ja so speichern, dann könnt ichs einfach nach Größe sortieren, aber nein, das tolle SQL macht es fein säuberlich zu einem kompletten Datum, mit Doppelpunkten etc; und wenn ich das in int umwandel, lässt er alles nach dem ersten Doppelpunkt fallen. GRAH!

Womit krieg ich denn nen Zeitstempel in der Form raus? Ich habs mit Timestamp probiert, und mit der Spalte in Timestamp-Format, aber es kommt immer nur brav "2007-06-04 16:34:15" raus...

Welche "Art" (also string, int etc) muss die Spalte haben, und mit welchem Befehl setz ich dann nen Zeitstempel in der Form?

Schonmal vieeelen Dank für die Hilfe übrigens Augenzwinkern



__________________
Gigabyte GA-X58A-OC, Intel i7-980X, 12GB DDR3-RAM 2000Mhz, 2x Geforce GTX480, 1x Geforce 8800GTS, X-Fi Platinum, 3x OCZ-SSD 120GB (Raid0), watercooled

"Die Welt ist klein, gemein und gnadenlos, und jeder stirbt einsam..."
05.07.2007 00:42 E-Mail an Mjolnir senden Homepage von Mjolnir Beiträge von Mjolnir suchen Fügen Sie Mjolnir in Ihre Kontaktliste ein
Seiten (2): [1] 2 nächste » Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Hardware-Mag - Forum » Software » Programmieren »



Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH