Tabelle in Datenbank einfügen

Alles, was nicht in die anderen Foren passt, kannst du hier loswerden.
Antworten
judormagen
Beiträge: 42
Registriert: 6. Aug 2009, 16:28

Tabelle in Datenbank einfügen

Beitrag von judormagen »

Hi!

Ich möchte im Installationsscript eine weitere Tabelle einfügen, die beim Start installiert und später beim Datenbank-Backup mit berücksichtigt werden soll.

Dazu muss ich vermutlich den Code in die db.sql eingeben. (Den hänge ich zum Review mal an) Muss ich sonst noch irgendwo etwas ändern?

Inhalt der Tabelle soll sein: Ein ID-Feld, eine Zuordnung zu einem User, ein Textfeld mit beliebiger Länge und ein Datumsfeld.

Code: Alles auswählen

/*==============================================================*/
/* Table: adm_history                                           */
/*==============================================================*/
create table %PREFIX%_history
(
   his_id                         int(11) unsigned               not null AUTO_INCREMENT,
   his_usr_id                     int(11) unsigned               not null,
   his_text                       text                           not null,
   his_timestamp_create           datetime                       not null,
   primary key (his_id)
)
engine = InnoDB
auto_increment = 1
default character set = utf8
collate = utf8_unicode_ci;
Ist das so richtig?
matzman2000
Former team member
Beiträge: 1087
Registriert: 2. Sep 2007, 17:12
Wohnort: Itzstedt
Kontaktdaten:

Beitrag von matzman2000 »

Hi,

ich habe nicht alle Codestellen geprüft, ist aber m.E. nicht ganz verkehrt.
Die Frage, die sich stellt ist allerdings, warum Du eine eigene Anpassung (also nur für Dein System) ins Installationsscript einfliessen lassen willst? Da sehe ich nicht ganz den Sinn.

Wenn Du die Tabelle bereits angelegt hast und verwendest, muss sie ja nicht noch im INstallscript definiert werden. Für das Datenbankbackup langt im ürbigen ein Eintrag in der Datei ADMIDIO/adm_program/system/constants.php nach folgendem Muster (ist dort auch schon zu finden):

Code: Alles auswählen

define("TBL_MEIN_NAME",       $g_tbl_praefix. "_tabellenname_in_der_datenbank");
Damit wird die Tabelle auch beim DB Backup berücksichtigt, funktioniert bei mir ausgezeichnet!
judormagen
Beiträge: 42
Registriert: 6. Aug 2009, 16:28

Beitrag von judormagen »

Der Grund ist schnell erklärt. Ich möchte das System sowohl für unseren Stadtverband als auch für Kreis- und andere Stadtverbände machen können und dort nicht jedes Mal alles neu einfügen müssen.

Meine Frage bezieht sich insbesondere auf den index und constraints Teil, da ich von diesen Datenbankfunktionen noch gar keine Ahnung habe..?

Dankeschööööön!
judormagen
Beiträge: 42
Registriert: 6. Aug 2009, 16:28

Beitrag von judormagen »

Werde es damit mal probieren, Danke erstmal!

PS: Kann es sein, dass im trunk die Berechnung des Alters im Profil fehlerhaft ist? Ich habe das auf Sourceforge mal gepostet. Es wird dort das aktuelle Jahr anstatt des Alters angezeigt...
matzman2000
Former team member
Beiträge: 1087
Registriert: 2. Sep 2007, 17:12
Wohnort: Itzstedt
Kontaktdaten:

Beitrag von matzman2000 »

Noch nicht gesehen, gucke ich aber mal drauf. :roll:
matzman2000
Former team member
Beiträge: 1087
Registriert: 2. Sep 2007, 17:12
Wohnort: Itzstedt
Kontaktdaten:

Beitrag von matzman2000 »

judormagen hat geschrieben:PS: Kann es sein, dass im trunk die Berechnung des Alters im Profil fehlerhaft ist? Ich habe das auf Sourceforge mal gepostet. Es wird dort das aktuelle Jahr anstatt des Alters angezeigt...
So, ich hab grad mal auf die Schnelle reingesehen, da wurde das Datum im Flaschen Format zur Berechnung weitergereicht. Ich korrigiere das nachher im trunc... Danke für den Hinweis.
judormagen
Beiträge: 42
Registriert: 6. Aug 2009, 16:28

Beitrag von judormagen »

Kann ich mit eurer TableAccess auch eine ForEach-Schleife über alle Zeilen der Tabelle laufen lassen, und alle Zeilen von hinten nach vorne ausgeben lassen?

Bisher sieht mein Schleifenkopf so aus:

Code: Alles auswählen

for($count = $history->countAllRecords(); $count > 0 ; $count--)
Das gibt aber Probleme sobald Datensätze per PHPMyAdmin gelöscht werden.
Wie würde das mit foreach aussehen?

Gruß
judormagen
Beiträge: 42
Registriert: 6. Aug 2009, 16:28

Beitrag von judormagen »

Könnte ich hierzu noch eine kurze Erklärung bekommen?

Dankeschööööön!

Hier nochmal der ganze Code der Abfrage:

Code: Alles auswählen

  for($count = $history->countAllRecords(); $count > 0 ; $count--)
  {
    $history->readData($count);
    $his_timestamp = $history->getValue('his_timestamp_create');
    $his_user = new User($g_db, $history->getValue('his_usr_id_create'));
    $his_user = $his_user->getValue('FIRST_NAME') . ' ' . $his_user->getValue('LAST_NAME');
    $his_text = $history->getValue('his_text');
    $his_profile = $history->getValue('his_profile_id');
    $his_profile = new User($g_db, $his_profile);
    $printout = $printout. $his_timestamp.' ('.$his_user.'): '.$his_text.' PROFIL VON: '.$his_profile->getValue('FIRST_NAME') . ' ' . $his_profile->getValue('LAST_NAME')."\r\n";
  }
judormagen
Beiträge: 42
Registriert: 6. Aug 2009, 16:28

Beitrag von judormagen »

Geht das? *push*
Antworten