Thread Verfasser: Catzenjaeger
Thread ID: 1046
Thread Info
Es gibt 7 Beiträge zu diesem Thema, und es wurde 4691 Mal angesehen.
 Thema drucken
Logikfrage - wie mache ich ...
Catzenjaeger
Folgende Situation:

ich habe ein Feature in meiner Figurendatenbank wo der User Figuren aus der Datenbank zu seiner Sammlung hinzufügen kann. Über eine eigenen Seite kann er diese auch sehen. Dort sieht er einen Counter wieviele er hat und in einer Liste die Daten dazu.

Nun könnte es aber vorkommen, das eben genau eine diese Figurn aus der Datenbank gelöscht wird. Problem hierbei in seiner Liste würde die noch auftauchen aber keine Daten mehr ...

das macht sich zum Beispiel in Menüs oder Countern dann bemerkbar Mir viel es nur auf weil ich 3 Figuren zum Test hatte und eine davon gelöscht habe. Aber wenn ich mycollection gehe sehe ich im Counter noch 3 stehen obwohl nur 2 in der DB. Auch die pagenav spielt verrückt weil sie ja von max count ausgeht.

Wie muss ich ansetzen um hier eine Lösung zu finden. Was schlagt ihr vor. Die Figur wenn sie gelöscht wird auch aus den Usertabellen zu löschen wäre ja falsch. Denn ein User wird ja keine Figur seiner Sammlung zufügen die er nicht hat.

Eine andere Lösung wäre doch wenn ich versuche die Figur als Admin zu löschen ... einen Hinweis bekomme oder eine Verweigerung das dies nicht geht weil ein user die hat. Das wäre doch die Lösung oder?

Heisst ich müsste ein Codefragment einfügen was ein löschen verweigert ... wie sieht so etwas aus?

das müsste ja in dieser datei hier gemacht werden .... nur wo?? es gibt zig stellen wo gelöscht wird

https://github.com/Catzenjaeger/Figur...urelib.php
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
SuNflOw
Wie ist bei dir die Zuordnung Figur > Person? Ist in der Tabelle der Figuren eine Spalte in der, die user_id steht?
________________________________________________
I got my swim trunks and my Flippie-Floppies *-*
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Catzenjaeger
Danke für deinen Antwort/Nachfrage

also die Tabelle ist extra.
Dort wird in der Spalte figure_userfigures_figure_id die gleiche id wir in der tabelle items abglegt damit ich vergleichen kann. Heisst der wert figure_userfigures_figure_id = figure_id generell

$inf_newtable[] = DB_FIGURE_USERFIGURES." (
figure_userfigures_id MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT,
figure_userfigures_figure_id VARCHAR(100) NOT NULL DEFAULT '',
figure_userfigures_user_id VARCHAR(100) NOT NULL DEFAULT '',
figure_userfigures_sorting VARCHAR(50) NOT NULL DEFAULT '',
figure_userfigures_language VARCHAR(50) NOT NULL DEFAULT '".LANGUAGE."',
PRIMARY KEY (figure_userfigures_id)
) ENGINE=MyISAM DEFAULT CHARSET=UTF8 COLLATE=utf8_unicode_ci";

Zusammengefügt am 13. August 2016 um 20:38:14:
Ich bin noch am knobeln wie ich die "sperre" einbaue. In der Theorie müsste doch bei versuch ein Fehler kommen das Figur nicht glöscht werden kann weil sie jemand hat. Da die dann über 2 oder mehr tabellen geht wie müsstre die aussehen?

Tabelle User: DB_FIGURE_USERFIGURES

figure_userfigures_figure_id (ist die gleiche ID wie in der Tasbelle FIGURE_ITEMS figure_id )

also etwa so:


Zitat

$result = dbquery(
"SELECT f.figure_id,
fuf.figure_userfigures_figure_id
FROM ".DB_FIGURE_ITEMS." f
INNER JOIN ".DB_FIGURE_USERFIGURES." fuf ON fuf.figure_userfigures_figure_id=f.figure_id
".(multilang_table("FI") ? "WHERE figure_language='".LANGUAGE."' AND" : "WHERE")." ");

if (dbrows($result) != 0) {
while($data = dbarray($result)){

addNotice("success", $locale['figs_0018']);

}

} else {

hier dann löschen button
}


ist der Ansatz richtig? oder macht man das anders?

Zusammengefügt am 15. August 2016 um 14:36:49:


also folgendes wird umgesetzt: das löschen einer Figur wenn diese ein User hat ist nicht möglich. Das ist denke ich auch das klügste.

Bearbeitet von Catzenjaeger am 15. August 2016 13:24:58
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Anonymer Benutzer
Hier:

figure_userfigures_figure_id VARCHAR(100) NOT NULL DEFAULT '',
figure_userfigures_user_id VARCHAR(100) NOT NULL DEFAULT '',


Warum VARCHAR......mache es doch per INT. Ist Steuerbar besser. Und Selectiere sie vor.
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Catzenjaeger

Zitat

matze_two schrieb:

Hier:

figure_userfigures_figure_id VARCHAR(100) NOT NULL DEFAULT '',
figure_userfigures_user_id VARCHAR(100) NOT NULL DEFAULT '',


Warum VARCHAR......mache es doch per INT. Ist Steuerbar besser. Und Selectiere sie vor.


die halbfertige Lösung ist hier: https://github.com/Catzenjaeger/Figur.../issues/38

funktioniert auch teilweise aber mit fehlern
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Anonymer Benutzer
wie gesagt ,,lade mir ersat mal das Teil runter. Um erst mal es mal ,,um zu schmunzeln,, mir anzuschauhen. da ja fast 6 bis 8 DB tabellen definiert sind.
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Catzenjaeger
na da kannst du ruhig schmunzeln ... ist meine erste Infusion überhaupt und eine der ersten für PHP-F 9 inklusive Bootstrap. Hier haben schon viele abgewunken im Forum. Aber ich gebe nicht auf

Die Infusion funzt ... wenn auch mit Fehlern. Aber ich bin totaler Anfänger. Bis auf paar Panele habe ich noch nie was gemacht .. geschweige denn DB Geschichten:)

Sicher hätte man paar Sachen anders machen können aber nun ja hinterher ist man immer schlauer
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Springe ins Forum: