anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: So 15 Jun, 2025 21:09

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Datenbank-Änderung: ALTER oder DROP
BeitragVerfasst: Mo 11 Dez, 2006 16:32 
Offline
Lehrling
Lehrling

Registriert: Sa 28 Okt, 2006 00:43
Beiträge: 44
LoGD: http://www.logd.wing-clan.de/
Hi!

Kurze Fragen:

1.

Ich führe in einem Editor innerhalb des Spiels entsprechende DROP bzw. ALTER Befehle auf ein Datenbank Feld aus. (Lösche oder ändere den Namen z.B.)

Kriege nach db_query eine Fehlerseite.

Ursache:
Bei einem nachfolgenden Seitenaufruf, wird ein UPDATE mit WHERE=ACCTID ausgeführt, welches aber noch den alten Feldnamen enthält, der sich ja mittlerweile geändert hat bzw. gelöscht wurde.

Wie kann man dies vermeiden?

2.

Wie heisst der Befehl, der überprüft, ob ein Datenbankfeld vorhanden ist bzw. fehlt :)

Schon mal danke für die Infos!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 11 Dez, 2006 21:36 
Offline
Freak
Freak
Benutzeravatar

Registriert: Mi 06 Jul, 2005 19:10
Beiträge: 543
Wohnort: Bremen
Geschlecht: Männlich
LoGD: http://my-logd.com/motwd
Zum ersten Teil, müsste man ein wenig mehr Inforamationen haben...

zu 2, kannst du einfach kontrollieren, mit [php]mysql_num_rows($result)[/php] wenn du mehr als 0 bekommst existieren Datansätze entsprechend deiner Abfrage.

[php]
$sql = 'SELECT * FROM meinerdb WHERE zustand=1 AND aufstand=0 ORDER BY id DESC';
$result = mysql_query($sql);

if (mysql_num_rows($result) > 0){
echo 'Es sind Datensätze vorhanden';
}else{
echo 'Es sind KEINE Datensätze vorhanden';
}

[/php]

_________________
Das schwarze Schaf der LotGD-Community, 2. platzierter, beim Giga.de Homepage-Award 2007 und 1. platzierter beim German Web Award 2008.
PC-ACTION meint: "Sehr gut" für MotWD!
Mind of the White Dragon => http://my-logd.com/motwd


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 12 Dez, 2006 09:18 
Offline
Lehrling
Lehrling

Registriert: Sa 28 Okt, 2006 00:43
Beiträge: 44
LoGD: http://www.logd.wing-clan.de/
Ah.. danke für den Tipp. :) Hätte ich auch drauf kommen können.

Zu 1.

Die Datenbankfelder, deren Namen man mit dem Editor ändern bzw. löschen kann, befinden sich in der Tabelle accounts.
Bei jedem Seitenaufbau wird ein SQL Update Befehl über accounts und acctid aufgerufen.
In der common.php finde ich jediglich die Funktion saveuser(), die sowas macht. Und zwar führt diese das UPDATE accounts basierend auf der $session[user] aus ....
Wie ich gerade sehe, wird die Funktion im page_footer aufgerufen.(Naja...oder Funktion redirect, etc... egal)

Okay... Vermutung: Wenn ich bestehende Datenbankfelder in der Tabelle accounts, im Spiel und aus dem Spiel herraus, ändere, dann muss ich auch die $session[user] neu aufbauen, um die Fehlerseite mit dem Hinweis auf das "fehlenden Feld" zu vermeiden.

Hm... mal sehen... Frage ist natürlich, wie ändere ich den $session array am einfachsten. Mal sehen...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 12 Dez, 2006 10:03 
Offline
Freak
Freak
Benutzeravatar

Registriert: Mi 06 Jul, 2005 19:10
Beiträge: 543
Wohnort: Bremen
Geschlecht: Männlich
LoGD: http://my-logd.com/motwd
Ich verstehe im Moment nur nicht, warum du in der Accountstabelle stetig Felder umbenennen bzw. löschen, oder ersetzen möchtest....

Das Problem ist doch ganz einfach, wenn du ein Script schreibst, und auf Informationen der Accountstabelle zurückgreifen möchtest, dass du jeweils in den einzelnen Scripts ebenfalls immer die Anfragen "$session['user']['wasauchimmer']" gleichzeitig mit ändern musst.

Hinzu kommt, dass bei jeder Änderung der Accountstabelle, alte Backups erschwert werden. da du die Inserts der Backups von Hand wieder anpassen musst.

Daher mache ich mittlerweile kaum etwas an der Accountstabelle. Im gegenteil. Ich habe diese komplett ausgemistet und nur noch das Nötigste drinne.

Wie dem auch sei, so ganz Nachvollziehen, kann ich deine Frage nicht, bzw. dein Vorhaben..... :???:

_________________
Das schwarze Schaf der LotGD-Community, 2. platzierter, beim Giga.de Homepage-Award 2007 und 1. platzierter beim German Web Award 2008.
PC-ACTION meint: "Sehr gut" für MotWD!
Mind of the White Dragon => http://my-logd.com/motwd


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 12 Dez, 2006 10:21 
Offline
Lehrling
Lehrling

Registriert: Sa 28 Okt, 2006 00:43
Beiträge: 44
LoGD: http://www.logd.wing-clan.de/
Gott bewahre, dass man da dauernd etwas umstellen sollte. :)

Nein. In meinem Addon gibt es z.B. einen Gebäudeeditor. Man kann neue Gebäude anlegen. Dieses Gebäude benötigt 2 Datenbankfelder, welche ich in der account Tabelle ablege. (*erschien mir bisher mit meinem geringem Basiswissen über php und mysql am einfachsten*)

Jetzt will ich dem Admin auch die Möglichkeit an die Hand geben, dieses Gebäude wieder zu löschen oder, wenn er sich vertan hat, diese Datenbankfelder umzubennen.

Das Problem mit dem UPDATE basierend auf der veralteten $session[user] in der Funktion saveuser() habe ich nun gelöst:

Nach Änderungen an den Datenbankfeldern baue ich die $session[user] mit $session[user]=db_fetch_assoc($result); einfach neu auf.
Folgeerscheinungen dieses Vorgehens untersuche ich aber gerade noch ;)
Bisher scheint es wunderbar zu klappen...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 12 Dez, 2006 15:56 
Offline
Freak
Freak
Benutzeravatar

Registriert: Mi 06 Jul, 2005 19:10
Beiträge: 543
Wohnort: Bremen
Geschlecht: Männlich
LoGD: http://my-logd.com/motwd
Hmm, allerdings kann ich es noch immer nicht Nachvollziehen, denn wesentlich einfach wäre es, einfach in einer seperaten Tabelle zu realisieren. Gut man muss anstatt $session['user']['wasauchimmer'], eine komplette SQL-Abfrage machen, aber solange sich die Datenmenge in Grenzen hält verlangsamt es nicht das Spiel.

Du kannst dir ja mal Eliwoods Gilden anschauen, und das dortige Ausbauen der Gilden... Vielleicht kannst du dir ein paar Anregungen holen.

_________________
Das schwarze Schaf der LotGD-Community, 2. platzierter, beim Giga.de Homepage-Award 2007 und 1. platzierter beim German Web Award 2008.
PC-ACTION meint: "Sehr gut" für MotWD!
Mind of the White Dragon => http://my-logd.com/motwd


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 12 Dez, 2006 17:06 
Offline
Lehrling
Lehrling

Registriert: Sa 28 Okt, 2006 00:43
Beiträge: 44
LoGD: http://www.logd.wing-clan.de/
:) Ja. Eine eigene Tabelle wäre natürlich prima.

Aber ich bin ja noch jung und werde es lernen. Bisher war es nur so viel einfacher. Natürlich plane ich mit einer Auslagerung in eine eigene Tabelle . Mal sehen!


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum