Forum: Projekte & Code Lagerverwaltung Part-DB V0.2.2


von b.r (Gast)


Lesenswert?

Hallo Forum!

Part-DB ist eine kleine webbasierte Lagerverwaltung für elektronische 
Bauteile.

Ursprünglich von C. Lechner entwickelt 
(http://www.cl-projects.de/projects/part-db/)  findet die aktuelle 
Entwicklung auf Google Code statt: http://code.google.com/p/part-db/

Zum Ausprobieren gibt es momentan zwei Demo-Seiten:
http://partdb.grautier.com/    ("offiziell")
http://weinbauer73.myparts.info/   (Test-Branch)

In diesem Thread soll es um die Weiterentwicklungen innerhalb der 
Lagerverwaltung Part-DB gehen.


Der Ursprungsthread findet sich hier:
Beitrag "PART-DB RW 1.2"

Grüße
b.r

von Udo N. (weinbauer73)


Lesenswert?

b.r schrieb:
> Hallo an alle Mitentwickler!
>
> 1. Es wäre mal an der Zeit einen neuen Thread aufzumachen. Zwecks
> besserer Ladezeiten und vielleicht auch einem aussagekräftigeren
> Threadtitel?

Stimme ich zu :-)

> 2. Das mit den 4 Leerzeichen scheint ja nun Konsens zu sein und findet
> meine vollste Zustimmung. Gibt es schon einen guten Platz/Link für die
> Coding Guidelines?

Ich habe die Coding Guidelines schon angepasst. Wenn gewünscht, stelle 
ich sie bei Google Code ins Wiki.

> 3. Debuglog bzw. SQL-Transaction-Log finde ich eine tolle Sache, hatte
> ich auch schonmal im Hinterkopf.

Hatte ich auch schon auf meiner Liste. Wie gut, das ich das streichen 
kann.

> 5. Momentan haben wir - so wie ich das sehe - zwei Entwicklungen:
> Templates und OOP. Jedes neue Feature macht daher doppelt Arbeit
> (entweder für den Einpfleger, oder für den Entwickler). Wir sollten uns
> vielleicht erstmal auf eine Sache konzentrieren.

Sobald ich die Templates fertig habe, werden wir beide Zweige 
zusammenbauen. Es wäre ein durcheinander, wenn wir das recht früh 
gemacht hätten.

> 6. SVN-Nutzung:
> Die zwei Entwicklungsrichtungen spiegeln sich ja in den beiden
> User-Branches wieder.
> Ich würde mal folgenden Vorschlag machen:
> Im TRUNK liegt die Stable-Version, auf der nur kleine Bug-fixes gemacht
> werden. Neue Sachen werden in einem testing-Branch ausprobiert.
> Ungefähr alle drei Monate wird unstable zu stable gemacht und ein
> hübsches Download-Paket geschnürt.

Das beide Branches wieder zusammen kommen müssen, das ist uns klar. Ich 
denke, sobald ich die Templates fertig habe, kann ich die OOP-Sachen von 
Urban einbinden. Ich beführchte allerdings, da wird es noch einiges an 
Diskussionsbedarf geben. Im Moment sehe ich eine 1:1-Übersetzung der 
lib.php in Klassen. Es wäre in meinem Augen sinnvoller, einige Klassen 
nur mit Basis-Funktionen zu versehen, die dann von anderen Funktionen 
aufgerufen wird. Die Anzahl der Dateien steigt zwar damit, aber die 
Übersichtlichkeit ist besser.

> 7. Bei größeren Versionssprüngen, wenn z.B. Version 0.3 mit templates &
> oop fertig ist, wird die Datenbankversion auf 100 gesetzt und alle
> Datenbankupdates aus dem Code entfernt bzw. in ein manuelles Skript
> verschoben.

Ist schon geplant. Das Update-System wird komplett erneuert. Nur welche 
Variante, das ist noch nicht klar. Ich habe ein Interpreter für 
Update-Scripts geschrieben, der auch für Installationen und Reparatueren 
taugt. Urban geht einen anderen Ansatz und will für jedes Update ein 
neues PHP-Script schreiben.

von Gelöscht (kami89)


Lesenswert?

b.r schrieb:
> P.S.:
> Habt Ihr schonmal hier reingeschaut?!?
> Beitrag "Lagerverwaltung Part-DB V0.2.2"

Wow, nett hier! Irgendwie so leer, der Thread :-)

b.r schrieb:
> 3. Debuglog bzw. SQL-Transaction-Log finde ich eine tolle Sache, hatte
> ich auch schonmal im Hinterkopf.

Ja, ich denke es wird schlussendlich verschiedene Logs geben. Sicher ein 
Debug Log, und dann vermutlich (irgendwann mal) ein Log um Buchungen 
usw. nachvollziehen zu können. Halt alles was die Benutzer so in der 
Datenbank rumfummeln (am besten gleich mit einer Möglichkeit, Buchungen 
rückgängig zu machen).

b.r schrieb:
> 4. (@kami) die leeren Tabellen bei den Preisen waren wirklich für
> Preisstaffeln und mehrere Lieferanten gedacht. Kann also gerne noch
> richtig umgesetzt werden.

Gut, danke für die Info. Habe mich schon gewundert dass die existieren, 
aber leer sind.

b.r schrieb:
> 5. Momentan haben wir - so wie ich das sehe - zwei Entwicklungen:
> Templates und OOP. Jedes neue Feature macht daher doppelt Arbeit
> (entweder für den Einpfleger, oder für den Entwickler). Wir sollten uns
> vielleicht erstmal auf eine Sache konzentrieren.

Naja Klassen und Templates sind ansich ja zwei komplett verschiedene 
(unabhängige) Dinge, da kann man relativ gut parallel arbeiten. Das 
Zusammenführen nachher gibt dann natürlich etwas Arbeit, das ist klar. 
Aber die kann ich gerne übernehmen (ich bin ja der Einzige, der weiss 
wie man die Klassen "anspricht" und richtig einsetzt).
Aber bis zum Zusammenführen werden meine Klassen nur mal so grob 
funktionieren. Um alles richtig austesten zu können brauche ich auch 
Seiten, die die Klassen richtig verwenden (z.B. in der editpartinfo.php 
usw.). Damit wir die nicht doppelt machen müssen (einmal ich zum testen 
und einmal Udo für die Templates) warte ich auf die Templates und fange 
erst danach richtig an die Klassen zu testen.

b.r schrieb:
> 6. SVN-Nutzung:
> Die zwei Entwicklungsrichtungen spiegeln sich ja in den beiden
> User-Branches wieder.
> Ich würde mal folgenden Vorschlag machen:
> Im TRUNK liegt die Stable-Version, auf der nur kleine Bug-fixes gemacht
> werden. Neue Sachen werden in einem testing-Branch ausprobiert.
> Ungefähr alle drei Monate wird unstable zu stable gemacht und ein
> hübsches Download-Paket geschnürt.

Momentan macht das Sinn, ja. Aber sobald die Benutzer kein SVN mehr 
brauchen, um ihre Installationen aktuell zu halten, können wir die 
Entwicklung auch direkt im Trunk machen. Ausser halt grad ganz grosse 
Veränderungen oder irgendwelche Tests.

Udo Neist schrieb:
> Es wird kein Aufruf benötigt, es ist eine "magische" Funktion.
> __autoload() wird durch new() automatisch aufgerufen und lädt die
> entsprechende Klasse. Diese Funktion muss ich irgendwann auf
> spl_autoload_register() umschreiben, denn __autoload() soll irgendwann
> verschwinden.
>
> http://php.net/manual/de/language.oop5.autoload.php

Aaah, ich glaube jetzt habe ich es kapiert :-) OK dann ist es natürlich 
eine nützliche Sache. Heisst aber, dass ich die Dateinamen der Klassen 
noch umschreiben muss, oder? Die Dateinamen müssen dann wohl den 
gleichen Namen haben wie die darin enthaltene Klasse.

Udo Neist schrieb:
> Ob ich nun Tab mit 5 oder 4 Leerzeichen in der Darstellung oder vom
> Editor direkt in Leerzeichen umgewandelt werden, das stört doch
> niemanden.

Also ob wir Tabs oder Leerzeichen verwenden, das macht durchaus einen 
Unterschied und darauf wollte ich eigentlich hinaus. Einige 
Programmierer verwenden ja Tabs, dann ist die Darstellung vom Editor 
abhängig, und andere verwenden Leerzeichen, dann ist die Darstellung 
fest vorgegeben.

Udo Neist schrieb:
> Du hast es nicht ganz verstanden. Jedes Update des zu Grunde liegenden
> Systems kann zu einer Fehlfunktion führen. Kein Script der Welt prüft
> vorher nach und blockiert fehlende Funktionen. Sowas wird in einem
> try-catch-Block gemacht oder mit function_exists(), wenn diese Funktion
> noch nicht offiziell existiert. Man weiß ja schliesslich nicht, welche
> Version auf dem Server genau installiert ist.

Ja da hast du recht. Die Frage ist nur, wo man solche Sachen prüfen 
soll. Bei "nicht-lebenswichtigen" Funktionen wäre es eher besser wenn 
die Überprüfung erst dann geschieht, wenn sie auch gebraucht wird, damit 
wenigstens der Rest des Systems lauffähig ist. Nur bei sehr wichtigen 
Funktionen, ohne die Part-DB nicht wirklich nutzbar ist, sollte man die 
Überprüfung schon möglichst "am Anfang" machen (z.B. im Konstruktor wie 
von dir vorgeschlagen).

Udo Neist schrieb:
> Das du das "Logfile" bereits umgesetzt hast, das ist löblich :-) Erspart
> mir zumindest eine weitere Baustelle. Wenn du es hochgeladen hast, kann
> ich das ja auch bei mir schon einbauen. Das xhr-Teil schreibe ich dann.

Ich aktualisiere nachher gleich mal meinen Branch, dann kannst du es dir 
anschauen. In "db_update_steps.php" siehst du wie die Tabelle aussieht 
(case-Nr. 20). Falls du noch Vorschläge hast, was man zusätzlich noch 
für Spalten gebrauchen könnte, gib Bescheid. Dann habe ich noch die 
beiden Klassen "debug_log.php" und "debug_log_element.php" erstellt. In 
"debug.php" siehst du wie die Klasse eingesetzt wird, und wie die 
Ausgabe des Logs aussieht.

Vieles ist aber noch sehr provisorisch. Fehlerbehandlungen gibts bisher 
noch praktisch keine in eigentlich all meinen Klassen. Das rüste ich 
dann erst später nach (mit exceptions).

Udo Neist schrieb:
> Im Moment sehe ich eine 1:1-Übersetzung der
> lib.php in Klassen. Es wäre in meinem Augen sinnvoller, einige Klassen
> nur mit Basis-Funktionen zu versehen, die dann von anderen Funktionen
> aufgerufen wird. Die Anzahl der Dateien steigt zwar damit, aber die
> Übersichtlichkeit ist besser.
Eine 1:1 Übersetzung ist es natürlich nicht, sonst würde OOP nicht viel 
Sinn machen. Funktionen, die direkt Antworten auf SQL-Querys 
durchführen, gibt es nicht mehr. SQL Querys werden allgemein viel 
weniger verwendet, das meiste wird direkt durch "ein geschicktes 
OOP-Design" erledigt. Nur noch "auf unterster Ebene" werden noch SQL 
Querys eingesetzt.

von Udo N. (weinbauer73)


Lesenswert?


von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> http://code.google.com/p/part-db/wiki/Coding_Guidelines

Sehr schön!

Mein Branch ist nun aktuell, da kannst du mal das Debug-Zeugs anschauen.

Den Debug-Log verwenden wir aber schon nur für Fehlermeldungen oder? 
Also nicht für irgendwelche "Bestätigungs-Meldungen" wie z.B. 
"__construct(): Objekt erfolgreich angelegt" usw.

Ansonsten könnte man auch noch ein Logging-Level einbauen, dann kann man 
auch solche unwichtigen Bestätigungen mitloggen, aber mit tiefer 
Priorität. Beim Betrachten der Logs kann man dann wählen welche Logs 
überhaupt ausgegeben werden, damit man solche unwichtigen Meldungen 
unterdrücken kann.

Ich denke das würde Sinn machen. Vielleicht ein Level von 0 bis 5 
definieren oder so? 0 = "total unwichtig", 5 = "ultraschlimmer fehler, 
fast wäre der server abgeraucht"

Oder aber mit Strings, so wie ich es jetzt gemacht habe. Also z.B. 
"warning", "error", "info". Und dann beim Viewer für jedes Attribut eine 
Checkbox die man einzeln an-/abwählen kann.

Was meint ihr?

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
> Naja Klassen und Templates sind ansich ja zwei komplett verschiedene
> (unabhängige) Dinge, da kann man relativ gut parallel arbeiten. Das
> Zusammenführen nachher gibt dann natürlich etwas Arbeit, das ist klar.
> Aber die kann ich gerne übernehmen (ich bin ja der Einzige, der weiss
> wie man die Klassen "anspricht" und richtig einsetzt).
> Aber bis zum Zusammenführen werden meine Klassen nur mal so grob
> funktionieren. Um alles richtig austesten zu können brauche ich auch
> Seiten, die die Klassen richtig verwenden (z.B. in der editpartinfo.php
> usw.). Damit wir die nicht doppelt machen müssen (einmal ich zum testen
> und einmal Udo für die Templates) warte ich auf die Templates und fange
> erst danach richtig an die Klassen zu testen.

Du musst nicht alles übernehmen. Wir können uns auch die Arbeit teilen. 
Dazu sollten wir aber erstmal mit unseren Arbeiten fertig werden und 
dann anschauen, was der andere gemacht hat. Vielleicht gibt es ja auch 
noch ein paar Änderungen, die dann in die neue Version einfliessen 
werden.

> Udo Neist schrieb:
>> http://php.net/manual/de/language.oop5.autoload.php
>
> Aaah, ich glaube jetzt habe ich es kapiert :-) OK dann ist es natürlich
> eine nützliche Sache. Heisst aber, dass ich die Dateinamen der Klassen
> noch umschreiben muss, oder? Die Dateinamen müssen dann wohl den
> gleichen Namen haben wie die darin enthaltene Klasse.

Normalerweise ja, wäre sinnvoll. Du siehst aber auch, das ich ein 
Klassenname umschreibe, da sie absichtlich nicht mit dem Dateinamen 
übereinstimmt.

> Udo Neist schrieb:
>> Ob ich nun Tab mit 5 oder 4 Leerzeichen in der Darstellung oder vom
>> Editor direkt in Leerzeichen umgewandelt werden, das stört doch
>> niemanden.
>
> Also ob wir Tabs oder Leerzeichen verwenden, das macht durchaus einen
> Unterschied und darauf wollte ich eigentlich hinaus. Einige
> Programmierer verwenden ja Tabs, dann ist die Darstellung vom Editor
> abhängig, und andere verwenden Leerzeichen, dann ist die Darstellung
> fest vorgegeben.

Bei mir werden Tabs mit einem kleinen Punkt gekennzeichnet, was die 
einzelnen Ebenen der Einrückung schneller erkenntlich macht. Ich muss 
mich nur etwas umgewöhnen.

Im übrigen gibt es unter Linux den Befehl expand, der Tabs nach 
Leerzeichen wandeln kann. Ich kann somit weiter Tabs verwenden und 
brauch halt nur einen zusätzlichen Schritt vor dem Commit :-)

tab2spaces.sh (aufzurufen im Arbeitsverzeichnis)
1
#! /bin/bash
2
FILES=`find . -type f -name "*php" -o -name "*tmpl"`
3
4
for FILE in $FILES
5
do
6
    echo "bearbeite $FILE..."
7
    mv "$FILE" "$FILE".bak
8
    expand -t4 "$FILE".bak > "$FILE"
9
    rm -f "$FILE".bak
10
done

> Ja da hast du recht. Die Frage ist nur, wo man solche Sachen prüfen
> soll. Bei "nicht-lebenswichtigen" Funktionen wäre es eher besser wenn
> die Überprüfung erst dann geschieht, wenn sie auch gebraucht wird, damit
> wenigstens der Rest des Systems lauffähig ist. Nur bei sehr wichtigen
> Funktionen, ohne die Part-DB nicht wirklich nutzbar ist, sollte man die
> Überprüfung schon möglichst "am Anfang" machen (z.B. im Konstruktor wie
> von dir vorgeschlagen).

Genau :-) Im ersten Falle kann man ein "Würgaround" einbauen, im anderen 
Fall wäre es existenziell und damit ein Abbruch wert.

> Udo Neist schrieb:
>> Das du das "Logfile" bereits umgesetzt hast, das ist löblich :-) Erspart
>> mir zumindest eine weitere Baustelle. Wenn du es hochgeladen hast, kann
>> ich das ja auch bei mir schon einbauen. Das xhr-Teil schreibe ich dann.
>
> Ich aktualisiere nachher gleich mal meinen Branch, dann kannst du es dir
> anschauen. In "db_update_steps.php" siehst du wie die Tabelle aussieht
> (case-Nr. 20). Falls du noch Vorschläge hast, was man zusätzlich noch
> für Spalten gebrauchen könnte, gib Bescheid. Dann habe ich noch die
> beiden Klassen "debug_log.php" und "debug_log_element.php" erstellt. In
> "debug.php" siehst du wie die Klasse eingesetzt wird, und wie die
> Ausgabe des Logs aussieht.

Mach ich. Dann kann ich das auch gleich schon einbauen. Das Update wäre 
auch was für mein Update-System zum Testen ;-)

> Vieles ist aber noch sehr provisorisch. Fehlerbehandlungen gibts bisher
> noch praktisch keine in eigentlich all meinen Klassen. Das rüste ich
> dann erst später nach (mit exceptions).

Du kannst es in meiner class/html.php sehen, wie ich eine 
Fehlerbehandlung durchführe.

> Eine 1:1 Übersetzung ist es natürlich nicht, sonst würde OOP nicht viel
> Sinn machen. Funktionen, die direkt Antworten auf SQL-Querys
> durchführen, gibt es nicht mehr. SQL Querys werden allgemein viel
> weniger verwendet, das meiste wird direkt durch "ein geschicktes
> OOP-Design" erledigt. Nur noch "auf unterster Ebene" werden noch SQL
> Querys eingesetzt.

Ich hab nicht alle Klassen durchgeschaut. Du hast einige Funktionen in 
der Datenbankklasse drin, die ich persönlich da nicht reingebaut hätte. 
Alles rund um die Updates gehören in eine andere Klasse, die nur für die 
Updates zuständig ist. Ansonsten sehen die Klassen schon richtig gut aus 
:-) Nur noch die Templates dazu, ein bisschen aufräumen und unsere 0.3 
wäre fertig.

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Ich hab nicht alle Klassen durchgeschaut. Du hast einige Funktionen in
> der Datenbankklasse drin, die ich persönlich da nicht reingebaut hätte.
> Alles rund um die Updates gehören in eine andere Klasse, die nur für die
> Updates zuständig ist.

Das Updatesystem, das bisher in meinem Branch lag, war ja auch noch nach 
dem alten Prinzip. Heisst, es wird nur die Datenbank aktualisiert, 
deshalb ist die Updatefunktion auch in der Datenbankklasse.

Jetzt sind schon erste Funktionen vorhanden für das neue Updatesystem, 
da habe ich einfach mal ein bisschen rumprobiert. Diese Funktionen sind 
dann in der Klasse "System", weil sie das System updaten :-) Eine eigene 
Update Klasse finde ich irgendwie komisch. Ein Update ist kein "Ding", 
also kein Objekt. Ein Update aktualisiert das System und müsste von der 
Logik her eine Methode der System-Klasse sein.

Ist aber ein stückweit auch Ansichts-/Geschmackssache ;-)

> Ansonsten sehen die Klassen schon richtig gut aus
> :-) Nur noch die Templates dazu, ein bisschen aufräumen und unsere 0.3
> wäre fertig.

xD das hört sich ja ganz einfach an :-)

von Udo N. (weinbauer73)


Lesenswert?

Ich hab mal die database.php in meinen Branch übernommen und werde damit 
etwas "spielen" :-)

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
> Jetzt sind schon erste Funktionen vorhanden für das neue Updatesystem,
> da habe ich einfach mal ein bisschen rumprobiert. Diese Funktionen sind
> dann in der Klasse "System", weil sie das System updaten :-) Eine eigene
> Update Klasse finde ich irgendwie komisch. Ein Update ist kein "Ding",
> also kein Objekt. Ein Update aktualisiert das System und müsste von der
> Logik her eine Methode der System-Klasse sein.
>
> Ist aber ein stückweit auch Ansichts-/Geschmackssache ;-)

Ich betrachte das ganze System als Objekt, das ich dann in Teilen 
update. Das man das an eine System-Klasse koppelt, kann ich mir auch 
vorstellen. Ist halt nur die Frage, in welcher Form das Update dann 
läuft. Ob klassisch mit einem eigenen Script für das System oder halt 
kurze Anweisungen, die interpretiert werden. Beim Letzteren wäre der 
Interpreter ja ein Objekt des Systemsobjekts. Also sowas wie:
1
if ($befehl=='copy') $system->interpreter->copy()
2
if ($befehl=='rename') $system->interpreter->rename()
3
if ($befehl=='sql') $system->interpreter->sql()

Käme Perl nahe ;-)

von Gelöscht (kami89)


Lesenswert?

@Udo
Ich wäre jetzt an der Stelle, wo ich das Lieferantensystem umbauen will 
(damit man einem Bauteil mehrere Lieferanten zuordnen kann). Nur fehlt 
da noch das entsprechende Datenbankupdate...
Darf ich dich nochmal auf diesen 
Beitrag "Re: PART-DB RW 1.2" aufmerksam machen? 
:-)
Hättest du grad Zeit dich mal daran zu versuchen?

mfg

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Hallo!

Die Part-DB RW - Lagerverwaltung ist ziemlich genau das, was ich mir 
für meine Teileverwaltung vorstelle.

Aber macht es denn Sinn, dass jeder einzelne Nutzer einen Webserver mit 
PHP und Mysql Datenbank betreiben muß?

Ich habe daher einen Verbesserungsvorschlag, den ich in der TODO-Liste 
nicht gefunden habe.
http://code.google.com/p/part-db/issues/list

Vergleichbar mit Wordpress könnte man auch eine gemeinsame Instanz 
benutzen. Man kann sich Wordpress entweder selbst installieren oder 
unter der gemeinsam genutzten Instanz Wordpress.com einfach ein neues 
Blog oder einen neuen Nutzer hinzufügen.

Ich würde daher auch die Part-db Lagerverwaltung am liebsten irgendwo 
installieren, wo sich jeder mit seinem Login anmelden und seine Teile 
verwalten kann. Die "Stammdaten" müßte dann nicht jeder einzeln pflegen. 
Das Thema wurde schon mal angesprochen (s.u.).

Im Moment sehe ich das so, dass ich die aktuelle Version dazu um 
Benutzerkonten erweitern müßte.

Wären denn noch mehr Interessenten an so einer gemeinsamen Pflege der 
"Stammdaten" interessiert? Ich fände es schade, wenn dadurch ein 
"SW-Branch" entsteht.

Der Gedanke wurde schon mal angesprochen:

Bauteilegucker schrieb:
> Eine Endlosarbeit ist es …, wenn jeder immer wieder neu die
> Daten eingeben muss, die doch bei einem bestimmten Bauteil für ALLE, die
> es in ihre Datenbank eintragen, immer und immer wieder dieselben sind.
> Sich diese Arbeit zu teilen, wäre für alle eine RIESIGE
> Arbeitsersparnis.

Olof Gutowski schrieb:
> Und irgendwie wäre es schön, wenn man Datensätze mit anderen Usern
> tauschen könnte, …

Georg schrieb:
> Ein Aussteller hatte diese Software weitentwickelt. …
> Diese version hatte auch eine Benutzerverwaltung und ein
> Projektmanagment, man konnte Bauprojekte verwalten und die Teile aus der
> Datenbank wurden einbezogen.

Eine wichtige Anmerkung dazu war:

Mehmet Kendi schrieb:
> Für mich macht es wenig Sinn, wenn ich
> z.Bsp. auf all die tausend Bauteile von Farnell Zugriff haette. Wüsste
> echt nicht, was ich damit anfangen sollte.

Ich denke, es müßte in der Datenbank eine Tabelle geben, die die vom 
einzelnen Nutzer verwendeten Bauteile kennzeichnet. Wenn man ein neues 
Bauteil anlegen möchte, würde man zunächst in den gemeinsam genutzten 
Stammdaten aller Nutzer suchen und das Bauteil quasi für sich 
"aktivieren". Nur wenn man es dort nicht findet, legt man es wirklich 
neu an und es ist dann auch für andere in den gemeinsamen Stammdaten zu 
finden.

Um seine Daten jederzeit auf eine eigene Instanz kopieren zu können, 
wäre dazu noch eine Export-Funktion für die eigenen Daten 
(Lagerbestände) und die genutzten Stammdaten nötig (XML, CSV oder SQL).

Noch eine Idee (Priorität niedrig):

Armin Baumgardt schrieb:
> und 1000 Stk in der Überbestandskiste

Hierbei ging es um verschiedene Lagerorte 
(http://code.google.com/p/part-db/issues/detail?id=29).

Daraus könnte bei einer gemeinsam genutzten Instanz sogar eine neue 
Funktion entstehen: Wenn man Teile benötigt, kann man schauen, ob ein 
anderer davon noch welche loswerden will, und es müssen keine neuen 
Teile gekauft werden. Davon hätten alle was.

Bauteilegucker schrieb:
> Sogar die jeweiligen
> Eagle/KICAD/...-libs könnte man gleich mit integrieren, …

Den Sinn/Vorteil habe ich noch nicht ganz verstanden.

von b.r (Gast)


Lesenswert?

Hallo Torsten!

Torsten C. schrieb:
> Aber macht es denn Sinn, dass jeder einzelne Nutzer einen Webserver mit
> PHP und Mysql Datenbank betreiben muß?
Nein. Aber auch daran wir gearbeitet: Eine Multiuser-Version auf einem 
zentralen Webspace.
Aber noch sind wir nicht soweit.


Torsten C. schrieb:
>> Sogar die jeweiligen
>> Eagle/KICAD/...-libs könnte man gleich mit integrieren, …
> Den Sinn/Vorteil habe ich noch nicht ganz verstanden.
Damit würde die aufwändige, unkomfortable Suche nach dem passenden 
Bauteil in der entsprechenden PCB-Software entfallen.

Grüße
b.r

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Torsten C. schrieb:
> Ich habe daher einen Verbesserungsvorschlag, den ich in der TODO-Liste
> nicht gefunden habe.

b.r schrieb:
> … daran wir gearbeitet: Eine Multiuser-Version auf einem
> zentralen Webspace

Wird die Liste denn noch gepflegt, oder gibt es noch mehr Listen?

b.r schrieb:
> Damit würde die aufwändige, unkomfortable Suche nach dem passenden
> Bauteil in der entsprechenden PCB-Software entfallen.

Und wie genau geht das dann weiter, z.B. in Eagle? Im Lib-Browser muß 
ich das Bauteil doch eh suchen, oder kann man das Bauteil per Drag&Drop 
aus der Part-DB in den Schaltplan schieben?

von b.r (Gast)


Lesenswert?

Torsten C. schrieb:
> Wird die Liste denn noch gepflegt,
Ja.

> oder gibt es noch mehr Listen?
Nein.

> b.r schrieb:
>> Damit würde die aufwändige, unkomfortable Suche nach dem passenden
>> Bauteil in der entsprechenden PCB-Software entfallen.
> Und wie genau geht das dann weiter, z.B. in Eagle? Im Lib-Browser muß
> ich das Bauteil doch eh suchen, oder kann man das Bauteil per Drag&Drop
> aus der Part-DB in den Schaltplan schieben?
Ich könnte mir vorstellen, das man die benötigten Teile als Lib aus 
part-db exportiert und dann alles an einem Platz hat.

Grüße
b.r

von Gelöscht (kami89)


Lesenswert?

Torsten C. schrieb:
> Nach dem
> Thread Beitrag "Teile-Verwaltung für elektronische Bauteile" zur
> "Part-db Lagerverwaltung" ist das nämlich mindestens schon der
> dritte Thread.

Das Thema "Teile-Verwaltung für elektronische Bauteile" kannte ich gar 
nicht. Ursprünglich ging es dort ja auch gar nicht um Part-DB, sondern 
um ein anderes Programm. Die Entwickler von Part-DB findet man hier, 
oder im letzten Thread (das wegen seiner Länge nun durch diesen hier 
abgelöst wurde).

Torsten C. schrieb:
> Soll im Artikel Part-DB RW - Lagerverwaltung unter "Wünsche /
> Verbesserungsvorschläge / Bugreports" der Link auf den neuen Thread Nr.
> 269289 angepaßt werden?

Habe ich gleich erledigt, danke für den Hinweis.

Torsten C. schrieb:
> Ich habe daher einen Verbesserungsvorschlag, den ich in der TODO-Liste
> nicht gefunden habe.

Ein Issue zur Benutzerverwaltung gibt es ja schon, und jetzt habe ich 
ihn noch ein bisschen ergänzt bezüglich dem von dir angesprochenen 
Thema: https://code.google.com/p/part-db/issues/detail?id=8

Torsten C. schrieb:
> Im Moment sehe ich das so, dass ich die aktuelle Version dazu um
> Benutzerkonten erweitern müßte.

Wie im Issue zu lesen ist, wird daran gearbeitet. Wir stellen momentan 
auch gleich auf objektorientierte Programmierung und Templates um, das 
gibt eine Menge Arbeit und wird auch dementsprechend etwas dauern bis 
wir soweit sind.

Torsten C. schrieb:
> b.r schrieb:
>> Damit würde die aufwändige, unkomfortable Suche nach dem passenden
>> Bauteil in der entsprechenden PCB-Software entfallen.
>
> Und wie genau geht das dann weiter, z.B. in Eagle? Im Lib-Browser muß
> ich das Bauteil doch eh suchen, oder kann man das Bauteil per Drag&Drop
> aus der Part-DB in den Schaltplan schieben?

Es beantwortet zwar nicht direkt deine Frage, aber:
Der Upload von Dateien wird in Zukunft sehr universell gestaltet. Heisst 
also, der Benutzer kann hochladen was auch immer er will. Von mir aus 
soll er auch Werbefilme von Bauteilen hochladen wenn er es für sinnvoll 
hält :-) Dann kann also jeder Benutzer selber entscheiden was er für 
Sinnvoll hält und was nicht.

von Gelöscht (kami89)


Lesenswert?

@Udo
Du hast ja noch was bezüglich der Währung geschrieben. Eigentlich wäre 
es schlussendlich ja am besten, wenn man bei jedem Bauteil bzw. bei 
jedem Preis eines Bauteiles die Währung separat angeben kann. Dann kann 
man Teile, die man im Ausland (wo eine andere Währung gilt) kauft, in 
der tatsächlichen Währung erfassen, und muss es nicht selber umrechnen.

Irgendwie könnte man dann bestimmt auch noch die aktuellen Wechselkurse 
aus dem Internet holen um Preise in fremden Währungen zusätzlich auch 
noch in der eigenen Währung anzeigen zu lassen (oder man gibt die 
Wechselkurse alternativ auch manuell ein).

Wir könnten dann eine currencymgr.php erstellen, wo man all seine 
verwendeten Währungen inkl. Wechselkurs (bzw. URL wo man den Wechselkurs 
bekommt) verwalten kann. Dort kann man dann auch gleich die 
Standardwährung wählen, die halt vorzugsweise verwendet werden soll.

Ich als Schweizer habe schon ein paarmal in DE eingekauft und würde 
diese Funktion natürlich sehr begrüssen :-) Dann sehe ich auch wie die 
Teile aus DE immer günstiger werden mit der Zeit (der Eurokrise sei 
dank)^^

Wenn da niemand was dagegen einzuwenden hat, schreibe ich das noch in 
unsere Issues.

von Gelöscht (kami89)


Lesenswert?

Bezüglich des Debug-Logs bin ich mir mittlerweile nicht mehr sicher ob 
es wirklich vorteilhaft ist wenn die Meldungen in der Datenbank abgelegt 
werden. Bei Problemen mit der Datenbank gibts dann nämlich auch kein 
Debugging mehr, was relativ unpassend ist :-)
Ausserdem müsste man aktiv Endlosschleifen bekämpfen wenn es 
Datenbankprobleme gibt. Meldet eine Funktion (die etwas mit der 
Datenbank machen will) ein Fehler, kommt die Log-Funktion, die natürlich 
ebenfalls auf die Datenbank zugreifen will, dieser Zugriff führt dann 
aber wieder zu einer neuen Fehlermeldung, die geloggt werden will, und 
so dreht sich das System dann im Kreis :-)

Der ganze Debug-Kram sollte daher eigentlich möglichst unabhängig vom 
ganzen Rest des Systems funktionieren. Um die Logs zu speichern wäre die 
einzige Möglichkeit dann wohl nur noch mit Dateien. Vielleicht könnte 
man dazu eine XML-Datei verwenden, damit man trotzdem noch einigermassen 
vernünftig mit Attributen usw. arbeiten kann.

Klar, wenn die Schreibrechte fehlen funktioniert auch dieses System 
nicht. Allerdings kann man die Schreibrechte prüfen, und bei der Ausgabe 
der Logs dann eine Meldung bringen "Sie haben keine Schreibrechte, es 
können keine Meldungen geloggt werden", dann weiss man direkt wo das 
Problem liegt.

von Gelöscht (kami89)


Lesenswert?

Ich habe jetzt mal eine dateibasierte Version des Debug-Systems in 
meinen Branch hochgeladen. Die Klasse heisst "debug_log.php" und die 
Debug-Seite ist "debug.php".

Das Ganze funktioniert so:
Existiert eine Datei "log/debug_log.xml", heisst das, dass das Logging 
aktiv ist, und neue Meldungen landen in dieser Datei. Existiert keine 
solche Datei, gilt das Logging automatisch als deaktiviert.

Damit später (wenn es die Benutzerverwaltung gibt) die einfachen 
Benutzer keinen Zugriff aufs Debug-System haben, habe ich einen 
Passwortschutz eingebaut. In der Datei "log/debug_log_password.txt" 
speichert man einfach den MD5-Hash des gewünschten Passwortes ab. Ich 
habe es bewusst so "steinzeitmässig" gemacht, damit die Debugklasse 
keinen Zugriff auf die Datenbank braucht (um Admin-Berechtigungen zu 
prüfen), aber trotzdem gewissermassen geschützt ist. Ist das Logging 
aktiv, können zwar die Benutzer theoretisch ebenfalls die Meldungen 
anschauen und das Logging deaktivieren. Es liegt dann halt beim 
Administrator, dass er das Debugging auch wieder deaktiviert (und damit 
automatisch auch alle Logs löscht, weil die Datei dann weg ist). 
Aktivieren kann man das Logging nur mit dem oben genannten Passwort.

Tauchen in der Debugklasse selber Fehler auf, werden diese ebenfalls 
erfasst und können per Klassenmethode get_class_errors() geholt werden.

Funktionieren tuts soweit schonmal ziemlich gut. Aber wie immer bei mir 
gilt: Es ist erstmal nur ein Test, es kann sich noch einiges ändern :-)

von Gelöscht (kami89)


Lesenswert?

So, nach langem Rumprobieren scheint jetzt das Datenbankupdate für das 
neue Lieferantensystem zu funktionieren (Tabelle "orderdetails"). Ich 
hoffe das passt so. Ausserdem werden die Tabellen "datasheets" und 
"pictures" zu einer einzigen Tabelle "files" zusammengefasst.

https://code.google.com/p/part-db/source/browse/branches/kami89/db_update_steps.php?spec=svn524&r=524

Der Benutzerverwaltungs-Kram ist bisher nur provisorisch und wird noch 
nicht verwendet.

Bei folgenden Sachen war ich mir nicht ganz sicher, ob man die löschen 
darf:
- Spalte "manual_input" in "preise": Wird gar nicht verwendet, oder?
- Spalte "visible" in "parts": Ist nachher ja Sache der 
Benutzerverwaltung
- Tabelle "pending_orders": Wurde noch nie gebraucht?!

@K.J. oder b.r: Weiss einer von euch Bescheid über diese Dinge?

mfg

von b.r (Gast)


Lesenswert?

Urban B. schrieb:
> So, nach langem Rumprobieren scheint jetzt das Datenbankupdate für das
> neue Lieferantensystem zu funktionieren (Tabelle "orderdetails"). Ich
> hoffe das passt so. Ausserdem werden die Tabellen "datasheets" und
> "pictures" zu einer einzigen Tabelle "files" zusammengefasst.
Gibt es eigentlich ein paar Features, die man schon in den 'trunk' 
portieren könnte, oder ist alles Klassenabhängig?


> - Spalte "manual_input" in "preise": Wird gar nicht verwendet, oder?
Jain.

Gesetzt wird es an zwei verschiedenen Stellen: In 
'readme/partdb-autoprice.py' wird es bei Neueinträgen/Updates auf '0' 
gesetzt. price_add in der lib.php setzt es auf '1'.

Aber verwendet wird es bisher noch nicht. Vielleicht ist es aber nicht 
ganz verkehrt, zum Preis die folgenden Informationen zu speichern: Datum 
der letzten Aktualisierung und Herkunft der Preisinformation (Webseite, 
Angebot o.ä.)

> - Spalte "visible" in "parts": Ist nachher ja Sache der
> Benutzerverwaltung
Ich hatte die Spalte eingeführt, um die Bauteilansicht in 
'open/openlist.php' einschränken zu können. Wenn die Benutzerverwaltung 
eingeschränkenten Gastzugriff erlaubt, kann das gerne dort mit 
einfließen.
Es sollen z.B. in einer Firma nur die 'offiziellen' Bauteile für alle 
sichtbar sein.

> - Tabelle "pending_orders": Wurde noch nie gebraucht?!
Doch: Verwaltung/Tools -> Zeige -> Zu bestellende Teile


Grüße
b.r

von Gelöscht (kami89)


Lesenswert?

b.r schrieb:
> Gibt es eigentlich ein paar Features, die man schon in den 'trunk'
> portieren könnte, oder ist alles Klassenabhängig?

Ne also ohne Klassen läuft eigentlich überhaupt nichts aus meinem 
Branch. Man müsste extra neue Funktionen schreiben um diese Features in 
den Trunk übernehmen zu können.

b.r schrieb:
> Gesetzt wird es an zwei verschiedenen Stellen: In
> 'readme/partdb-autoprice.py' wird es bei Neueinträgen/Updates auf '0'
> gesetzt. price_add in der lib.php setzt es auf '1'.
>
> Aber verwendet wird es bisher noch nicht. Vielleicht ist es aber nicht
> ganz verkehrt, zum Preis die folgenden Informationen zu speichern: Datum
> der letzten Aktualisierung und Herkunft der Preisinformation (Webseite,
> Angebot o.ä.)

Hmm ok stimmt, das autoprice.py habe ich ganz vergessen. Dann lasse ich 
diese Spalte mal in der Tabelle drin. Das Datum der letzten 
Preisaktualisierung wird ja bereits aufgezeichnet, das lasse ich auch so 
drin. Herkunft der Preisinformation könnte man später noch einbauen wenn 
es mal möglich sein sollte, die Preise direkt von Webseiten zu beziehen 
(direkt aus Part-DB heraus). Momentan gibt es ja nur die zwei 
Möglichkeiten "manuell" und "autoprice.py", daher genügt vorläufig der 
Boolean "manual_input".

b.r schrieb:
> Ich hatte die Spalte eingeführt, um die Bauteilansicht in
> 'open/openlist.php' einschränken zu können. Wenn die Benutzerverwaltung
> eingeschränkenten Gastzugriff erlaubt, kann das gerne dort mit
> einfließen.
> Es sollen z.B. in einer Firma nur die 'offiziellen' Bauteile für alle
> sichtbar sein.

OK dann könnte man theoretisch sogar noch etwas weiter gehen, und 
"Attribute" für Bauteile einführen. Dann kann der Benutzer (bzw. der 
Admin) festlegen, welche Attribute es geben soll, z.B. "inoffiziell" und 
"geheim". Beim Anlegen eines Bauteiles erscheint dann für jedes Attribut 
eine Checkbox die man anwählen kann. In der Benutzerverwaltung legt man 
dann bei jedem Benutzer fest, auf welche Attribute er Zugriff hat und 
auf welche nicht. Momentan gibt es ja auch schon ein Attribut 
"obsolete", das man später dann nicht mehr separat behandeln müsste.

Für den Gastzugang legt man später übrigens einfach einen Benutzer 
"Gast" an und definiert seine Rechte. Dann gelten diese Attribute auch 
für nicht-eingeloggte Benutzer.

Aber das hat momentan eine niedrige Priorität, das muss noch etwas 
warten. Ich schreibs aber mal in unsere ToDo Liste.

b.r schrieb:
>> - Tabelle "pending_orders": Wurde noch nie gebraucht?!
> Doch: Verwaltung/Tools -> Zeige -> Zu bestellende Teile

Ja, aber dort werden ja einfach die Teile aus der Tabelle "parts" 
geholt, wo "instock" kleiner als "mininstock" ist. Die Tabelle 
"pending_orders" ist bei mir jedenfalls immer leer, auch wenn in "Zu 
bestellende Teile" Teile angezeigt werden. Meine Vermutung ist, dass die 
Tabelle dazu da ist, um Teile als bestellt markieren zu können. Dann 
würden sie nicht mehr unter "Zu bestellende Teile" aufgelistet werden, 
obwohl der Bestand noch tief genug wäre. Aber implementiert scheint es 
noch nicht zu sein, ich habe nichts gefunden wo man Teile als "bestellt" 
markieren könnte.

Naja, ich lass die Tabelle wohl mal drin und schreibe einen ToDo-Eintrag 
dazu.

mfg

von b.r (Gast)


Lesenswert?

Urban B. schrieb:
> Ne also ohne Klassen läuft eigentlich überhaupt nichts aus meinem
> Branch. Man müsste extra neue Funktionen schreiben um diese Features in
> den Trunk übernehmen zu können.
Na dann wird es Zeit, die Klassen in den Trunk zu holen, oder?!

[Attribute]
> Aber das hat momentan eine niedrige Priorität, das muss noch etwas
> warten. Ich schreibs aber mal in unsere ToDo Liste.
Klingt gut.

[pending_orders]
> Aber implementiert scheint es
> noch nicht zu sein, ich habe nichts gefunden wo man Teile als "bestellt"
> markieren könnte.
Stimmt. Bisher wird die Tabelle nur gelesen. Zum ersten Mal taucht das 
Feature in part-db-0.1d-beta (showparts.php) auf. Da die Tabelle bisher 
nicht beschrieben wird und der Originalautor nicht mehr mitmacht, können 
wir die Tabelle und die zugehörigen Abfragen gerne entfernen.

> Naja, ich lass die Tabelle wohl mal drin und schreibe einen ToDo-Eintrag
> dazu.
Oder so.

Grüße
b.r

von Gelöscht (kami89)


Lesenswert?

b.r schrieb:
> Urban B. schrieb:
>> Ne also ohne Klassen läuft eigentlich überhaupt nichts aus meinem
>> Branch. Man müsste extra neue Funktionen schreiben um diese Features in
>> den Trunk übernehmen zu können.
> Na dann wird es Zeit, die Klassen in den Trunk zu holen, oder?!

Das kommt schon noch, aber das braucht schon seine Zeit bis auch 
wirklich alles vernünftig läuft :-)
Ich habe jetzt einen neuen Branch "uneist_kami89" angelegt, in dem die 
beiden Branches "uneist" und "kami89" verschmolzen werden.

mfg

von K. J. (Gast)


Lesenswert?

Hi, hab grade mal versuch den Brunch "uneist_kami89" zu installieren 
kann das sein das es ein Pfade Problem gibt ?

Jedenfalls wen es nicht im Hauptordner liegt das hat mich auch schon 
immer bei der org. Version gestört gehabt das man bei keine Absoluten 
Pfade angeben konnte, wehre noch was für die ToDo liste ebenso wie 
absolute WEB Pfade das würde auch viele Probleme Lösen z.b. bei der 
Mobile Version ist mir das schon sehr unangenehm aufgefallen(die Mobile 
Version wehre mit den Brunch eh obsolet da das über das neue 
Templatesystem gut umzusetzen wehre).



Ansonsten schon mal ein Fettes LOB an kami und die anderen.

von Gelöscht (kami89)


Lesenswert?

K. J. schrieb:
> Hi, hab grade mal versuch den Brunch "uneist_kami89" zu installieren
> kann das sein das es ein Pfade Problem gibt ?

Hallo K.J.!
Meinst du die Pfade der include-Anweisungen? Oder welche Pfade meinst 
du?
Ich kann hier grad kein Pfade-Problem feststellen, bräuchte also mehr 
Informationen von dir um das nachvollziehen zu können.

K. J. schrieb:
> Jedenfalls wen es nicht im Hauptordner liegt das hat mich auch schon
> immer bei der org. Version gestört gehabt das man bei keine Absoluten
> Pfade angeben konnte, wehre noch was für die ToDo liste ebenso wie
> absolute WEB Pfade das würde auch viele Probleme Lösen

Hmm meinst du die Pfade für Bilddateien/Datenblätter? :-)
Da dachte ich, dass man nur den zum Hauptordner relativen Pfad verwenden 
soll. Nur für Dateien ausserhalb des Hauptordners sollen über den ganzen 
Pfad angesprochen werden.

K. J. schrieb:
> z.b. bei der
> Mobile Version ist mir das schon sehr unangenehm aufgefallen(die Mobile
> Version wehre mit den Brunch eh obsolet da das über das neue
> Templatesystem gut umzusetzen wehre).

Jup, ich denke mal für eine mobile Version wird es dann ein extra 
Template geben.

K. J. schrieb:
> Ansonsten schon mal ein Fettes LOB an kami und die anderen.

Dankeschön :-)

P.S.
Ich habe gleich nochmal eine neue Version ins SVN geladen mit einigen 
Änderungen.

von Gelöscht (kami89)


Lesenswert?

So, ich habe jetzt (r533) noch ein System eingebaut, um auf jeder Seite 
möglichst einheitlich und einfach Fehlermeldungen/Bestätigungsmeldungen 
und Sicherheitsnachfragen (z.B. beim Löschen) ausgeben zu können.

In der Datei supmgr.php ist dies sehr schön zu sehen (es handelt sich um 
das Array $messages). Beim Anlegen und Bearbeiten von Lieferanten 
erscheinen Bestätigunsmeldungen bzw. Fehlermeldungen am oberen Rand, 
beim Löschen erscheint die Sicherheitsnachfrage in dieser Box.

(Durch die ganzen Exceptionhandler wirkt die supmgr.php leider schon 
langsam etwas unübersichtlich. Vielleicht lässt sich da noch was 
verbessern...)

Falls schwerwiegende Fehler im Skript auftreten, so wird nur diese Box 
mit den Fehlermeldungen ausgegeben, der Rest der Seite wird dann nicht 
angezeigt (es folgt aber noch ein "Reload"-Button um wieder zur 
vollständigen Seite zu kommen falls der Fehler z.B. durch eine per 
POST/GET übermittelte Variable entstanden ist).

Ich denke, das Ziel wären schlussendlich dann mal schöne JavaScript 
Dialoge, die auch optisch was hermachen. Aber mit JavaScript kenne ich 
mich zu wenig aus, und irgendwann muss die neue Version ja auch mal 
fertig werden :-)

Auch habe ich das "Bedienkonzept" der supmgr.php etwas abgeändert. Am 
besten schaut ihr es euch selbst an, der Branch müsste eigentlich so 
Funktionieren (voraussetzung ist aber eine Datenbank der Version 12!). 
Ich hoffe ihr seit damit einverstanden :-)

So und jetzt ab ins Bett xD

von K. J. (Gast)


Lesenswert?

Urban B. schrieb:
> K. J. schrieb:
>> Hi, hab grade mal versuch den Brunch "uneist_kami89" zu installieren
>> kann das sein das es ein Pfade Problem gibt ?
>
> Hallo K.J.!
> Meinst du die Pfade der include-Anweisungen? Oder welche Pfade meinst
> du?
> Ich kann hier grad kein Pfade-Problem feststellen, bräuchte also mehr
> Informationen von dir um das nachvollziehen zu können.
>
Naja wir haben ja immer Dateipfade Relativ angegeben also z.b. 
img/blablub.png,  sinnvoller ist es dieses in der Config zu erweitern 
z.b. bei Bineren Dateien oder Uploadordnern ...:

${Pfaddateisystem}/blablub.png  = /var/www/...../blablub.png

Bei PHP Dateien den webpfad:

${Relativerpfad}/start.php = http://example.com/...../start.php

Warum ist auch eigentlich klar bei den Brunch wird das sichtbar mal 
greift z.b. die nav.php auf templates... zu mal ist es andersrum da 
greift das Template auf Dateien im Hauptordner von der Partdb zu da 
klappt das mit den Relativen Pfaden nicht mehr.

Ich hoffen das war jetzt verständlich.

Ich hab das nie gemacht gehabt weil ich nie gedacht hätte das es so 
viele Leute nutzen würden das würde auch eine ganze mänge Probleme 
anderer USER Lösen.

http://partdb.grautier.com/uneistkami89/ wehre nen beispiel das es nicht 
geht so wie es ist sieht man im html Quellcode recht gut wen die 
Installation im Hauptordner der subdomain wehre würde es gehen im 
unterordner nicht.

von M. K. (avr-frickler) Benutzerseite


Angehängte Dateien:

Lesenswert?

b.r schrieb:
> Torsten C. schrieb:
>> Wird die Liste denn noch gepflegt,
> Ja.
>
>> oder gibt es noch mehr Listen?
> Nein.
>
>> b.r schrieb:
>>> Damit würde die aufwändige, unkomfortable Suche nach dem passenden
>>> Bauteil in der entsprechenden PCB-Software entfallen.
>> Und wie genau geht das dann weiter, z.B. in Eagle? Im Lib-Browser muß
>> ich das Bauteil doch eh suchen, oder kann man das Bauteil per Drag&Drop
>> aus der Part-DB in den Schaltplan schieben?
> Ich könnte mir vorstellen, das man die benötigten Teile als Lib aus
> part-db exportiert und dann alles an einem Platz hat.
>
> Grüße
> b.r

Dazu habe ich noch eine Idee, wir haben hier in der Firma das Problem 
das 2 Entwickler jeweils eine eigene Bauteil-bibliothek aufgebaut haben.

Ich habe jetzt mal angefangen die Bibliotheken zusammenzufassen, dabei 
habe ich einen SVN-Server aufgesetzt. Dadurch das Eagle 6 jetzt 
XML-Dateien einsetzt geht das ziemlich gut.

Ich ahbe das ganze so eingerichtet das es einen trunk gibt in dem alle 
Bibliotheken gepflegt werden und jeder Entwickler einen eigenen brunch 
hat in dem er seine eigene Bibliothek pflegen kann, so kann es nicht 
passieren, dass wenn Entwickler A eine Änderung an einem Bauteil macht 
Entwickler B ebenfalls betroffen ist.

Weiter geplant ist dann, das die Entwickler einmal im Monat einen tag 
ihres branches anlegen und diese wieder in den trunk übernommen werden.

Wenn man ein SVN im Netz aufsetzen möchte reicht es wahrscheinlich aus 
wenn man einen trunk anlegt wo nur wenige Leute Schreibzugriff haben 
aber jeder Lesezugriff und einen bruch wo jeder dann Bibliotheken 
einreichen kann. Ein paar Freiwillige pflegen die Bauteile dann in den 
trunk ein.

Wenn man sowas in Angriff nimmt sollte man sich aber ein paar Gedanken 
über 'Guidlines' machen, sonst findet man in der Bibliothek kaum etwas.
Ich habe mal eine Bibliothek angehangen wie ich das bei uns umgesetzt 
habe.

Ich habe mal noch ein Bild von ein paar Bauteilen angehangen wie das in 
3D aussieht, die können zwar nicht mir Eagle3D oder EagleUP mithalten, 
können dafür aber von einem Gehäuse-Designer im CAD-Programm verwendet 
werden.

Wer Interesse hat sowas aufzubauen, kann sich mal melden. Ich hätte da 
sogar noch einen kleinen V-Server zum testen mit der Domain pcb-parts.de 
:-)

von Gelöscht (kami89)


Lesenswert?

K. J. schrieb:
> Naja wir haben ja immer Dateipfade Relativ angegeben also z.b.
> img/blablub.png,  sinnvoller ist es dieses in der Config zu erweitern
> z.b. bei Bineren Dateien oder Uploadordnern ...:
>
> ${Pfaddateisystem}/blablub.png  = /var/www/...../blablub.png

Ja, intern wird jetzt eigentlich auch mit absoluten Pfaden gearbeitet, 
dazu gibt es die Konstante BASE, die in der start_session.php definiert 
wird, und zwar mit dirname(_FILE_). Ich denke das sollte eigentlich 
ein gutes System sein, da _FILE_ ja immer den kompletten Pfad zur 
start_session.php liefert, also müsste dirname(_FILE_) dann den Pfad 
der Part-DB Installation sein. Und _FILE_ ist auch unabhängig davon, 
aus welcher Datei heraus nun die start_session.php included wurde, es 
liefert immer den Pfad zur start_session.php.

Für die HTML-Ausgabe denke ich aber es ist besser wenn das 
Serververzeichnis (z.B. "/var/www/") wieder entfernt wird. Ich finde es 
geht niemeanden was an, in welchem Ordner Part-DB installiert ist.

Fürs HTML sollte es da doch keine Probleme geben, wenn man für 
Dateipfade immer alles nach dem "var/www" verwendet, also z.B. 
"/part-db/img/partdb/favicon.ico" für die Favicon-Deklaration im 
HTML-Header, oder liege ich da falsch? (Der komplete Pfad der Datei wäre 
dann "/var/www/part-db/img/partdb/favicon.ico")

K. J. schrieb:
> Warum ist auch eigentlich klar bei den Brunch wird das sichtbar mal
> greift z.b. die nav.php auf templates... zu mal ist es andersrum da
> greift das Template auf Dateien im Hauptordner von der Partdb zu da
> klappt das mit den Relativen Pfaden nicht mehr.

Nein, in PHP wird es nicht zu Problemen führen, da immer mit der 
BASE-Konstante gearbeitet wird bei den includes, also z.B. 
include_once(BASE.'/lib/class.HTML.php');
Es gibt allerdings eine einzige Ausnahme, und das ist die 
start_session.php, weil vor dem Includen dieser Datei die BASE-Konstante 
ja noch nicht existiert. Aber da man in jeder PHP-Datei ja weiss, wo die 
start_session.php (relativ zur ausgeführten Datei) liegt, kann man diese 
auch ohne Probleme mit dem relativen Pfad einbinden.

K. J. schrieb:
> http://partdb.grautier.com/uneistkami89/ wehre nen beispiel das es nicht
> geht so wie es ist sieht man im html Quellcode recht gut wen die
> Installation im Hauptordner der subdomain wehre würde es gehen im
> unterordner nicht.

OK da scheint aber das Problem zu sein, dass in den Pfaden im Header der 
beginnende Slash fehlt. Ich habe mal eine neue Revision hochgeladen, 
probier die mal aus, ich hoffe dann funktionierts.

Ich werde wohl in der start_session.php noch eine Konstante 
DOCUMENT_ROOT anlegen, die dann immer den Pfad nach z.B. "/var/www/" 
beinhaltet. Ich vermute nämlich, dass bei dir $_SERVER['DOCUMENT_ROOT'] 
keinen Slash am Ende hat, bei mir aber schon. Deshalb würde es Sinn 
machen, eine Konstante DOCUMENT_ROOT anzulegen, die dann immer 
definierte Slashes hat, damit man sich in den Skripten nicht mehr darum 
kümmern muss.

von Gelöscht (kami89)


Lesenswert?

So, jetzt ist das Pfade-Problem in der Online Demo behoben, scheint wohl 
wirklich an der Inkonsistenz der Variable $_SERVER['DOCUMENT_ROOT'] 
gelegen haben.

Jetzt werden also absolute Pfade ausgehend vom DOCUMENT_ROOT verwendet, 
so wie hier beschrieben: 
http://de.selfhtml.org/html/allgemein/referenzieren.htm#absolut

Etwas komisch ist aber der Fehler in der showparts.php, es scheint keine 
Spalte "name" in der Tabelle "files" zu geben? Die sollte eigentlich 
beim Datenbankupdate angelegt worden sein...

Dafür funktioniert das Debugging, damit kann ich dann den Fehlern, die 
in der Online Demo auftauchen, nachgehen.

Danke noch fürs Einrichten des Demo-Servers, der ist auf jeden Fall 
nützlich wie man jetzt schon feststellen kann :-)

mfg

von K. J. (Gast)


Lesenswert?

Urban B. schrieb:
>
> Jetzt werden also absolute Pfade ausgehend vom DOCUMENT_ROOT verwendet,
> so wie hier beschrieben:
> http://de.selfhtml.org/html/allgemein/referenzieren.htm#absolut

Jup funtzt
>
> Etwas komisch ist aber der Fehler in der showparts.php, es scheint keine
> Spalte "name" in der Tabelle "files" zu geben? Die sollte eigentlich
> beim Datenbankupdate angelegt worden sein...
>

Hm schau morgen mal aber ansich lief das Update sauber durch

> Dafür funktioniert das Debugging, damit kann ich dann den Fehlern, die
> in der Online Demo auftauchen, nachgehen.
>
> Danke noch fürs Einrichten des Demo-Servers, der ist auf jeden Fall
> nützlich wie man jetzt schon feststellen kann :-)
>
Jup hab das alles noch nicht ganz fertig wollte am Anfang beim aufrufen 
eine Auswahlseite machen in der man die normale oder den Brunch zum 
testen ausmehlen kann.

So langsam wirds werde mich die tage mal in das neue System reinleasen 
sieht jedenfalls ziemlich gut aus bis jetzt.

von Gelöscht (kami89)


Lesenswert?

K. J. schrieb:
> Jup hab das alles noch nicht ganz fertig wollte am Anfang beim aufrufen
> eine Auswahlseite machen in der man die normale oder den Brunch zum
> testen ausmehlen kann.

OK, super!

> So langsam wirds werde mich die tage mal in das neue System reinleasen
> sieht jedenfalls ziemlich gut aus bis jetzt.

Du wirst nicht mehr viel von den alten Funktionen wiedererkennen, soviel 
kann ich dir schonmal sagen :-)
Als "Musterbeispiel" um zu schauen wie die Klassen verwendet werden, 
empfehle ich die supmgr.php, die sieht jetzt etwa so aus wie ich mir das 
vorgestellt habe.

Wird jetzt beim Demoserver eigentlich auch schon täglich eine neue 
Datenbank eingespielt?

von K. J. (Gast)


Lesenswert?

Urban B. schrieb:
> K. J. schrieb:
>
> Wird jetzt beim Demoserver eigentlich auch schon täglich eine neue
> Datenbank eingespielt?

Nein noch nicht bin in MYSQL noch nicht so fit bin aber dabei.

hab die Startseite fertig vielleicht hat ja einer noch eine 
Verbesserungs Idee

http://partdb.grautier.com/

von K. J. (Gast)


Lesenswert?

Aso fast vergessen zur fehlenden Tabelle hab mal in die DB geschaut 
"name" gibt es nicht als ROW aber "filename" ? ist das vielleicht das 
Problem ?

EDIT: Jup dadran lag es

von Gelöscht (kami89)


Lesenswert?

K. J. schrieb:
> Nein noch nicht bin in MYSQL noch nicht so fit bin aber dabei.

OK alles klar.

> hab die Startseite fertig vielleicht hat ja einer noch eine
> Verbesserungs Idee
>
> http://partdb.grautier.com/

Cool! Aber irgendwie scheint es ein Problem mit dem Zeichensatz zu 
geben, bei mir werden ä, ö, ü nicht richtig angezeigt...

K. J. schrieb:
> Aso fast vergessen zur fehlenden Tabelle hab mal in die DB geschaut
> "name" gibt es nicht als ROW aber "filename" ? ist das vielleicht das
> Problem ?

ne es müsste eigentlich beides geben, "name" und "filename". Mit "name" 
kann man dann nämlich den Dateien auch gescheite Namen geben wie z.B. 
"AVR AppNote AN123" oder "Anschlussschema" usw.

In der db_update_steps.php sieht die entsprechende Stelle so aus:
1
// table "pictures" will now be changed to "files"
2
$updateSteps[] = "ALTER TABLE `pictures` RENAME `files`";
3
$updateSteps[] = "ALTER TABLE `files` CHANGE `part_id` `element_id` INT(11) NOT NULL";
4
$updateSteps[] = "DROP INDEX `pict_type` ON `files`";
5
$updateSteps[] = "ALTER TABLE `files` CHANGE `pict_fname` `filename` MEDIUMTEXT NOT NULL";
6
$updateSteps[] = "ALTER TABLE `files` DROP COLUMN `pict_width`";
7
$updateSteps[] = "ALTER TABLE `files` DROP COLUMN `pict_height`";
8
$updateSteps[] = "ALTER TABLE `files` DROP COLUMN `pict_type`";
9
$updateSteps[] = "ALTER TABLE `files` DROP COLUMN `tn_obsolete`";
10
$updateSteps[] = "ALTER TABLE `files` DROP COLUMN `tn_t`";
11
$updateSteps[] = "ALTER TABLE `files` DROP COLUMN `tn_pictid`";
12
$updateSteps[] = "ALTER TABLE `files` CHANGE `pict_masterpict` `is_master` BOOLEAN NOT NULL DEFAULT FALSE";
13
$updateSteps[] = "ALTER TABLE `files` ADD `name` TINYTEXT NOT NULL AFTER `id`";
14
$updateSteps[] = "ALTER TABLE `files` ADD `class_name` TINYTEXT NOT NULL AFTER `name`";
15
$updateSteps[] = "ALTER TABLE `files` ADD `type_id` INT(11) NOT NULL AFTER `element_id`";
16
$updateSteps[] = "UPDATE `files` SET name=filename";
17
$updateSteps[] = "UPDATE `files` SET type_id='1'";
18
$updateSteps[] = "UPDATE `files` SET class_name='Part'";

Heisst also, "pict_fname" müsste vorher vorhanden gewesen sein, und 
hätte nun in "filename" umbenannt werden müssen. Ursprünglich wurde 
"pict_fname" in der Datei createtables-FOR-V0.2.1.sql angelegt. Kann es 
vielleicht sein dass bei dir aus irgendeinem Grund diese Spalte 
"pict_fname" nicht vorhanden war?

EDIT: ääh nix studiert....es geht ja um "name", und die hätte beim 
Datenbankupdate einfach angelegt werden müssen wie man im Code oben 
sieht.

von K. J. (Gast)


Lesenswert?

Ok so geht das danke.


Werde mich eh nochmal mit Mysql rumschlagen müssen man kommt neuerdings 
an die komplette Reichelt Datenbank ran ich schaue mir das ganze grade 
an ob man die vielleicht sinnvoll Parsen und bereitstellen kann leider 
ist das ganze in einem recht großen SQLLite File ich wandel das grade um 
aber das wird ne kleine Ewigkeit dauern das ganze in eine Mysql DB zu 
Quetschen b.z.w. vorher nur das wichtige rauszufiltern da da z.b. Bilder 
als Binery Blob drinnen sind.

Wehre noch mit Reichelt abzuklären ob das erlaubt ist, entweder die User 
müssen die Datei selber runterladen, oder Reichelt erlaubt das 
bearbeiten dann würde ich das ganze in eine Mysql DB stopfen als Mirror 
bereitstellen müsste man wen es was wird halt mal erfragen.

von Gelöscht (kami89)


Lesenswert?

Hmm ja wäre cool wenn man dann direkt Teile aus der Reichelt Datenbank 
in die eigene Part-DB importieren könnte.

Ich habe grad noch den Branch aktualisiert, jetzt werden noch zwei 
zusätzliche Konstanten in der config.php verlangt. Und zwar die Befehle 
bzw. Pfade zu "mysqldump" und "mysql", welche dann per exec() für die 
Datenbankbackups und -wiederherstellung verwendet werden können.

Könntest du diese beiden Konstanten noch in die config.php des 
Demo-Servers aufnehmen? Eine Vorlage gibts wie immer in der 
config.php_template. Und könntest du eine Datenbank der Version 12 in 
den backup-Ordner legen? Wenn dann die Backup/Restore Funktion 
funktioniert, kann ich auch selber die Datenbank der Demo wieder auf die 
Version 12 zurücksetzen wenn es mal nötig ist oder ich was ausprobieren 
möchte. Dann brauchen wir die tägliche Datenbankwiederherstellung 
eigentlich gar nicht, wenn ich es manuell machen kann ist das sogar noch 
besser :-)

Gescheite Fehlermeldungen von den exec() Befehlen gibt es übriegens noch 
nicht, das kommt später noch. Aber immerhin sollte zuverlässig erkannt 
werden ob es erfolgreich war oder nicht :-) Dann sollten wenigstens 
keine leeren Backup-Dateien mehr entstehen, was vorher ziemlich 
"gefährlich" war.

EDIT:
Der Fehler in der "files" Tabelle war übrigens nicht der einzige Fehler. 
Auch "id_manufacturers" fehlt in der Tabelle "parts"...

EDIT2:
Übrigens muss nach dem nächsten SVN Update sowieso wieder eine Datenbank 
der Version 12 eingespielt werden. Falls die Backup/Restore Funktion 
nicht funktioniert, wäre ich froh wenn du noch von Hand schnell eine 
neue (bzw. alte) Datenbank einspielen könntest :-)

von K. J. (Gast)


Lesenswert?

Hi,

Das mit den EXEC geht nicht bei mir das auch aus Gutten Grund es ist ein 
echter Server da ist das nicht sinig.

ich könnte dir mysqldumper aufsetzen für die DemoDBs wen du möchtest.

hm vielleicht sollte ich DB noch mal komplett neu einspielen und schauen 
wo der Fehler liegt.

Ansonsten hab ich hier noch dayli Backups der letzten 5 jahre ;-)

Zur DB von reichelt es ist etwas schwerer als gedacht die sqllite DB ist 
AES Verschlüsselt, stehe aber grade mit Reichelt im Kontakt der 
FB-Zuständige sagte das es da wohl ne API für gibt, die frage ist halt 
ob wir daran dürfen und in welcher form.

von Gelöscht (kami89)


Lesenswert?

> Das mit den EXEC geht nicht bei mir das auch aus Gutten Grund es ist ein
> echter Server da ist das nicht sinig.

Ach so okay :-)

> ich könnte dir mysqldumper aufsetzen für die DemoDBs wen du möchtest.

Eigentlich könnten wir doch mysqldumper auch gleich in Part-DB mit 
einbauen oder? Ich schaue mir das mal an wie das so funktioniert.

> hm vielleicht sollte ich DB noch mal komplett neu einspielen und schauen
> wo der Fehler liegt.

Jo ich denke mal nach dem Einspielen einer neuen Datenbank sollte das 
Problem behoben sein. Ich mache halt nicht für jedes Datenbankupdate ein 
neues "case" in die Updatefunktion weil es sonst schnell sehr viele 
"cases" geben würde :-) Deshalb muss man dann halt von Zeit zu Zeit 
wieder eine Datenbank der Version 12 einspielen...

> Ansonsten hab ich hier noch dayli Backups der letzten 5 jahre ;-)

Hehe ja ich denke darin sollten wir was passendes finde :-)

> Zur DB von reichelt es ist etwas schwerer als gedacht die sqllite DB ist
> AES Verschlüsselt, stehe aber grade mit Reichelt im Kontakt der
> FB-Zuständige sagte das es da wohl ne API für gibt, die frage ist halt
> ob wir daran dürfen und in welcher form.

Okay, bin gespannt was da noch rauskommt.

mfg

von Gelöscht (kami89)


Lesenswert?

Hmm MySQLDumper ist ja ein ganz geiles Ding! Es in Part-DB einzubinden 
macht aber eher wenig Sinn da es ja was komplett eigenständiges ist.

Allerdings sollte es später, wenn es Systemupdates für Part-DB gibt, 
auch direkt aus Part-DB heraus aufgerufen werden können. Denn immer vor 
einem Systemupdate sollte die Datenbank automatisch gesichert, und bei 
einem misslungenen Update wiederhergestellt werden.

Ich habe im MySQLDumper Forum gelesen dass es ab der Version 2 auch eine 
API für einen solchen externen Aufruf geben soll, das wäre dann 
natürlich super. Vielleicht kommt die Version 2 ja heraus bevor unser 
Updatesystem fertig ist, dann hat sich das Problem auch erledigt :-D

Ich denke also, dann werden wir die Backup/Restore Funktion komplett aus 
Part-DB entfernen, und stattdessen vielleicht irgendwo einen Hinweis 
platzieren dass man dafür MySQLDumper benutzen kann.

Dann bräuchten wir also doch noch etwas für den Demo Server, um alte 
Datenbanken wiederherzustellen.

von Gelöscht (kami89)


Lesenswert?

So, ich habe jetzt die config.php nochmal etwas verändert. Die 
Einstellungen werden nun nicht mehr in der Datenbank gespeichert, 
sondern in einem Array, das in der config.php liegt.

Der Grund dafür ist, dass es einfach ein paar Einstellungen gibt, die 
auch funktionieren sollen wenn die Datenbank aufgrund eines Fehlers 
nicht gelesen werden kann. Der Nachteil ist halt, dass nun die 
Einstellungen bei einem Datenbankbackup nicht mitgesichert werden. Aber 
so wirklich wichtig sind diese Einstellungen eh nicht, die hätte man 
schnell wieder eingestellt wenn sie wirklich mal verloren gehen 
würden...

@K.J. könntest du bitte bei Gelegenheit eine neue config.php erstellen 
(Vorlage gibts wie immer in der config.php_template)? Nachher kann man 
übrigens auch die Datenbank-Verbindungsparameter bequem über Part-DB 
einstellen, was ich aber noch mit einem Passwortschutz versehe weil 
sonst ja jeder die Online Demo lahmlegen könnte^^ Daher solltest du in 
$config['admin']['password'] ein MD5-Hash eines Passwortes abspeichern 
(oder einfach irgendwas reinschreiben damit es komplett gesperrt wird).

mfg

von Gelöscht (kami89)


Lesenswert?

@K.J.

Wie ich sehe, hast du den Menüeintrag "System" nun entfernt in der 
Online Demo. Ich vermute mal du willst nicht, dass man die 
Datenbank-Verbindungsparameter sehen kann :-)

Dazu habe ich jetzt noch einen neuen Parameter in der config.php 
hinzugefügt. Stellt man $config['is_online_demo'] auf 'true', dann 
werden die Verbindungsparameter ausgeblendet, der "Übernehmen" Button 
ist deaktiviert (und in der php ist nochmals ein Schutz damit keine 
neuen Werte übernommen werden können), und in der Systemkonfiguration 
wird die PHP-Version ausgeblendet.

Alle anderen Einstellungen sind unbedenklich, da dürfen die Leute auch 
ruhig dran rumschrauben. Auch auf der Debug-Seite kann man eigentlich 
kein Unfug treiben.

Ich finde es in den Online-Demos immer schade wenn die 
Konfigurationsseiten ausgeblendet werden, ich jedenfalls interessiere 
mich immer dafür, was man denn alles so einstellen kann :-)

Wäre das so in Ordnung für dich? Dann müsstest du einfach noch den 
entsprechenden Parameter in der config.php auf 'true' stellen. Sorry 
dass ich immer an der config.php rumschraube ;-)

Das entsprechende Update lade ich heute noch ins SVN. Übrigens habe ich 
die config.php_template etwas umgebaut. Und zwar heisst die jetzt 
config_defaults.php, wo alle Parameter auf Standardwerte gesetzt werden. 
Diese wird direkt vor der config.php included, somit beinhalten alle 
Parameter, die in der config.php nicht existieren, automatisch die 
Standardwerte. Auch muss man die config.php gar nicht mehr von Hand 
anlegen beim Installieren von Part-DB. Beim ersten Start sind einfach 
die Standardeinstellungen aktiv, was sicherstellt, dass das Skript 
vollumfänglich funktioniert, bis auf die Datenbankverbindung natürlich. 
Dann stellt man einfach über "System" -> "Datenbank" die 
Verbindungsparameter und über "System" -> "Konfiguration" die anderen 
Einstellungen ein, und die config.php wird automatisch angelegt.

mfg

von K. J. (Gast)


Lesenswert?

WoW sieht echt gut aus !!!

von Gelöscht (kami89)


Lesenswert?

K. J. schrieb:
> WoW sieht echt gut aus !!!

Danke :-)

Wie soll eigentlich die neue Version heissen, was meint ihr?
0.2.3? 0.5.0? 1.0.0? sonstwie? (wobei dann zuerst aber mal release 
kandidaten erscheinen, also z.B. als "1.0.0 RC1" veröffentlicht werden 
würden)

Ich kann mich nicht entscheiden :-)

von Udo N. (weinbauer73)


Lesenswert?

Zurück aus meinem Mini-Urlaub ;-) Ich werde mir die nächsten Tage mal 
den gemeinsamen Branch vornehmen und dort weiter machen.

Nach meiner Meinung wäre wohl eine Versionbezeichung 0.3.x besser 
geeignet, denn ausser einem Rewrite ist ja praktisch nichts neues 
hinzugekommen. Wenn die Benutzerverwaltung und ein paar andere Wünsche 
eingebaut sind, wäre der Sprung auf eine 1er Version sinvoll.

Grüße
Udo

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Zurück aus meinem Mini-Urlaub ;-) Ich werde mir die nächsten Tage mal
> den gemeinsamen Branch vornehmen und dort weiter machen.

Na dann willkommen zurück :-)
Bei einigen Seiten habe ich die Templates gleich selber angelegt, nach 
etwas Einarbeiten in die von dir erstellten Seiten ging das ganz gut :-)

> Nach meiner Meinung wäre wohl eine Versionbezeichung 0.3.x besser
> geeignet, denn ausser einem Rewrite ist ja praktisch nichts neues
> hinzugekommen. Wenn die Benutzerverwaltung und ein paar andere Wünsche
> eingebaut sind, wäre der Sprung auf eine 1er Version sinvoll.

Jo, macht Sinn. Ich nehme mal "0.3.0 RC1" für die erste neue Version 
wenn da niemand was dagegen einzuwenden hat.

Ach ja, ich lade jetzt eigentlich täglich meine Änderungen ins SVN hoch. 
Wäre gut wenn du das auch tun würdest wenn du weiter an unserem Branch 
arbeitest, damit wir kein Durcheinander bekommen.
Und unsere beiden alten Branches sind nun zwar völlig nicht mehr 
aktuell, aber ich würde da nichts löschen weil es dort noch Dateien 
gibt, die ich (noch) nicht in den neuen Branch übernommen habe. Also 
wenn du im neuen Branch etwas vermisst, dann schau mal im alten Branch 
nach :-)

mfg

EDIT:
Übrigens, wozu haben wir eigentlich in der get_svn_revision() eine 
Variante mit shell_exec() und eine, die die SVN Dateien ausliest? 
Zweiteres müsste doch eigentlich immer funktionieren, und könnte deshalb 
doch gleich immer verwendet werden, oder?

von Udo N. (weinbauer73)


Lesenswert?

> Na dann willkommen zurück :-)
> Bei einigen Seiten habe ich die Templates gleich selber angelegt, nach
> etwas Einarbeiten in die von dir erstellten Seiten ging das ganz gut :-)

So schwer ist die Template-Engine ja nicht zu verstehen :-) Smarty & Co 
sind schwerer.

> Jo, macht Sinn. Ich nehme mal "0.3.0 RC1" für die erste neue Version
> wenn da niemand was dagegen einzuwenden hat.

Ok.

> Ach ja, ich lade jetzt eigentlich täglich meine Änderungen ins SVN hoch.
> Wäre gut wenn du das auch tun würdest wenn du weiter an unserem Branch
> arbeitest, damit wir kein Durcheinander bekommen.
> Und unsere beiden alten Branches sind nun zwar völlig nicht mehr
> aktuell, aber ich würde da nichts löschen weil es dort noch Dateien
> gibt, die ich (noch) nicht in den neuen Branch übernommen habe. Also
> wenn du im neuen Branch etwas vermisst, dann schau mal im alten Branch
> nach :-)

Ich hab unsere beiden, den gemeinsamen und den offiziellen Teil hier 
vorliegen. Man muss ja auch mal schauen, was man selbst für einen Mist 
gebaut hat, wenn eine Funktion nicht mehr will.

> EDIT:
> Übrigens, wozu haben wir eigentlich in der get_svn_revision() eine
> Variante mit shell_exec() und eine, die die SVN Dateien ausliest?
> Zweiteres müsste doch eigentlich immer funktionieren, und könnte deshalb
> doch gleich immer verwendet werden, oder?

Es würde die direkte Variante ausreichen, aber mit diesem Code wollte 
ich auch zeigen, dass man shell_exec() nicht ungeprüft verwenden kann. 
Nicht überall kann man auf diese oder ähnliche Funktionen zurückgreifen 
(Sicherheit).

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Es würde die direkte Variante ausreichen, aber mit diesem Code wollte
> ich auch zeigen, dass man shell_exec() nicht ungeprüft verwenden kann.
> Nicht überall kann man auf diese oder ähnliche Funktionen zurückgreifen
> (Sicherheit).

hm?
Eben genau deshalb meine ich ja, dass man die shell_exec auch gleich 
komplett entfernen könnte. Das Auslesen der SVN-Dateien sollte hingegen 
eigentlich doch IMMER funktionieren (oder zumindest nicht weniger häufig 
als shell_exec). Und wenn eine der beiden Varianten IMMER funktioniert, 
dann macht eine Fallunterscheidung ja gar keinen Sinn, dann kann man 
auch gleich die zuverlässigere der beiden nehmen.

von Udo N. (weinbauer73)


Lesenswert?

In der eigentlichen Diskussion ging es ja nicht nur um 
get_svn_revision(), sondern eher um ein paar Stellen im Code, die 
ungeprüft solche Funktionen wie shell_execute() ausführen. Hab ja auch 
noch eine andere Funktion gefunden, die nicht überall anzutreffen ist 
und daher nachgebildet werden muss. Sowas steht oft nur in den 
Anmerkungen oder findet man in den Kommentaren.

Wo es sinnvoll ist, würde ich immer die direkte, über PHP nutzbare 
Version nehmen, bevor ich auf die Shell zurückgreifen muss. Schmeiß` 
also den Teil mit shell_execute() raus :-)

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> In der eigentlichen Diskussion ging es ja nicht nur um
> get_svn_revision(), sondern eher um ein paar Stellen im Code, die
> ungeprüft solche Funktionen wie shell_execute() ausführen. Hab ja auch
> noch eine andere Funktion gefunden, die nicht überall anzutreffen ist
> und daher nachgebildet werden muss. Sowas steht oft nur in den
> Anmerkungen oder findet man in den Kommentaren.

Jup, das stimmt. Ich werde für solche Funktionen gleich noch eine eigene 
Datei "lib.functions.php" anlegen. Aber auch wenn jetzt noch an ein paar 
Stellen solche "problematischen" Funktionen genutzt werden würden, davon 
geht die Welt nicht unter :-) Für solche Dinge gibt es ja die 
Möglichkeit, dass die User hier im Forum Feedback geben können :-)

> Wo es sinnvoll ist, würde ich immer die direkte, über PHP nutzbare
> Version nehmen, bevor ich auf die Shell zurückgreifen muss. Schmeiß`
> also den Teil mit shell_execute() raus :-)

Schon geschehen :-)

von K. J. (Gast)


Lesenswert?

Urban B. schrieb:
>
>> Nach meiner Meinung wäre wohl eine Versionbezeichung 0.3.x besser
>> geeignet, denn ausser einem Rewrite ist ja praktisch nichts neues
>> hinzugekommen. Wenn die Benutzerverwaltung und ein paar andere Wünsche
>> eingebaut sind, wäre der Sprung auf eine 1er Version sinvoll.
>
> Jo, macht Sinn. Ich nehme mal "0.3.0 RC1" für die erste neue Version
> wenn da niemand was dagegen einzuwenden hat.
>

Hi Ja ich wehre auch für 0.3.x.x denke die 1.x.x.x sollten wir uns für 
sehr stabiele Versionen aufbewahren.

von Gelöscht (kami89)


Lesenswert?

So, ich habe jetzt mal angefangen den Source Code mit Doxygen 
Kommentaren zu kommentieren, um mal zu schauen ob da eine nützliche 
Dokumentation bei rauskommt. Denn bei den vielen Klassen verliert man 
schnell mal den Überblick welche Methoden/Attribute nun von welcher 
Klasse geerbt werden usw. Und das manuelle Zeichnen der Klassendiagramme 
bringts ja nicht wirklich, das ist viel zu aufwändig um die Diagramme 
aktuell zu halten.

Ein Beispiel, wo ich mit dem Kommentieren fertig bin, is die Klasse 
"Category". Hier ist die Dokumentation, die Doxygen erstellt hat: 
http://partdb.grautier.com/uneistkami89/documentation/doxygen/html/class_category.html

Oder für die Klasse "DBElement" hat Doxygen dieses coole Klassendiagramm 
erstellt: 
http://partdb.grautier.com/uneistkami89/documentation/doxygen/html/class_d_b_element__inherit__graph.png

Also ich persönlich finde, die Doku ist sehr gut gelungen, und wird bei 
der Entwicklung für viel mehr Übersicht sorgen. Das Kommentieren des 
Codes ist ja nicht wirklich aufwändig, man muss eigentlich nur grad die 
wichtigsten paar Doxygen-Befehle kennen (@brief, @param, @retval, 
@throws). Ich habe mich übrigens für das "@" (und gegen das "\" ) 
entschieden, weil ich Anfangs auch noch die Ergebnisse von PHPDoc sehen 
wollte, und dort wird nur das "@" unterstützt. Ausserdem gefällt mir das 
"@" auch optishc besser.

PHPDoc fand ich übrigens eigentlich auch nicht schlecht, aber 
anscheinend kann man damit keine Diagramme erstellen wenn ich das 
richtig sehe.

Bei Doxygen gibts aber auch etwas, das mir nicht so gefällt. Und zwar 
sieht man z.B. bei der oben genannten Doku von "Category" drei mal die 
Methode "delete()", weil diese Methode dreimal vorkommt in den 
Elternklassen von Category. Aber eigentlich wäre es doch viel besser, 
wenn nur die jeweils unterste dieser Methoden angezeigt werden würden, 
die anderen machen ja keinen SInn irgendwie. Oder habe ich vielleicht 
irgendwas falsch gemacht, dass es so angezeigt wird (?).

Man könnte natürlich auch alle geerbten Methoden/Attribute ganz 
ausblenden, aber ich finde es sehr nützlich wenn man auch die geerbten 
Dinge sieht. Man will ja schliesslich wissen, welche Methoden auf ein 
bestimmtes Objekt angewendet werden können, und da gehören die geerbten 
Methoden nunmal dazu.

Was meint ihr zu der Doku? Ist das für euch okay wenn wir das so 
weiterführen? Oder habt ihr bessere Vorschläge?

Das Erstellen bzw. Aktualisieren der Doku ist übrigens ganz einfach. 
Einfach im Ordner documentation/doxygen/ ein Terminal öffnen und 
"doxygen Doxyfile" ausführen...

mfg

P.S. Aufgrund einiger Arbeiten an den Klassen wird die Demo momentan 
nicht wirklich gut funktionieren. Keine Angst, das sind keine Bugs, das 
ist so "gewollt" :-)

von Udo N. (weinbauer73)


Lesenswert?

Auch wenn ich noch nicht ganz hinter den neuen OOP-Code gestiegen bin, 
hab ich mal angefangen show_obsolete_parts.php auf Templates 
umzuschreiben. Desweiteren hatte ich noch einen Fehler in 
get_svn_revision() beseitigt. Es sollte settype($revision, 'integer') 
statt settype($svn, 'integer') heißen.

[Edit]
Fehler beim Upload. Ich muss die Änderungen nochmal einschecken :(

von Udo N. (weinbauer73)


Lesenswert?

Revision 564 eingescheckt :-)

Zwei zusätzliche Dateien:

- apache2-part-db.conf ist für das Modul mod_xsendfile gedacht. Es ist 
für die schnellere Auslieferung von Dateien per X-SENDFILE-Header 
nützlich.

- Ich habe noch das Shell-Script svn.sh dazugepackt, die ein paar 
svn-Kommandos zusammenfasst. Wird später in ein neues Unterverzeichnis 
"development" verschoben, welches Tools für die Entwicklung aufnehmen 
soll. Im Release sollte man dieses Verzeichnis herausnehmen.

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Auch wenn ich noch nicht ganz hinter den neuen OOP-Code gestiegen bin,
> hab ich mal angefangen show_obsolete_parts.php auf Templates
> umzuschreiben.

Auf den ersten Blick wird man ein bisschen von den ganzen Klassen 
erschlagen, ich weiss :-) Aber dafür ist alles sehr strukturiert 
aufgebaut, es ist nichts mehr doppelt vorhanden usw. Nach ein bisschen 
Einarbeiten sollte es gut verständlich sein denke ich.

Um die Klassen besser zu verstehen, ist auch die Doxygen-Doku sehr 
geeignet, die auch die ganzen Klassendiagramme inkl. Vererbung zeigt.

Sehr zentral ist auf jeden Fall die Klasse "DBElement" mit den Methoden 
"set_attributes()", "check_values_validity()" und "add()". Die sollte 
man verstanden haben damit man auch den Rest versteht. Mit 
"check_values_validity()" werden alle Werte, die in die Datenbank 
geschrieben werden (beim Anlegen oder Bearbeiten eines Datensatzes) auf 
Gültigkeit überprüft und ggf. noch leicht angepasst. Jede Klasse lässt 
zuerst alle seine Elternklassen die Werte überprüfen, danach werden die 
Klassenbezogenen Werte überprüft.

Falls du etwas nicht verstehst helfe ich natürlich gerne weiter.

Udo Neist schrieb:
> - apache2-part-db.conf ist für das Modul mod_xsendfile gedacht. Es ist
> für die schnellere Auslieferung von Dateien per X-SENDFILE-Header
> nützlich.

Ah okay, und wird die Datei automatisch geladen oder muss die noch 
irgendwie eingebunden werden?

Udo Neist schrieb:
> - Ich habe noch das Shell-Script svn.sh dazugepackt, die ein paar
> svn-Kommandos zusammenfasst.

Ich frage mich, obs das wirklich braucht.
 - Tabs durch Leerzeichen ersetzen kann doch jeder (Quelltext-)Editor 
automatisch?
 - Dateien mit Tildezeichen gibt bei mir auch, werden aber von SVN nicht 
berücksichtigt. Ich vermute mal, das könnte man also irgendwie so 
einstellen dass solche Dateien ignoriert werden?

Bei deiner letzten Änderung wurden in Google Code einen Haufen Dateien, 
die du gar nicht bearbeitet hast, als bearbeitet markiert. Weisst du 
woher das kommt? Könnte es sein, dass dein Shell-Skript irgendwie etwas 
an den Dateien verändert hat?

> Wird später in ein neues Unterverzeichnis
> "development" verschoben, welches Tools für die Entwicklung aufnehmen
> soll. Im Release sollte man dieses Verzeichnis herausnehmen.

Jup, gute Idee!

mfg

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:

> Sehr zentral ist auf jeden Fall die Klasse "DBElement" mit den Methoden
> "set_attributes()", "check_values_validity()" und "add()". Die sollte
> man verstanden haben damit man auch den Rest versteht. Mit
> "check_values_validity()" werden alle Werte, die in die Datenbank
> geschrieben werden (beim Anlegen oder Bearbeiten eines Datensatzes) auf
> Gültigkeit überprüft und ggf. noch leicht angepasst. Jede Klasse lässt
> zuerst alle seine Elternklassen die Werte überprüfen, danach werden die
> Klassenbezogenen Werte überprüft.
>
> Falls du etwas nicht verstehst helfe ich natürlich gerne weiter.

Ich werde mich damit mal beschäftigen. Eigenen Code versteht man 
schneller, bei fremden dauert das ja immer ne Weile ;-)

> Udo Neist schrieb:
>> - apache2-part-db.conf ist für das Modul mod_xsendfile gedacht. Es ist
>> für die schnellere Auslieferung von Dateien per X-SENDFILE-Header
>> nützlich.
>
> Ah okay, und wird die Datei automatisch geladen oder muss die noch
> irgendwie eingebunden werden?

Ne, der gehört zum Apache-Webserver. Ich werde das wohl mal komplett 
fertig schreiben, damit man es in die Konfiguration des Webserver 
leichter einfügen kann.

> Udo Neist schrieb:
>> - Ich habe noch das Shell-Script svn.sh dazugepackt, die ein paar
>> svn-Kommandos zusammenfasst.
>
> Ich frage mich, obs das wirklich braucht.

Programmierer sind faul ;-) Immer wiederkehrende Aktionen werden halt in 
kleine Scripte ausgelagert. So ist halt svn.sh entstanden.

>  - Tabs durch Leerzeichen ersetzen kann doch jeder (Quelltext-)Editor
> automatisch?

Die meisten können das. Ich hab das allerdings hinzugefügt, um auch 
externen Code entsprechend anzupassen.

>  - Dateien mit Tildezeichen gibt bei mir auch, werden aber von SVN nicht
> berücksichtigt. Ich vermute mal, das könnte man also irgendwie so
> einstellen dass solche Dateien ignoriert werden?

Bei mir hat SVN auch schon mal diese Dateien hinzugefügt. Kommt auch 
darauf an, mit was man da arbeitet. Ich nutze hier nur die Konsole.

> Bei deiner letzten Änderung wurden in Google Code einen Haufen Dateien,
> die du gar nicht bearbeitet hast, als bearbeitet markiert. Weisst du
> woher das kommt? Könnte es sein, dass dein Shell-Skript irgendwie etwas
> an den Dateien verändert hat?

Es verändert nur PHP und Templates. Es werden ja nicht nur Tabs ersetzt, 
sondern auch die Leerzeichen von Leerzeilen gelöscht. In meinem Editor 
werden die Leerzeichen dann durch Punkte dargestellt, was etwas stört. 
Ich arbeite halt nicht mit Netbeans oder Eclipse, sondern mit dem schon 
etwas betagtem Quanta+.

>> Wird später in ein neues Unterverzeichnis
>> "development" verschoben, welches Tools für die Entwicklung aufnehmen
>> soll. Im Release sollte man dieses Verzeichnis herausnehmen.
>
> Jup, gute Idee!

Hab ich bei mir schon umgesetzt. Da drin ist auch die install.sh, die 
die Installation per Shell ermöglicht.

von b.r (Gast)


Lesenswert?

So. Bin auch wieder zurück aus dem Urlaub.
Zum Thema:
[get_svn_revision]
svnversion zeigt auch an, ob lokal was modifiziert wurde.
Wenn man in den .svn Dateien nachschaut findet man nur die Nummer vom 
letzten commit.
Mir gefällt ersters wesentlich besser, aber es ist nicht überall 
verfügbar.

Grüße
b.r

von Udo N. (weinbauer73)


Lesenswert?

SVN merkt sich in der Datei schon, ob was modifiziert wurde. Es wird 
dann ein "M" angehängt. svnversion macht auch nicht viel anderes, als 
den Status zu interpretieren.

von Marvin H. (hohli)


Lesenswert?

Hallo!

Kann es sein, dass das fertig gepackte Release-Paket nicht ganz aktuell 
ist?

Folgendes Paket habe ich geladen: PartDB-0.2.2.tar.gz vom Samstag, 2. 
Juni 2012 10:56

Trotz 0.2.2 im Dateinamen, erscheint in der Oberfläche nach der 
Installation die Version 0.2.1

So fehlt bei der Footprintverwaltung z.B. die Bilderzuordnung...

Die SVN-Version läuft leider auch nicht mit dem darin enthaltenen 
0.2.1er SQL-Init-Script aus readme/

Könnte jemand mal die aktuelle Version vom Demoserver zur Verfügung 
stellen oder zumindest ein SQL-Init-Script für den SVN-Versionsstand?

Danke!

von Sandboxgangster (Gast)


Lesenswert?

Marvin Hohlfeld schrieb:
> Hallo!
>
> Kann es sein, dass das fertig gepackte Release-Paket nicht ganz aktuell
> ist?
>

ist recht aktuell, wegen der umstellung wird das momenten nicht 
Aktualisiert.

> Installation die Version 0.2.1
>
> So fehlt bei der Footprintverwaltung z.B. die Bilderzuordnung...
>

Jup diese sind, in den beiden Extrapaketen ausgelagert weil die recht 
gross sind.

> Die SVN-Version läuft leider auch nicht mit dem darin enthaltenen
> 0.2.1er SQL-Init-Script aus readme/
>
> Könnte jemand mal die aktuelle Version vom Demoserver zur Verfügung
> stellen oder zumindest ein SQL-Init-Script für den SVN-Versionsstand?
>
> Danke!

Die svn Version kanst selber ausschecken wie das geht steht auf der 
Google Code seite, das init Script geht glaube ich nur für die 0.3.x 
Version, diese ist momentan aber noch nicht wirklich Produktiv 
brauchbar.

von Marvin H. (hohli)


Lesenswert?

Die SVN-Version auszuchecken ist nicht das Problem, nur fehlt mir 
hierfür ein SQL-Skript zur Datenbank-Initialisierung! Das alte Skript 
funktioniert mit der SVN-Version nicht, da sich die Datenbankstruktur 
geändert hat.

Also woher bekomme ich nun ein lauffähiges SQL-Dump..? :-)

von Udo N. (weinbauer73)


Lesenswert?

Nimm mal 
http://code.google.com/p/part-db/source/browse/branches/uneist/readme/createtables-FOR-V0.2.1-rev12.sql.orig. 
Dieses SQL-Script sollte die komplette, leere Datenbank in Version 12 
enthalten.

von Gelöscht (kami89)


Lesenswert?

Hallo Leute,

Soeben habe ich eine neue Version hochgeladen (r567). Jetzt ist es auch 
möglich die Preise auf eine bestimmte Menge zu beziehen (z.B. 10Euro / 
100Stk.), was z.B. für Kabelschuhe, bei denen die Lieferanten die Preise 
häufig auf 10 oder 100 Stk. beziehen, nützlich ist. Dann ist man auch 
nicht mehr auf die Genauigkeit von 0,01 beschränkt, was vorher der Fall 
war. Das entsprechende Attribut heisst "price_related_quantity".

Und dann gibt es noch das Attribut "min_discount_quantity". Damit lassen 
sich verschiedene Preise für verschiedene Bestellmengen definieren 
(Stichwort Mengenrabatt).

Kleine Zusammenfassung wie das Lieferanten-/Preissystem aufgebaut ist:
- Jedes Bauteil kann 0+ Einkaufsinformationen ("Orderdetails") enthalten
- Jede Einkaufsinformation enthält genau einen Lieferanten, eine 
Bestellnummer (kann auch leer sein) und 0+ Preisinformationen 
("Pricedetails")
- Alle Einkaufsinformationen eines Bauteiles haben unterschiedliche 
Lieferanten (pro Lieferant maximal eine Einkaufsinformation)
- Hat eine Einkaufsinformation mindestens eine Preisinformation, so muss 
mindestens bei einer davon "min_discount_quantity = 1" sein

@K.J.
Wegen dem überarbeiteten Preissystem ist wieder eine Änderung der 
Datenbank nötig. Da es etwas "tiefergreifende" Änderungen sind, habe ich 
nicht einen neuen Updateschritt ("case") hinzugefügt, sondern das Update 
von v12 auf v13 entsprechend angepasst (ist sauberer so). Das bedeutet 
dann aber, dass man bei der Online Demo wiedermal eine 12er Datenbank 
einspielen müsste.

Übrigens habe ich in die "config_defaults.php" die zwei neuen Variablen 
$config['db']['backup']['name'] und $config['db']['backup']['url'] 
eingefügt, welche man z.B. für MySQLDumper verwenden kann. Kopiert man 
die entsprechenden beiden Zeilen in die config.php und gibt eine URL für 
MySQLDUmper ein, wird im Menü von Part-DB direkt ein Link zu MySQLDumper 
angezeigt.

Ah ja, wo wir grad beim Menü sind, für was war das Update r566 gedacht? 
:-) Jetzt erscheint die Doku als Untermenü von "Zu bestellende Teile"?! 
xD

mfg

von Gelöscht (kami89)


Lesenswert?

Urban B. schrieb:
> Ah ja, wo wir grad beim Menü sind, für was war das Update r566 gedacht?
> :-) Jetzt erscheint die Doku als Untermenü von "Zu bestellende Teile"?!
> xD

Ups, habe nichts gesagt...Habs zu wenig genau angeschaut, da ist mir 
nicht aufgefallen dass mit der Revision 566 der Fehler aus der Revision 
565 behoben wurde ;-)

mfg

von Udo N. (weinbauer73)


Lesenswert?

Da ja die Umstellung auf Templates dank Urban fast fertig ist, wäre es 
vielleicht sinnvoll, die Templates mehrsprachig auszuführen? Mir schwebt 
eine Ergänzung der class.HTML.php in der Art vor, das man beim Setzen 
einer Template-Variable prüft, ob es ein String ist und ob dafür eine 
Übersetzung existiert. Statische Texte werden natürlich auch 
berücksichtigt. Basis ist dabei die Variable $config['language'].

von K. J. (Gast)


Lesenswert?

@Urban weist du ungefähr nen datum wo die 12er DB mal in der normalen 
PartDB Aktuell war ? Die DBs die ich rumliegen habe gehen alle nicht, 
sonst müste ich dummerweise stundenlang DB Backups ausprobieren um ne 
passende zu finden ;-(

von Gelöscht (kami89)


Angehängte Dateien:

Lesenswert?

Udo Neist schrieb:
> Da ja die Umstellung auf Templates dank Urban fast fertig ist, wäre es
> vielleicht sinnvoll, die Templates mehrsprachig auszuführen?

Ich finde dafür ist es noch zu früh. Ein Uploadmanager wäre momentan 
viel wichtiger, denn ohne den funktioniert das neue Konzept mit den 
Dateianhängen nicht wirklich gescheit.

K. J. schrieb:
> @Urban weist du ungefähr nen datum wo die 12er DB mal in der normalen
> PartDB Aktuell war ? Die DBs die ich rumliegen habe gehen alle nicht,
> sonst müste ich dummerweise stundenlang DB Backups ausprobieren um ne
> passende zu finden ;-(

Naja, die aktuellste Version aus dem SVN Trunk hat die Version 12, mit 
so einer müsste es gehen. Ich habe mal eine solche Datenbank hier 
angehängt, bei mir funktioniert diese einwandfrei.

mfg

von Gelöscht (kami89)


Lesenswert?

Ah, jetzt scheint die Demo zu funktionieren, super!

Ich habe mal dem Bauteil "GS 14P" in der Kategorie "IC-Sockel" ein paar 
Einkaufsinformationen und Preise hinzugefügt, damit man die 
Möglichkeiten des neuen Preissystems sehen kann: 
http://partdb.grautier.com/uneistkami89/show_part_info.php?pid=247

Was meint iht dazu? Verbesserungsvorschläge? Klar, das Bearbeiten dieser 
Einkaufsinformationen könnte man grafisch sicher noch etwas 
ansprechender gestalten. Falls jemand mal nicht weiss was er mit seiner 
Zeit machen will... :-D

Bei der Berechnung des Durchschnittspreises ist glaub noch ein Fehler in 
der Datenbankabfrage, also nicht wundern wenns mal nicht stimmt... ;-)

mfg

von Gelöscht (kami89)


Lesenswert?

@K.J.
Hmm irgend etwas stimmt aber mit der Datenbank der Demo immernoch 
nicht... Kann es sein dass es in der Tabelle "parts" noch eine Spalte 
"id_supplier" gibt? Eigentlich hätte die beim Update von v12 auf v13 
gelöscht werden müssen, aber ich habe in der online Demo einen Fehler 
entdeckt der darauf hinweist, dass es diese Spalte noch gibt in der 
Tabelle "parts".
Könnte es vielleicht sein dass der Benutzer einfach zu wenige Rechte 
hat, z.B. um eine Tabellenspalte zu löschen?

@Udo Neist
Ich hänge gerade an einem "Problem" mit den Templates. Und zwar bin ich 
die Erzeugung der Tabellen am umgestalten, um sie universell einsetzen 
zu können (in der vlib_table.tmpl sollen die Tabellen für 
show_category_parts.php, show_device_parts.php, show_order_parts.php 
usw. generiert werden, aber halt mit unterschiedlichen Tabellenspalten.)

Das ist ansich eigentlich noch kein Problem. Aber sobald auf der 
gleichen Seite mehrere Tabellen gbraucht werden, funktioniert das nicht 
mehr so, weil der Name des Loops ja in der vlib_table.tmpl "hardgecoded" 
ist, man aber mehrere verschiedene solche Loops brauchen würde. z.B. für 
die Suchfunktion wäre es notwendig, damit man für jede Kategorie eine 
separate Tabelle zeichen kann. Oder in der show_device_parts.php werden 
auch zwei Tabellen gezeichnet wenn man nach einem Bauteil gesucht hat 
("Teile per Name zuordnen") und die Suchergebnisse aufgelistet werden.

Als erstes kam ich auf die Idee, einfach die erste und die letzte Zeile 
von vlib_table.tmpl in die aufrufende *.tmpl Datei auszulagern, um den 
Loops verschiedene Namen geben zu können. In diesen Dateien hätte dann 
der Aufruf etwa so ausgesehen:
1
<div class="outer">
2
    <h2>Teile in der Kategorie "{TMPL_VAR NAME="category_name"}"</h2>
3
    <div class="inner">
4
        <table>
5
            {TMPL_LOOP NAME="table"}
6
                {TMPL_INCLUDE FILE="../vlib_table.tmpl"}
7
            {/TMPL_LOOP}
8
        </table>
9
    </div>
10
</div>

Leider scheint das so nicht zu funktionieren (Include in einem Loop 
drin)...

Verstehst du was ich meine?
Hättest du eine Idee wie man das bewerkstelligen könnte?

mfg

von Udo N. (weinbauer73)


Lesenswert?

Möglichkeit 1: Lad das Template als String, ersetze den Namen des Loops 
und füttere den String an vlibTemplate. Man muss nicht unbedingt eine 
Datei übergeben.

Möglichkeit 2: Mach doch einfach einen 
TMPL_IF/TMPL_ELSEIF/TMPL_ELSE-Konstruktion daraus.

Grüße
Udo

von K. J. (Gast)


Lesenswert?

Urban B. schrieb:
> @K.J.
> Hmm irgend etwas stimmt aber mit der Datenbank der Demo immernoch
> nicht... Kann es sein dass es in der Tabelle "parts" noch eine Spalte
> "id_supplier" gibt? Eigentlich hätte die beim Update von v12 auf v13
> gelöscht werden müssen, aber ich habe in der online Demo einen Fehler
> entdeckt der darauf hinweist, dass es diese Spalte noch gibt in der
> Tabelle "parts".
> Könnte es vielleicht sein dass der Benutzer einfach zu wenige Rechte
> hat, z.B. um eine Tabellenspalte zu löschen?
>

Jup stimmt ich werde das alles mal Manuell machen müssen wollte meine 
Daten in der DB lassen, aber das geht nicht weil das wohl irgendeine 
Buggy DB aus irgendeiner ... Version ist ;-)

von Christian R. (holle)


Lesenswert?

Sorry, ich war hier einige Wochen nicht mehr aktiv. Bevor ich nun alle 
Threads der letzten Wochen lese, kann mir jemand sagen wie weit die 
Benutzerverwaltung ist (für myparts.info) ?
Apropos, anscheinend wird myparts.info nicht wirklich benutzt. Sollte 
das an verloren gegangenen Zugangsdaten usw. liegen, dann lasst es mich 
wissen.

Für alle die mit "myparts.info" nichts anfangen können, hier ist eine 
kurze Erklärung:
Ich habe die Domain myparts.info registriert, um damit jeden User die 
Möglichkeit zu geben Part-DB zu nutzen (selbstverständlich kostenlos).
Derzeit ist man einem Webspace abhängig.
Der eigentliche Vorteil von myparts.info ist jedoch der, dass man nicht 
alle Daten immer wieder von neuem eingeben muss, sondern dass man von 
den Daten der anderen Benutzer profitiert. Wenn z.B. Conrad den Preis 
für ein Bauteil anpasst und ein User diesen aktualisiert sehen alle User 
den aktuellen Preis. Das gleiche gilt für die Gehäuseformen, 
Datenblätter, usw.

...und falls einer der Entwickler es nicht mitbekommen haben sollte. Ich 
stelle jedem Entwickler Webspace und Datenbank zur Verfügung, welche zu 
Test- und Präsentations-Zwecken genutzt werden können (oder auch für 
anderes, wie FTP, usw.). Einfach eine PN an mich dann richte ich euch 
einen Account auf myparts.info ein.

von Udo N. (weinbauer73)


Lesenswert?

Die Benutzerverwaltung ist, wenn überhaupt, nur ziemlich rudimentär 
vorhanden. Erstmal macht Urban die Umsetzung auf OOP fertig, bevor wir 
dann die Benutzerverwaltung integrieren. Ziel ist es, eine 
funktionsgleiche oder leicht erweiterte Version 0.3.0 als neue stabile 
Version zu veröffentlichen.

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Möglichkeit 1: Lad das Template als String, ersetze den Namen des Loops
> und füttere den String an vlibTemplate. Man muss nicht unbedingt eine
> Datei übergeben.

Das kann ich aber ja nicht innerhalb einer *.tmpl Datei machen, kann 
dann also auch nicht mehrere Tabellen innerhalb einer Template-Datei 
haben.

> Möglichkeit 2: Mach doch einfach einen
> TMPL_IF/TMPL_ELSEIF/TMPL_ELSE-Konstruktion daraus.

Hmm ich verstehe nicht, wie ich dann mehrere Tabellen in einer 
Template-Datei verwenden kann?

Ich habe es jetzt aber mal so gelöst, dass die Template-Dateien 
aufgeteilt werden. Pro Template-Datei ist dann zwar immernoch nur 
maximal eine Tabelle möglich, aber wenn mehrere Tabellen auf der 
gleichen Seite benötigt werden kann dann einfach die jeweilige 
Template-Datei mehrmals ausgegeben werden, halt jedesmal mit einem 
anderen Loop für die Tabelle. Ich vermute mal damit können wir leben...

K. J. schrieb:
> Jup stimmt ich werde das alles mal Manuell machen müssen wollte meine
> Daten in der DB lassen, aber das geht nicht weil das wohl irgendeine
> Buggy DB aus irgendeiner ... Version ist ;-)

Habe vorher grad noch gemerkt dass meine Datenbank, die ich hier 
gepostet habe, auch noch einen Bug enthält. Ein paar Teile haben nämlich 
einen Footprint zugeordnet, der gar nicht existiert. Kommt wohl daher 
dass es mal diese "gefährlichen" Checkboxen bei den Footprints gab, mit 
denen man ruck zuck ein paar Footprints löschen konnte xD Jetzt mit den 
Klassen fällt das auf, da die Klassen eine Exception werfen wenn so ein 
Fall eintritt...(was auch so gewollt ist)

@Christian R.
Wie Udo schon geschrieben hat wird erstmal der gesamte Code auf OOP 
umprogrammiert, und das dauert eben seine Zeit. Klingt relativ 
unspektakulär, aber mal in Zahlen ausgedrückt sind das ca. 8'000 (!) 
Codezeilen, die bisher neu geschrieben wurden.

Die Benutzerverwaltung existiert momentan nur so als "Dummy", also als 
eine Klasse die noch nichts macht. Einfach so als Vorbereitung, damit 
der spätere Ausbau dann einfacher wird. Die Version 0.3.0 wird wohl noch 
gänzlich ohne Benutzerverwaltung daherkommen.

Was aber bereits kommen wird, ist ein komplett neues Preissystem :-) 
Siehe Online-Demo -> Kategorie "IC-Sockel" -> Bauteil "GS 14P"

mfg

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
>> Möglichkeit 2: Mach doch einfach einen
>> TMPL_IF/TMPL_ELSEIF/TMPL_ELSE-Konstruktion daraus.
>
> Hmm ich verstehe nicht, wie ich dann mehrere Tabellen in einer
> Template-Datei verwenden kann?

Mal kurz in Pseudocode geschrieben:

if loop3 then
   table-konstrukt 3
else if loop 2 then
   table-konstrukt 2
else if loop 1 then
   table-konstrukt 1
end if

Also man geht von der größten zur kleinsten Tabelle rückwärts.

> Ich habe es jetzt aber mal so gelöst, dass die Template-Dateien
> aufgeteilt werden. Pro Template-Datei ist dann zwar immernoch nur
> maximal eine Tabelle möglich, aber wenn mehrere Tabellen auf der
> gleichen Seite benötigt werden kann dann einfach die jeweilige
> Template-Datei mehrmals ausgegeben werden, halt jedesmal mit einem
> anderen Loop für die Tabelle. Ich vermute mal damit können wir leben...

Ist die bessere Alternative :-) Auf die Mehrfachnutzung könnte man 
eventuell noch mit einem (HTML-)Kommentar im Template hinweisen, damit 
man nicht gleich in andere Fehler rennt.

Grüße
Udo

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Mal kurz in Pseudocode geschrieben:
>
> if loop3 then
>    table-konstrukt 3
> else if loop 2 then
>    table-konstrukt 2
> else if loop 1 then
>    table-konstrukt 1
> end if

Wenn die drei table-konstrukte alle dieselben sind, funktioniert das 
aber nicht, da der Name des Loops ja dort drin hardgecodet ist. Und 
falls es drei verschiedene Konstrukte sind, dann wars das mit den 
Flexiblen Tabellen :-)

Aber das hat sich jetzt ja eigentlich erledigt, ich glaub das passt so 
wie ich es jetzt gemacht habe (z.B. für show_device_parts.php oder 
show_search_parts.php).

Übrigens, er Upload-Manager bereitet mir immernoch Kopfschmerzen :-)
Falls du Zeit und Lust hast, wäre ich echt froh wenn du dich um diesen 
kümmern könntest. Klar - es hat noch Zeit, der Rest ist auch noch nicht 
so schnell fertig. Aber so langsam sollte man schon mal mit dem Teil 
anfangen...

Greez

von Udo N. (weinbauer73)


Lesenswert?

Gut, dann werde ich mal nach dem Uploader schauen :-)

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Gut, dann werde ich mal nach dem Uploader schauen :-)

OK super! :-)

Ein paar Infos dazu gibt es ja in unseren Issues auf Google Code (wobei 
nicht jeder dort aufgeführten Punkte zwingend berücksichtigt werden 
muss, nicht alles ist sinnvoll^^)

von b.r (Gast)


Lesenswert?

Urban B. schrieb:
> wobei
> nicht jeder dort aufgeführten Punkte zwingend berücksichtigt werden
> muss
Jepp. Lieber erstmal etwas rudimentärer. Je eher das Templatesystem in 
den Hauptzweig (trunk) kommt, um so eher kann ich mich wieder ad der 
Entwicklung beteiligen ;-)

Grüße
b.r

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
> Udo Neist schrieb:
>> Gut, dann werde ich mal nach dem Uploader schauen :-)
>
> OK super! :-)
>
> Ein paar Infos dazu gibt es ja in unseren Issues auf Google Code (wobei
> nicht jeder dort aufgeführten Punkte zwingend berücksichtigt werden
> muss, nicht alles ist sinnvoll^^)

Es ist zwar nicht das beste Demoscript, aber man kann damit mehrere 
Files quasi parallel hochladen (asynchron per XMLHttpRequest). Firefox 
soll wohl dabei um 100 Dateien schaffen.

Das Script selbst besteht neben dem obligatorischen Javascript noch aus 
einer PHP-Klasse, die die Verabeitung der geschickten Dateien übernimmt. 
Von der Idee her, soll beim Upload entweder ein generelles 
Zielverzeichnis genutzt werden oder die Dateien werden in Abhängigkeit 
des Mime-Typs in verschiedene einsortiert.

http://weinbauer73.myparts.info/ajax/ajax.php

http://weinbauer73.myparts.info/file-uploader.tar.gz

PS: Leider sind auf myparts.info die Funktionen is_dir() und 
is_writeable() nicht nutzbar, obwohl es aus logischen und 
sicherheitstechnischen Gründen sinnvoll wäre.

von Udo N. (weinbauer73)


Lesenswert?

Ich habe den File-Uploader umgeschrieben. Die Verzeichnisrechte werden 
jetzt direkt per fileperms() ermittelt. Die (optionalen) 
Zielverzeichnisse werden direkt über ein Array mit Mimetyp => 
Verzeichnis bestimmt und liegen unterhalb des in ajax->UploadDir 
gespeicherten Verzeichnisses.

Der Aufruf lautet jetzt http://weinbauer73.myparts.info/ajax/index.php, 
da ajax.php nur noch die Verabeitung übernimmt. Das Archiv habe ich 
upgedatet.

von Gelöscht (kami89)


Lesenswert?

Hmm warum heisst die Klasse eigentlich "ajax"? Das hat irgendwie ja so 
gut wie nichts mit dem Uploader zu tun ;-)

Und dann bin ich mir nicht sicher ob du mich richtig verstanden hast, 
deshalb eine kurze Zusammenfassung:
Der Uploadmanager soll nicht nur Dateien hochladen können, sondern man 
soll auch die Dateien, die sich bereits auf dem Server befinden, 
durchsuchen ("browsen"), umbenennen, löschen und verschieben können. 
Halt alles was man auch mit lokalen Dateien machen kann. Und man soll 
z.B. für Dateianhänge von Teilen auch Dateien auswählen können, die sich 
bereits auf dem Server befinden (also ohne eine Datei hochladen zu 
müssen).

Vielleicht wäre "Dateimanager" (bzw. "Filemanager") ein geeigneter Name 
für das "Ding". "Uploadmanager" bringt irgendwie nicht so richtig die 
Möglichkeiten dieses Dinges zur Geltung... :-)

Beispiel:
Ich lege das Bauteil ATMega8-16PU an. Dann klicke ich auf "Dateianhang 
hinzufügen" (o.ä.), und es öffnet sich der Manager. Da das Datenblatt, 
das ich anhängen will, noch nicht auf dem Server existiert, wähle ich im 
Manager das Zielverzeichnis, die hochzuladene Datei (lokaler Dateiname 
od. Internet-URL) und lasse die Datei hochladen. Dann markiere ich sie 
und klicke auf "OK". Nun wird das Datenblatt zum ATMega8-16PU 
hinzugefügt.

Dann lege ich das Bauteil ATMega8-16AU an, das natürlich genau das selbe 
Datenblatt besitzt wie die DIP-Version. Ich klicke also wieder auf 
"Dateianhang hinzufügen". Im nun eingeblendeten Manager suche ich nun 
einfach nach dem bereits existierenden Datenblatt für den Mega8, wähle 
es aus und klicke auf "OK".

Dateien, die hochgeladen werden, dürfen nur im Unterverzeichnis "media/" 
gespeichert werden. Um Dateien auszuwählen, muss aber auch das 
Verzeichnis "img/" zur Verfügung stehen, um z.B. einem Footprint ein 
Bild aus "/img/footprints/" zuweisen zu können.

Ein Vorschlag, wie der Dialog ungefähr aussehen könnte, habe ich hier 
mal gepostet: Beitrag "Re: PART-DB RW 1.2"

mfg

von Udo N. (weinbauer73)


Lesenswert?

Ajax ist ne Abkürzung für "Asynchronous JavaScript and XML", daher der 
Name.

Wikipedia: Es bezeichnet ein Konzept der asynchronen Datenübertragung 
zwischen einem Browser und dem Server. Dieses ermöglicht es, 
HTTP-Anfragen durchzuführen, während eine HTML-Seite angezeigt wird, und 
die Seite zu verändern, ohne sie komplett neu zu laden.

Zum Script: Im Moment ist es ein reiner Uploader. Um Dateien 
manipulieren zu können, müsste ich nur ein paar grundlegende Funktionen 
wie Copy, Move, Delete und Rename sowie ein Dateiauswahlfeld hinzufügen. 
Bis auf den Dateiexplorer (also das Dateiauswahlfeld) ist das andere 
recht schnell erledigt. Bei den Klassen werde ich allerdings Ajax (hier 
XMLHttpRequest) als eigenständige Klasse belassen und den Rest in eine 
andere einbauen.

Warum Ajax? Das ganze muss mehr oder weniger asynchron ablaufen, sonst 
wäre das ganze ziemlich aufwendig oder langsam.

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Ajax ist ne Abkürzung für "Asynchronous JavaScript and XML", daher der
> Name.

Jo, das ist schon klar, aber wenn ich mir die Klasse so anschaue, fällt 
mir auf, dass in jedem Methodennamen das Wort "Upload" vorkommt. Die 
ganze Klasse scheint also für den Upload von Dateien zuständig zu sein. 
Ob das nun mit Ajax oder mit sonstwas geschieht, ist Nebensache. Ein 
Klassenname soll schliesslich die Funktion der Klasse repräsentieren, 
und nicht die Art und Weise, wie sie funktioniert.

Ausserdem ist das eigentliche Ajax ja viel mehr in der *.js Datei.

von Udo N. (weinbauer73)


Lesenswert?

Das ganze ist in zwei Tagen im Büro neben der Arbeit entstanden und 
hatte erstmal den reinen Upload zum Ziel. Zudem hab ich in den Issues 
nur was von Upload-Manager gelesen. Alles andere kommt noch :)

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Das ganze ist in zwei Tagen im Büro neben der Arbeit entstanden und
> hatte erstmal den reinen Upload zum Ziel. Zudem hab ich in den Issues
> nur was von Upload-Manager gelesen. Alles andere kommt noch :)

OK alles klar :-)
Ich wusste nicht so richtig wie ich deine letzten Posts einordnen soll 
(Man hätte es z.B. so interpretieren können, als wäre der Uploadmanager 
deiner Meinung nach schon fast fertig :-)
Daher wollte ich nochmal nachfragen, nicht dass wir uns irgendwie total 
falsch verstanden haben.
Aber jetzt ist das ja geklärt, alles in Ordnung xD

mfg

von Maxim (Gast)


Lesenswert?

Hallo,
ich bin nach der Suche nach einer Installations Anleitung für PART-DB
2.2.
Ich selber habe danach gesucht leider aber für mich, als Anfänger
ernüchternde Anleitungen gefunden und nicht weitergekommen.
Gib es ausführliche Anleitung ? wenn nicht besteht vielleicht eine
Möglichkeit eine ausführliche Anleitung für PART-DB 2.2 zu erstellen
(Schritt bei Schritt) bin wahrscheinlich nicht der erste der danach
sucht!

Grüße
Mamim

von Gelöscht (kami89)


Lesenswert?

Hallo,

Also eine (teilweise veraltete) Anleitung gibt es hier: 
http://www.mikrocontroller.net/articles/Part-DB_RW_-_Lagerverwaltung

Eine etwas aktuellere Anleitung gibt es im Archiv der v0.2.2 in der 
Datei /readme/INSTALL.txt.

Wo liegt denn genau dein Problem, wo kommst du nicht weiter?

Welches Betriebssystem setzt du ein?

Falls du Part-DB auf einem normalen Windows Rechner laufen lassen 
willst, empfiehlt es sich eine virtuelle Maschine zu installieren (z.B. 
VirtualBox mit einem virtuellen Ubuntu). Dort setzt du einen Webserver 
auf, kopierst das Archiv von Part-DB nach /var/www/, legst z.B. mit 
PHPMyAdmin eine Datenbank und ein Benutzer an und passt die Datei 
config.php von Part-DB an.

Wenn Probleme auftauchen, dann teile uns dein exaktes Problem mit, dann 
können wir auch konkrete Antworten geben.

mfg

von Udo N. (weinbauer73)


Lesenswert?

Ich habe vor längerem ein einfaches Installationsscript zur Einrichtung 
der Datenbank geschrieben, das per Shell ausgeführt werden muss.

http://code.google.com/p/part-db/source/browse/branches/uneist/install.sh
http://code.google.com/p/part-db/source/browse/branches/uneist/readme/createtables-FOR-V0.2.1-rev12.sql

Das Script liegt dabei im Root-Verzeichnis von Part-DB, der SQL-Dump im 
Verzeichnis readme. Das Script fragt ein paar Variablen ab, bevor es 
die Datenbank erstellt. Es erzeugt eine config_db.php, deren Inhalt in 
die config.php übernommen werden muss. Sollte das Script als Root 
ausgeführt werden, so werden auch die Verzeichnisse backup und 
update (ist in der stable-Version nicht vorhanden) auf den Apache-User 
gesetzt.

Getestet unter openSUSE 11.2 und höher.

Wenn es gewünscht wird, kann ich das Script auch für die stable-Version 
umschreiben. Dann könnte man auch die Install.txt endlich aktualisieren.

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
> Dort setzt du einen Webserver auf, kopierst das Archiv von Part-DB nach
> /var/www/

Nicht jedes Linux nutzt /var/www. Nach FHS wäre /srv/www (nutzt z.B. 
openSUSE) der bessere Ort dafür. Das richtige Zielverzeichnis kann man 
in der Konfiguration des jeweiligen Webservers nachschauen. Einfach nach 
"DocumentRoot" schauen :-)

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Urban B. schrieb:
>> Dort setzt du einen Webserver auf, kopierst das Archiv von Part-DB nach
>> /var/www/
>
> Nicht jedes Linux nutzt /var/www.

Jo ich weiss, war auch auf den Vorschlag "Ubuntu" bezogen. Ist aber 
nicht richtig klar wenn man es liest, da hast du recht :-)

mfg

von Christoph H. (christoph_b)


Lesenswert?

Hallo

Ich habe die Part-db mal Testweise auf einem Xampp installiert und die 
Footprints hineinkopiert. Leider kann ich bei neu erstellen Bauteilen 
erst die Footprints auswählen wenn ich bei den Footprints die Checkbox 
aktiviere.

Gibs da ein Script oder ist das ein Bug? Ich habe nich Lust mehrer 
hundert Checkboxen anzuklicken ;-)

Gruß Christoph

von Christoph H. (christoph_b)


Lesenswert?

keiner eine Idee?

von Udo N. (weinbauer73)


Lesenswert?

Hast du auch das Update der Datenbank durchgeführt? Damit sollten die 
Infos zu den Footprints eingespielt werden. Die SQL-Datei zur 
Installation enthält nur die Struktur und die Versionsnummer.

von Gelöscht (kami89)


Lesenswert?

Christoph B. schrieb:
> Hallo
>
> Ich habe die Part-db mal Testweise auf einem Xampp installiert und die
> Footprints hineinkopiert. Leider kann ich bei neu erstellen Bauteilen
> erst die Footprints auswählen wenn ich bei den Footprints die Checkbox
> aktiviere.
>
> Gibs da ein Script oder ist das ein Bug? Ich habe nich Lust mehrer
> hundert Checkboxen anzuklicken ;-)
>
> Gruß Christoph

Das ist kein Bug, sondern ein Feature :-)

Es stehen nur diejenigen Footprints zur Auswahl, die man auch selber 
hinzugefügt hat (unter Bearbeiten -> Footprints, oder mit den Checkboxen 
die du ja schon gefunden hast).

Der Grund dafür ist, dass die meisten Leute ein eher kleines Sortiment, 
mit vielleicht so 50 verschiedenen Footprints haben. Würden alle 
vorhandenen Footprints automatisch zur Verfügung stehen, wären die ca. 
1700 Footprints extrem unübersichtlich.

Ausserdem ist vielen nicht klar, dass die Footprint-Bilder von den 
Footprints ansich unabhängig sind. Man kann auch Footprints anlegen, die 
kein Bild haben! Die Bilder sind also quasi nur optional.

Von mir aus könnten wir mal ein "Standardpaket" von Footprints bereits 
in die Installation integrieren, dass zumindest die gebräuchligsten 
Footprints bereits im System drin sind...

mfg

von Christoph H. (christoph_b)


Lesenswert?

danke für die Antwort

Gibt es einen einfacher Weg als die 1700 Footprints von Hand einzeln 
hinzuzufügen?

Wenn ich z.B eine Diode hinzufüge muss ich immer erst in 
Tools/Footprints den Haken setzen bevor er der Footprint unter 
Bearbeiten/Footprints zur Verfügung steht.

von Gelöscht (kami89)


Lesenswert?

Christoph B. schrieb:
> Gibt es einen einfacher Weg als die 1700 Footprints von Hand einzeln
> hinzuzufügen?

Bisher nicht. Aber ich frage mich, wozu man alle 1700 Footprints 
wirklich im System haben will, das wird doch nur extrem unübersichtlich? 
Und ein sehr grosser Teil von den Bildern sind eh nur Steckverbinder, 
die kaum einer jemals gekauft hat...

Christoph B. schrieb:
> Wenn ich z.B eine Diode hinzufüge muss ich immer erst in
> Tools/Footprints den Haken setzen bevor er der Footprint unter
> Bearbeiten/Footprints zur Verfügung steht.

Dazu gibt es doch extra das Eingabefeld "Direkteingabe/Neu". Da kann man 
direkt beim Anlegen eines neuen Bauteiles auch gleich noch einen neuen 
Footprint anlegen, ohne den Umweg über Bearbeiten -> Footprints.

mfg

von Christoph H. (christoph_b)


Lesenswert?

Habe nun alles getestet und mir sind 2 Sachen aufgefallen die man 
vieleicht verbessern könnte.

Beim Hinzufügen von Bauteilen aktiviere ich die Checkbox "Weitere 
Bauteile erfassen:"

In der neuen Eingabenmaske bleibt der Lagerstand stehen doch der Name 
wird automatisch um 1 Hinaufgezählt. So wird beim nächsten Bauteil aus 
75 Ohm --> 75 Ohn.

Des weiteren wäres es vieleicht noch fein dann auch noch der Footprint 
und der Lagerort automatisch vom vorigen Bauteil übernommer wird.

Gruß Christoph

von Gelöscht (kami89)


Lesenswert?

Hallo Christoph,

All deine genannten Sachen sind in der aktuellen SVN-Version bereits 
umgesetzt. Um diese Version zu installieren benötigst du einen SVN 
(Subversion) Client. Die Download-URL (bzw. den ganzen Befehl) findest 
du hier: https://code.google.com/p/part-db/source/checkout

Falls du (wie [verständlicherweise] einige Andere auch) nicht verstehst 
wie man es installiert kriegt, such mal im Internet nach Anleitungen, da 
solltest du fündig werden.
Falls du konkrete Fragen dazu hast, frag einfach hier nach. Aber eine 
komplette Anleitung für SVN werde ich nicht schreiben ;-)

mfg

von Gelöscht (kami89)


Lesenswert?

@Christoph
Und, hat's geklappt mit der Installation der aktuellen SVN-Revision?

@all
Ich überlege gerade ob es das Attribut "obsolete" für die Bauteile 
überhaupt noch braucht. Zuerst dachte ich, wir sollten es einfach vom 
Bauteil "ablösen" und in die Einkaufsinformationen (Klasse 
"Orderdetails") verschieben, da dieses Attribut ja immer auf einen 
bestimmten Artikel eines Lieferantes bezogen ist, und nicht auf das 
Bauteil ansich.

Dann kam ich aber auf die Idee, dass man bei einem nicht mehr 
erhältlichen Bauteil einfach die entsprechenden Einkaufsinformationen 
löschen könnte. Ein Bauteil würde dann als "obsolete" gelten, sobald es 
keine einzige Einkaufinformation mehr gibt zu diesem Teil.

Einziger Nachteil wäre dann halt, dass die Bestellnummern und die Preise 
auch gelöscht werden, und somit später nicht mehr vorhanden sind falls 
man sie mal noch brauchen könnte.

Ich würde jetzt sagen, dieser Nachteil ist ziemlich irrelevant, und 
diese Lösung daher vorzuziehen. Ich würde aber trotzdem gerne mal eure 
Meinung dazu hören.

Also, was meint ihr, wie soll das Attribut "obsolete" gehandhabt werden?

mfg

P.S. @K.J.
Ich werde heute noch eine neue Version in unseren Branch hochladen. 
Wegen Änderungen am Datenbankupdate v12 -> v13 müsste wieder eine 
Datenbank der Version 12 geladen werden, sonst gibts hübsche 
Fehlermeldungen :-)

Ach ja, warum ist in der Online-Demo eigentlich der Menüeintrag "System" 
wieder verschwunden? :-)

von K. J. (Gast)


Lesenswert?

Urban B. schrieb:

> P.S. @K.J.
> Ich werde heute noch eine neue Version in unseren Branch hochladen.
> Wegen Änderungen am Datenbankupdate v12 -> v13 müsste wieder eine
> Datenbank der Version 12 geladen werden, sonst gibts hübsche
> Fehlermeldungen :-)
>
> Ach ja, warum ist in der Online-Demo eigentlich der Menüeintrag "System"
> wieder verschwunden? :-)

Ah ka. hatte gestern die DB gefixt aber an der config war ich nicht bei, 
mal schauen, jo ich werde da mal ne saubere DB einspielen und einfach 
nur einige Testeinträge machen.

von Christoph H. (christoph_b)


Lesenswert?

Hallo

Ich habe nun die Version 0.2.2 am Laufen, da mir die Beta zu unsicher 
ist. Will nicht nochmals mehrere 100 Bautteile eintragen ;-)

von Gelöscht (kami89)


Lesenswert?

Christoph B. schrieb:
> Hallo
>
> Ich habe nun die Version 0.2.2 am Laufen, da mir die Beta zu unsicher
> ist. Will nicht nochmals mehrere 100 Bautteile eintragen ;-)

Okay, aber die Bauteile müsstest du natürlich nicht nochmals eintragen, 
deine Datenbank mit allen Bauteilen usw. wird übernommen (wobei ein 
Backup vor der Installation sicher trotzdem angebracht ist, da die 
Datenbankstruktur aktualisiert wird und ein "Downgrade" nicht mehr 
möglich ist).
Und unsicher würde ich die momentane SVN-Revision nicht nennen, es sind 
eigentlich keine gröberen Bugs bekannt.

Aber wenn du mit der stabilen 0.2.2 zufrieden bist, spricht natürlich 
nichts dagegen, bei dieser zu bleiben.

mfg

von Gelöscht (kami89)


Lesenswert?

K. J. schrieb:
> Ah ka. hatte gestern die DB gefixt aber an der config war ich nicht bei,
> mal schauen, jo ich werde da mal ne saubere DB einspielen und einfach
> nur einige Testeinträge machen.

Gibts denn jetzt mit deiner 12er Datenbank immernoch Probleme? In der 
Demo scheint jetzt eigentlich alles zu funktionieren habe ich das 
Gefühl, ich konnte jedenfalls keinen Datenbankfehler mehr finden.

Übrigens habe ich im 0.3.0-Branch eine Datenbank der Version 12 
abgelegt, diese könntest du natürlich auch für die Online-Demo 
verwenden, die sollte problemlos laufen und hat auch ein paar hübsche 
Baugruppen wo man ein bisschen was sehen kann :-)
Sie befindet sich hier: 
https://part-db.googlecode.com/svn/branches/uneist_kami89/development/testfiles/database/v12_kami89.sql

mfg

von Gelöscht (kami89)


Lesenswert?

Urban B. schrieb:
> In der
> Demo scheint jetzt eigentlich alles zu funktionieren habe ich das
> Gefühl, ich konnte jedenfalls keinen Datenbankfehler mehr finden.

OK hab nichts gesagt, beim Erfassen von neuen Bauteilen gibts einen 
Fehler weil vermutlich eine Datenbankspalte fehlt...

Übrigens habe ich jetzt (r581) noch etwas geändert, damit bei 
Datenbankfehlern eine aussagekräftigere Meldung im Debug-Log erscheint 
(die bisherigen Meldungen waren nicht sehr aussagekräftig). Falls es 
beim Datenbankupdate zu Problemen kommen sollte, würde man nun 
vielleicht im Debug-Log noch weitere Hinweise auf die Fehlerursache 
finden.

Und den Menüeintrag "System" habe ich in der Online Demo wieder 
aktiviert, vermutlich hat einfach jemand an der Konfiguration 
rumgespielt und diesen Eintrag deaktiviert. Ich werde wohl noch eine 
Sicherung einbauen dass man dies bei der Online Demo nicht deaktivieren 
kann.

von K. J. (Gast)


Lesenswert?

Ok ist gefixt

von Gelöscht (kami89)


Lesenswert?

K. J. schrieb:
> Ok ist gefixt

Wunderbar, funktioniert :-)

Urban B. schrieb:
> Also, was meint ihr, wie soll das Attribut "obsolete" gehandhabt werden?

Will sich dazu keiner äussern? :-)

Ausserdem habe ich gleich noch eine andere Frage. Ich bin nämlich grad 
an der Importfunktion dran, und da frage ich mich, ob der Import von 
bestehenden Bauteilen in bestehende Baugruppen überhaupt Sinn macht.

Man muss dazu ja bereits alle IDs der Bauteile kennen, was aber nicht 
der Fall ist, wenn man bisher seine Baugruppen in Excel o.ä. verwaltet 
hat. Für diesen Fall ist also diese Importfunktion sowieso nicht zu 
gebrauchen.

Ich wüsste nicht, wofür dann diese Importfunktion zu gebrauchen wäre. 
Hat jemand von euch einen guten Grund, warum wir diese Funktion nicht 
einfach rauswerfen sollen?

Der Import von Bauteilen würde natürlich weiterhin bestehen bleiben, 
dort ist der Sinn relativ einfach zu erkennen xD

mfg

von Gelöscht (kami89)


Lesenswert?

Na, will sich denn keiner äussern? :-D

Die Baugruppen-Importfunktion fliegt einfach raus wenn niemand weiss 
wozu man die gebrauchen kann ;-)

Bezüglich "obsolete" Attribut kann ich mich nicht entscheiden wie ich es 
machen soll, mir persönlich ist es relativ egal wie es gemacht wird. 
Daher wäre ich froh mal eure Meinungen zu hören...

mfg
Urban

von K. J. (Gast)


Lesenswert?

Urban B. schrieb:
> K. J. schrieb:
>> Ok ist gefixt
>
> Wunderbar, funktioniert :-)
>
> Urban B. schrieb:
>> Also, was meint ihr, wie soll das Attribut "obsolete" gehandhabt werden?
>
> Will sich dazu keiner äussern? :-)
>

Könnte ich jetzt so nicht da ich das nicht nutze.

> Ausserdem habe ich gleich noch eine andere Frage. Ich bin nämlich grad
> an der Importfunktion dran, und da frage ich mich, ob der Import von
> bestehenden Bauteilen in bestehende Baugruppen überhaupt Sinn macht.
>
>
> Der Import von Bauteilen würde natürlich weiterhin bestehen bleiben,
> dort ist der Sinn relativ einfach zu erkennen xD
>
> mfg

Jup stimme ich dir zu.

von Thomas K. (tommes)


Lesenswert?

> Ausserdem habe ich gleich noch eine andere Frage. Ich bin nämlich grad
> an der Importfunktion dran, und da frage ich mich, ob der Import von
> bestehenden Bauteilen in bestehende Baugruppen überhaupt Sinn macht.
>
>
> Der Import von Bauteilen würde natürlich weiterhin bestehen bleiben,
> dort ist der Sinn relativ einfach zu erkennen xD

Also ich setze bzw. plane die part-db bei uns in der Firma bzw. für mich 
als Arbeitsmittel einzusetzen. Ich find die die Baugruppen Import 
Funktion schon praktisch. Ich setze als Leiterplatten Tool Eagle und als 
BOM Skript das bom-ex ULP ein. Bei dem Skript kann man sich eine 
Datenbank mit der Zuordnung von Bauteilen und verschiedenen 
Eigenschaften (wie z.B. die part-dB ID) anlegen. Wenn ich dann meine BOM 
exportiere kann ich mir eine CSV Datei erzeugen lassen, welche ich in 
die part-db importieren kann. Darüber kann man dann Baugruppen erstellen 
ohne jedes Teil extra eingeben zu müssen (bei Leiterplatten >100 Teile 
macht das doch niemand von Hand, oder?).

Super praktisch wäre natürlich eine Kombination aus Baugruppen und 
Bauteil Import. Sprich, wenn Bauteile noch keine part-db ID haben, 
werden sie neu angelegt.

Grüße
Thomas

von Gelöscht (kami89)


Lesenswert?

Thomas Kühne schrieb:
> Wenn ich dann meine BOM
> exportiere kann ich mir eine CSV Datei erzeugen lassen, welche ich in
> die part-db importieren kann.

Ah cool, auf die Idee bin ich noch gar nie gekommen :-)
Das ist natürlich ein Argument für die Baugruppen-Importfunktion. Dann 
bleibt die also drin ;-)

Danke für diesen Input!

Thomas Kühne schrieb:
> Super praktisch wäre natürlich eine Kombination aus Baugruppen und
> Bauteil Import. Sprich, wenn Bauteile noch keine part-db ID haben,
> werden sie neu angelegt.

Hmm ich denke, das lässt sich einbauen.

Uhu Uhuhu schrieb:
> Wo findet man denn das aktuelle Installationspaket?

Kommt drauf an welche Version du meinst. Die letzte stabile Version 
0.2.2 gibts hier: https://code.google.com/p/part-db/downloads/list

Eine aktuellere Version (die auch sehr stabil läuft) kann man nur per 
SVN Client downloaden, die liegt nämlich im "Trunk": 
https://code.google.com/p/part-db/source/browse/trunk

Und die aktuelle Entwicklerversion (zukünftig v0.3.0, noch weit entfernt 
von "stabil") gibts hier: 
https://code.google.com/p/part-db/source/browse/branches/uneist_kami89

Letztere beide gibts auch als Online-Demo: http://partdb.grautier.com/

Gruss
Urban

von Uhu U. (uhu)


Lesenswert?

Ich habe eine Uraltversion in einer VM laufen, bei der aber mittlerweile 
der aufklappbare Kategorienbaum nicht mehr funktioniert.

Deswegen würde ich gerne auf eine aktuelle umstellen. Wie sieht es denn 
mit Datenkompatibilität aus?

von Gelöscht (kami89)


Lesenswert?

Uhu Uhuhu schrieb:
> Ich habe eine Uraltversion in einer VM laufen, bei der aber mittlerweile
> der aufklappbare Kategorienbaum nicht mehr funktioniert.

Hatte ich auch schon, war irgend ein Fehler meinerseits, ich glaube es 
waren falsche Dateirechte oder sowas...

Uhu Uhuhu schrieb:
> Deswegen würde ich gerne auf eine aktuelle umstellen. Wie sieht es denn
> mit Datenkompatibilität aus?

Sollte kein Problem sein, die Datenbankstruktur wird automatisch (bzw. 
per Button-Klick) angepasst. Einfach vorher ein Backup der Datenbank 
machen, damit man bei einem Fehler auch wieder problemlos "Downgraden" 
kann. Ansonsten ist (übrigens auch bei erfolgreichem Update) kein 
Downgrade mehr möglich.

mfg

von Uhu U. (uhu)


Lesenswert?

Urban B. schrieb:
> Hatte ich auch schon, war irgend ein Fehler meinerseits, ich glaube es
> waren falsche Dateirechte oder sowas...

Das kann eigentlich nicht sein, denn das Teil läuft bei mir in einer VM, 
die ich - außer über den Browser - schon lange nicht mehr angefaßt habe.

von Uhu U. (uhu)


Lesenswert?

Urban B. schrieb:
> Sollte kein Problem sein, die Datenbankstruktur wird automatisch (bzw.
> per Button-Klick) angepasst.

So einfach scheint es doch nicht zu sein.

Ich habe das alte part-db-Verzeichnis umbenannt und den Code unter truc 
in ein neues part-db-Verzeichnis kopiert und config.php an meine alte DB 
angepaßt.

Der Server startet die neue Part-db, der Kategoriebaum wird korrekt 
angezeigt, aber das Anzeigen der Daten im rechten Bereich klappt nicht. 
Direkt nach dem Start bekomme ich dort nur eine Meldung

  Unknown column 'filename' in 'field list'

Wenn ich eine Kategorie anklicke, gibts eine rudimentäre Seite mit 
folgender Meldung:

   Unknown column 'parts.description' in 'field list'

Sieht also stark danach aus, daß die neue part-db andere Vorstellungen 
von der DB hat, als mysql.

Leider finde ich mit grep keine Datei, die den String 'Unknown column' 
enthält.

von Gelöscht (kami89)


Lesenswert?

Hmm welche Version hattest du denn vorher installiert?

Im Menü von Part-DB aus dem Trunk sollte es einen Eintrag "Datenbank" 
geben, was steht da welche Datenbankversion installiert ist?
Auf dieser Seite solltest du eigentlich auch das Datenbankupdate machen 
können falls es nicht schon automatisch gemacht wurde.

Ich bin noch nicht allzu lange hier bei Part-DB, die Versionen vor 0.2.2 
habe ich noch nie gesehen, daher kann ich dazu leider nicht viel sagen.

Uhu Uhuhu schrieb:
> Leider finde ich mit grep keine Datei, die den String 'Unknown column'
> enthält.

Die Fehlermeldung kommt auch nicht von Part-DB selbst, sondern von 
MySQL.

Falls du es nicht hinkriegst kannst du mir auch gerne mal die alte 
Datenbank per PN schicken, dann kann ich es mir mal anschauen.

mfg

von Uhu U. (uhu)


Lesenswert?

Urban B. schrieb:
> Hmm welche Version hattest du denn vorher installiert?

Das war eine Version 0.1, aber theborg ging etwas schlampig mit 
führenden Nullen um...

> Im Menü von Part-DB aus dem Trunk sollte es einen Eintrag "Datenbank"
> geben, was steht da welche Datenbankversion installiert ist?

Es ist Version 1. Nachdem ich dem user einige zusätzliche Permissions 
gegeben hatte, lief der Update glatt durch.

von Gelöscht (kami89)


Lesenswert?

Uhu Uhuhu schrieb:
> Das war eine Version 0.1, aber theborg ging etwas schlampig mit
> führenden Nullen um...

OK bei so alten Versionen kenne ich mich nicht aus, aber ich schätze mal 
das Update sollte trotzdem funktionieren.
Übrigens hat die Version von Part-DB (die Dateien an sich) nichts mit 
der Datenbankversion (1 bis 12) zu tun, das kann anfangs etwas verwirren 
;-)

Uhu Uhuhu schrieb:
> CREATE command denied to user 'part-db'@'localhost' for table 'internal'

Hier ist auch schon der Hund begraben. Der Datenbankbenutzer hat nicht 
genügend Rechte um eine neue Tabelle anzulegen. Am besten gibst du (z.B. 
per phpMyAdmin) einfach alle Rechte für die entsprechende Datenbank, 
dann gibts deswegen sicher nie mehr Probleme.

Nach einem misslungenen Update empfiehlt es sich übrigens, für den 
nächsten Versuch wieder die alte Datenbank einzuspielen weil sonst 
diverse Befehle mehrfach ausgeführt werden, und so zu neuen Fehlern 
führen können.

Heisst also:
- Zuerst die Rechte des Benutzers anpassen
- Wieder die alte Datenbank einspielen (vorher die aktuelle komplett 
löschen!!)
- Nochmal das Update starten, dies sollte nun ohne Fehler durchlaufen

mfg

von Uhu U. (uhu)


Lesenswert?

Ja, da fehlten 3 Permissions - die hat er jetzt und der Update auf 
Version 2 lief glatt durch. Jetzt fehlen wohl nur noch 10 Updates...

Nein, da wurde nur Version 2 abgezeigt, obwohl er Version 12 hat.

Jetzt scheints zu funktionieren - vielen Dank für die Nachhilfe.

von Gelöscht (kami89)


Lesenswert?

Uhu Uhuhu schrieb:
> Ja, da fehlten 3 Permissions - die hat er jetzt und der Update auf
> Version 2 lief glatt durch. Jetzt fehlen wohl nur noch 10 Updates...

OK das ist ja schonmal was. Aber jetzt macht er bei den Updates nicht 
weiter? Theoretisch sollten alle Updates bis Version 12 in einem Rutsch 
durchlaufen.

Gibts Fehlermeldungen o. ä.?

Uhu Uhuhu schrieb:
> Jetzt scheints zu funktionieren - vielen Dank für die Nachhilfe.

Ah, schon wieder zu schnell geantwortet^^
Super dass es jetzt auch noch geklappt hat, ich hoffe Part-DB gefällt 
dir :-)

von Uhu U. (uhu)


Lesenswert?

Ein alter Fehler ist noch immer drin: Wenn man mehrere Datenblätter 
speichert, ist nur eins aus der Teleliste heraus zugreifbar.

Ganz früher wurde für jedes hinterlegte Datenblatt ein Link angezeigt. 
Irgend jemand hat das dann rausgeschmissen.

von Gelöscht (kami89)


Lesenswert?

Uhu Uhuhu schrieb:
> Ein alter Fehler ist noch immer drin: Wenn man mehrere Datenblätter
> speichert, ist nur eins aus der Teleliste heraus zugreifbar.
>
> Ganz früher wurde für jedes hinterlegte Datenblatt ein Link angezeigt.
> Irgend jemand hat das dann rausgeschmissen.

Ist ab der Version 0.3.0 wieder drin, brauchst nur noch ein wenig Geduld 
bis die fertig ist :-)

von Uhu U. (uhu)


Lesenswert?

Prima.

In den Quellen ist auch eine Datei open/openlist.php, die eine 
Lagerliste erzeugt. Die könnte man unter tools einbinden. Damit sie 
funktioniert sind ab Zeile 25 folgende Änderungen nötig:
1
  include('../lib.php');
2
  partdb_init();
3
?>
4
<?
5
  //include('stats.php');
6
?>

Die letzten 3 Zeilen können ersatzlos raus.

von Gelöscht (kami89)


Lesenswert?

Hallo zusammen,

Sorry dass sich im Moment nicht viel tut im Entwicklerbranch. Ich habe 
momentan leider nicht so viel Zeit zum programmieren, da ich noch an 
anderen Projekten arbeite und auch das Studium seine Zeit braucht. Ich 
werde aber versuchen wieder ein bisschen an Part-DB weiterzuarbeiten.

@Udo
Wie sieht es mit dem Upload-Manager aus, bist du da weitergekommen?

mfg
Urban

von Udo N. (weinbauer73)


Lesenswert?

@Urban

Leider nicht, bin auch zeitlich im Beruf ziemlich ausgelastet. Musste 
auch noch recht kurzfristig ein anderes Projekt auf die Beine bringen. 
Und vor Weihnachten stapelt sich ja auch privat so manches. Sobald ich 
wieder Zeit habe, geht es weiter.

Aktuell sind verschiedene Befehle schon implementiert (ein Glück hatte 
ich sowas ja schon in meiner Update-Klasse drin), aber es ist noch keine 
UI vorhanden.

von Gelöscht (kami89)


Lesenswert?

Okay, dann muss die Version 0.3.0 halt noch etwas länger warten bis sie 
fertiggestellt wird...

Im Grossen und Ganzen ist sie aber eigentlich ja schon ziemlich weit, 
neben dem Uploadmanager und der Import/Export-Funktionen sind es 
mehrheitlich nur noch Kleinigkeiten, die noch gemacht werden müssen.

Wie heisst es gleich nochmal, "Gut Ding will Weile haben"? :-D

von Uhu U. (uhu)


Lesenswert?

Sind die Funktionen unter "Lagerorte umbenennen/löschen/sortieren" 
irgendwo beschrieben, insbesondere was die Kästchen "voll" und "noch 
Platz" bewirken?

von Gelöscht (kami89)


Lesenswert?

Uhu Uhuhu schrieb:
> Sind die Funktionen unter "Lagerorte umbenennen/löschen/sortieren"
> irgendwo beschrieben, insbesondere was die Kästchen "voll" und "noch
> Platz" bewirken?

Beschrieben sind die nirgens (die Doku ist noch ziemlich bescheiden ;-).

Mit dem Kästchen "voll" kannst du einfach den Lagerort als voll 
markieren, damit du siehst dass dort kein Platz mehr ist. Intern hat 
dieses Attribut aber keine Funktion, es dient nur zur Kennzeichnung.
Mit dem Kästchen "noch Platz" lässt sich einfach das Kreuz im Kästchen 
"voll" wieder entfernen, das ist irgendwie etwas unglücklich gelöst. 
Aber wie immer: In Version 0.3.0 wird auch das etwas besser :-)

von Uhu U. (uhu)


Lesenswert?

Danke für die Erläuterung.

Habt ihr schon irgendwas ausgemacht, wie die Doku aussehen soll? Ich 
denke, ich kann brauchbare Anleitungen verfassen und würde mich damit am 
Projekt beteiligen, wenn das erwünscht ist.

von Gelöscht (kami89)


Lesenswert?

Uhu Uhuhu schrieb:
> Danke für die Erläuterung.
Kein Problem :-)

> Habt ihr schon irgendwas ausgemacht, wie die Doku aussehen soll? Ich
> denke, ich kann brauchbare Anleitungen verfassen und würde mich damit am
> Projekt beteiligen, wenn das erwünscht ist.

Cool, also von meiner Seite wäre das sogar sehr erwünscht, und ich denke 
mal da hätte auch sonst niemand was dagegen.

Ich denke, die Doku müsste auf jeden Fall direkt im Browser benutzbar 
sein, sonst macht sie nicht viel Sinn. Eine Suchfunktion wäre natürlich 
auch nicht schlecht.

Kennst du ein gescheites Tool um solche Hilfeseiten zu erstellen? Oder 
besser selber was kleines Bauen?

von Uhu U. (uhu)


Lesenswert?

Urban B. schrieb:
> Kennst du ein gescheites Tool um solche Hilfeseiten zu erstellen? Oder
> besser selber was kleines Bauen?

Darüber habe ich mir bisher keine Gedanken gemacht. Was mir spontan 
einfällt, wäre ein MoinMoin-Wiki, das man parallel zum part-db Server 
installiert. Das hätte den Vorteil, daß man es leicht pflegen kann, der 
Benutzer es leicht erweitern/anpassen kann und eine Suchfunktion dabei 
ist.

Vielleicht könnte man das Wiki ja als Funktion in part-db integrieren. 
Auf jeden Fall könnte man auch in die part-db-Seiten Links auf die Hilfe 
einbauen.

von Udo N. (weinbauer73)


Lesenswert?

Es wäre gut, wenn die Online-Hilfe/die Doku auch separat von Part-DB 
upgedatet werden könnte, um Fehler darin schneller ausbügeln und zum 
"Kunden" zu bringen. So könnte man die Konfiguration zwischen lokaler 
oder netzweiter (Intranet oder Internet) Hilfe umschalten.

von Gelöscht (kami89)


Lesenswert?

Uhu Uhuhu schrieb:
> Darüber habe ich mir bisher keine Gedanken gemacht. Was mir spontan
> einfällt, wäre ein MoinMoin-Wiki, das man parallel zum part-db Server
> installiert.

Sieht interessant aus, das kannte ich bisher noch gar nicht. Allerdings 
habe ich nach einem ganz kurzen Blick in den Sourcecode das Gefühl, dass 
das viel zu viel des Guten ist, also total überdimensioniert für unser 
doch relativ kleines Projekt :-)

Ich kenne mich allgemein nicht so mit Wikis o.ä. aus, aber ich vermute 
mal, bei solchen Systemen wird der Inhalt (also die selbstgeschriebene 
Hilfe) in einer Datenbank abgelegt?
Dann müsste das System auf jeden Fall mit einer SQLite funktionieren, 
ansonsten wird das Hochladen eines Updates per SVN "schwierig". Mit 
SQLite müsste das ja aber funktionieren...

Ausserdem sollte sich das Hilfesystem ohne Eingriff des Benutzers 
installieren lassen wenn man Part-DB installiert. Wäre irgendwie doof 
wenn man das Hilfesystem noch selber irgendwie 
installieren/konfigurieren müsste.

Uhu Uhuhu schrieb:
> Vielleicht könnte man das Wiki ja als Funktion in part-db integrieren.
> Auf jeden Fall könnte man auch in die part-db-Seiten Links auf die Hilfe
> einbauen.

Jup, so hätte ich mir das auch vorgestellt.

von Uhu U. (uhu)


Lesenswert?

Urban B. schrieb:
> Ich kenne mich allgemein nicht so mit Wikis o.ä. aus, aber ich vermute
> mal, bei solchen Systemen wird der Inhalt (also die selbstgeschriebene
> Hilfe) in einer Datenbank abgelegt?

MoinMoin ist - leider - in Pearl geschrieben, aber damit hat man nichts 
zu tun. Die Wikiseiten sind normale Dateien, die den Text in dem Format 
enthalten, wie man es im Quelltext-Editor eingibt.

> Allerdings
> habe ich nach einem ganz kurzen Blick in den Sourcecode das Gefühl, dass
> das viel zu viel des Guten ist, also total überdimensioniert für unser
> doch relativ kleines Projekt :-)

Das ist ein Schwäbische-Hausfrau-Argument - das juckt keinen.

Udo Neist schrieb:
> Es wäre gut, wenn die Online-Hilfe/die Doku auch separat von Part-DB
> upgedatet werden könnte, um Fehler darin schneller ausbügeln und zum
> "Kunden" zu bringen.

Das sollte wegen der einfachen Dateistruktur kein größeres Problem sein. 
Updates müßten einfach als neue Version importiert werden. Der Anwender 
hat dann die Möglichkeit, sich die Änderungen gegenüber seiner letzten 
Version anzeigen zu lassen.

von Udo N. (weinbauer73)


Lesenswert?

Dokuwiki kommt ohne Datenbank aus, nutzt Dateien. Man braucht nur ein 
Unterverzeichnis zu packen und entpacken, schon ist die Aktualisierung 
der Texte erledigt :-) Ich nutze Dokuwiki für verschiedenste Zwecke, 
darunter auch eine Developer-Doku.

von Uhu U. (uhu)


Lesenswert?

Dokuwiki ist ein ähnliches Kaliber, wie MoinMoin. Vorteil im 
vorliegenden Fall ist, daß es in PHP geschrieben ist.

von Uhu U. (uhu)


Lesenswert?

Dokuwiki gefällt mir mittlerweile besser, als MoinMoin...

In Tools | Footprints ist ein ziemlich lästiger Fehler:
- Das Laden der Footprintliste dauert seine Zeit - das ist normal
- Unnormal ist, daß die Seite jedesmal neu geladen wird, wenn man
  von einem anderen Tab, oder einem anderen Fenster in FF auf die
  Footprint-Liste umschaltet.

Der Fehler macht das nachträgliche Suchen von Footprints für bereits 
angelegte Teile zur Geduldprobe.

von Uhu U. (uhu)


Lesenswert?

Nachtrag: Das Problem mit der Footprints-Seite liegt daran, daß die 
Seite zu groß ist und FF sie neu rendert, wenn der Tab hervorgeholt 
wird.

Alles in allem frage ich mich allerdings, welchen praktischen Nutzen 
diese Bildchen haben.

von Christoph H. (christoph_b)


Lesenswert?

Uhu Uhuhu schrieb:
> Alles in allem frage ich mich allerdings, welchen praktischen Nutzen
> diese Bildchen haben.

Ich finde die Bilder schon praktisch.;-) SO sieht man auf den ersten 
Blick welche Bauform man auf Lager hat

von Uhu U. (uhu)


Lesenswert?

Christoph B. schrieb:
> SO sieht man auf den ersten Blick welche Bauform man auf Lager hat

Nur ob der Chip jetzt breit- oder schmalbeinig ist, das siehst du nicht 
- da bist du mit dem Namen besser bedient...

von Thomas K. (tommes)


Lesenswert?

Seh ich genauso wie Uhu, die Footprint Bilder finde ich eher unwichtig. 
Ein weiteres Beispiel dafür sind passive SMD Komponenten, ob das Bild 
jetzt 0402 oder 0603 oder so darstellt erkennt man auch nicht wirklich 
und muss es ja auch nicht, der Name sagt doch genug. Allerdings stören 
die Footprints auch nicht und wer will, muss sie ja nicht 
installieren...

von Udo N. (weinbauer73)


Lesenswert?

Mehr als 6 Wochen mit Audits und Prüfmethodenumstellung sowie der 
Weihnachtsstress ist rum. Auf gehts an die Arbeit am Filemanager...

Was soll der Filemanager alles können? Up- und Download ist ja die 
wenigste Arbeit, hauptsächlich das UI muss ich machen.

Grüße
Udo

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Mehr als 6 Wochen mit Audits und Prüfmethodenumstellung sowie der
> Weihnachtsstress ist rum. Auf gehts an die Arbeit am Filemanager...

Cool :-) Bei mir dauerts leider noch ein paar Wochen bis der 
Prüfungsstress vorbei ist... :-(

Udo Neist schrieb:
> Was soll der Filemanager alles können? Up- und Download ist ja die
> wenigste Arbeit, hauptsächlich das UI muss ich machen.

Also wichtig ist sicher mal, dass man per Button auf irgendeiner Seite 
den Manager als Popup (schöner wäre natürlich ein schönes 
JavaScript-Fenster, das sich einfach über die Seite legt, aber das wäre 
nur Kosmetik...) öffnen kann, und beim Schliessen dieses Managers muss 
irgendwie der gewählte Dateinamen (besser ein Array mit 0...unendlich 
Strings) an die ursprüngliche Seite (mit dem Button) übermittelt werden.

Im Manager selbst muss es die Möglichkeit geben, die Dateien in 
"img/footprints/", "img/iclogos/" und "media/" zu durchsuchen, am besten 
auch mit Suchfunktion (welche man natürlich auch noch später nachreichen 
könnte, da nicht zwingend notwendig). Rudimentäre Dateioperationen wie 
Löschen, Verschieben, Kopieren, Ordner anlegen sollten auch möglich 
sein, wobei aber nur im Verzeichnis "media/" Schreibrechte vorhanden 
sein dürfen, im Ordner "img/" sind nur Dateien, die von Part-DB 
bereitgestellt werden, dort darf der User keine Schreibrechte haben.

Dann natürlich die Uploadfunktion. Zielordner (irgenwo in "media/") 
wählen, lokale Dateien oder Internet-URL wählen, und Dateien hochladen 
lassen. Bei der Angabe einer Internet-URL soll die Datei direkt aus dem 
Internet auf den Server runtergeladen werden (Dateiname der Zieldatei 
sollte dabei wählbar sein). Möchte ein Benutzer übrigens eine 
Internet-URL verwenden, die Datei aber nicht runterladen (z.B. um immer 
auf das aktuelle Datenblatt verwiesen zu werden), so braucht er den 
Manager gar nicht erst aufzurufen, sondern gibt einfach direkt die URL 
in das Adressfeld z.B. in edit_part_info.php ein.

Ich hoffe ich habe nichts vergessen ;-)

mfg

von Udo N. (weinbauer73)


Lesenswert?

Den Filemanager als neues DIV über die Part-DB zu legen ist nicht 
wirklich ein Problem. Fast alle Aktionen werden dann über Ajax laufen. 
Einen Multi-Uploader muss ich mir auch erstmal anschauen. Was recht 
einfaches hab ich unter http://davidwalsh.name/multiple-file-upload 
gefunden. Nur geht das wohl mit dem IE nicht. SWFUpload wäre wohl 
besser. Schau ich mir mal genauer an.

von Gelöscht (kami89)


Lesenswert?

Hallo Udo,

Ich habe mal noch die Debug-Möglichkeiten von Part-DB etwas ergänzt. Und 
zwar wird im Debug-Modus das "error reporting level" von PHP 
hochgesetzt, damit man möglichst viele Fehlermeldungen bekommt (zum 
Aufspüren von unsauber programmierten Codezeilen oder als "deprecated" 
markierten Funktionen). Nur "strict errors" werden nicht ausgegeben (ich 
kann mir nicht erklären wofür man diese Meldungen gebrauchen kann - zum 
Teil kommen da Meldungen, die völlig unbegründet sind).

Soweit sieht das bei mir ganz gut aus, es kommen trotz hohem "error 
reporting level" keine Fehlermeldungen mehr. Doch sobald man in Part-DB 
"Template-Debugging" aktiviert, hagelt es nur noch von "undefined 
offset" und "deprecated function", alle durch die Datei 
"lib/vlib/vlibTemplate/debug.php" verursacht.

Mache ich etwas falsch, oder ist die genannte Datei wirklich so unsauber 
programmiert? Das ist natürlich schade, diese Meldungen müssen weg, 
damit man das höhere error reporting level auch optimal zum debuggen 
einsetzen kann.

VLib wird wohl leider nicht mehr wirklich aktiv weiterentwickelt (auf 
Sourceforge letzte Änderung im Jahr 2009)... Ich habe trotzdem mal die 
neuste Version runtergeladen und in Part-DB eingebaut (oder hast du mit 
Absicht eine ältere Version verwendet?). Bezüglich der Fehlermeldungen 
hat es aber nichts bewirkt.

Ausserdem musste ich schon etwa ein halbes Dutzend mal Apache neu 
starten, weil irgendwas mit vlib geklemmt hat. Bei Änderungen am HTML 
Code von irgendwelchen Seiten aktualisiere ich die entsprechende Seite 
alle paar Sekunden wieder, um zu schauen wie sich die Änderung im Code 
im Browser bemerkbar macht. Doch manchmal kommt nach einem Refresh 
plötzlich nur noch ein "vlib parse error", selbst wenn ich die 
entsprechende *.tmpl Datei komplett leere, kommt der Fehler weiterhin. 
Erst ein Neustart von Apache behebt den Fehler und die Seite wird wieder 
geladen.

Ich habe keine Ahnung was da das Problem sein könnte, vielleicht 
irgendwas mit dem Cache-Mechanismus (den ich nicht näher kenne) von 
vlib?

Konntest du diesen Fehler auch schon nachvollziehen? Hast du eine Idee 
was das sein könnte?

mfg

von Udo N. (weinbauer73)


Lesenswert?

Ich hatte vor Jahren die letzte nicht auf Sourceforge gehostete 
vlib-Version geladen und seitdem verwende ich diese. Updaten wäre wohl 
angebracht ;-) Das mittlerweile PHP weiter ist und daher Fehler von vlib 
produziert werden können, versteht sich daher von selbst. Den Debug-Code 
verwende ich sehr selten, eher kommentiere ich Bereiche im Template aus 
und kann so den Fehler einkreisen.

Ich habe auch hin und wieder Hänger mit vlib und Ajax, wobei da eher der 
Cache vom FF wohl dazwischenfunkt. Mit Chrome gehts besser. In der 
vlibIni.php lässt sich das Verhalten der Engine beeinflussen. Die 
Variable CACHE_LIFETIME lässt sich ja auch 0 setzen, was das 
Cache-Verhalten praktisch abschalten sollte. Dann ist aber der Aufruf 
von vlibTemplateCache() sinnlos und man kann vlibTemplate() verwenden.

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Ich hatte vor Jahren die letzte nicht auf Sourceforge gehostete
> vlib-Version geladen und seitdem verwende ich diese. Updaten wäre wohl
> angebracht ;-)
OK, das Update lade ich heute noch ins SVN hoch.

> Das mittlerweile PHP weiter ist und daher Fehler von vlib
> produziert werden können, versteht sich daher von selbst.
Jup, das würde die "deprecated"-Meldungen begründen. Die meisten 
Fehlermeldungen stammen jedoch von Zugriffen auf Array-Elemente, die gar 
nicht existieren. Man müsste also an vielen Stellen noch ein "if 
isset()" einfügen. Mal schauen, vielleicht nehme ich mal mit dem 
Entwickler von vlib Kontakt auf um das zu klären.

> Den Debug-Code
> verwende ich sehr selten, eher kommentiere ich Bereiche im Template aus
> und kann so den Fehler einkreisen.
Um zu schauen, wie die Loop-Strukturen und die übergebenen Variablen so 
aussehen, ists aber manchmal ganz praktisch. Ich habe es zwar auch nur 
selten verwendet, trotzdem möchte ich diese Funktion nicht wieder 
rausnehmen müssen :-)

> Ich habe auch hin und wieder Hänger mit vlib und Ajax, wobei da eher der
> Cache vom FF wohl dazwischenfunkt. Mit Chrome gehts besser. In der
> vlibIni.php lässt sich das Verhalten der Engine beeinflussen. Die
> Variable CACHE_LIFETIME lässt sich ja auch 0 setzen, was das
> Cache-Verhalten praktisch abschalten sollte. Dann ist aber der Aufruf
> von vlibTemplateCache() sinnlos und man kann vlibTemplate() verwenden.

Also bei "normaler" Verwendung von Part-DB hatte ich noch nie Probleme, 
nur beim Entwickeln wo ich sehr häufig ganz kleine Änderungen an den 
*.tmpl Dateien vorgenommen habe, und das Ergebnis im Browser jedes mal 
per Refresh aktualisierte. Naja, wenn das Caching wirklich ein ernstes 
Problem darstellen würde, können wir es dann ja immernoch ausschalten...

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
>> Den Debug-Code
>> verwende ich sehr selten, eher kommentiere ich Bereiche im Template aus
>> und kann so den Fehler einkreisen.
> Um zu schauen, wie die Loop-Strukturen und die übergebenen Variablen so
> aussehen, ists aber manchmal ganz praktisch. Ich habe es zwar auch nur
> selten verwendet, trotzdem möchte ich diese Funktion nicht wieder
> rausnehmen müssen :-)

print_r($array); und im Browser den Quelltext anzeigen lassen ;-) 
Verschachtelte Arrays sind mit 0=>array, 1=>array usw. aufzubauen.

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> print_r($array); und im Browser den Quelltext anzeigen lassen ;-)

Ja klar geht das auch :-)
Aber im Debug-Modus brauchts nur einen einzigen Buttonklick und man hat 
alle Loops und alle Variablen, die auf der jeweiligen Seite verwendet 
werden, schön aufgelistet. Und das auch noch in einem separaten Popup, 
so dass die Seite an sich nicht verändert wird (macht man ein print_r() 
bevor der HTML-Header geschrieben wurde, funktionieren z.B. die header() 
Funktionen nicht mehr, es "verfälscht" dann also quasi das Ergebnis - 
wenn auch nur selten wirklich spürbar).

Schlussendlich kann ja jeder so debuggen wie er möchte. Ich fände es nur 
schade, diese bereits in vlib integrierte Debugmöglichkeit zu vermeiden, 
nur weil niemand die genannten "if isset()" ergänzen möchte. Wenn ich 
mal Zeit habe kann ich das ja auch selber übernehmen und dann den neuen 
Code an den vlib-Entwickler schicken, vielleichts wirds ja in 
Sourceforge aufgenommen... Aber momentan habe ich anderes zu tun ;-)

von Udo N. (weinbauer73)


Lesenswert?

Ich habe den Filemanager schonmal ein nutzbares UI verpasst, allerdings 
noch nicht für die Part-DB. Sobald noch die Befehle (Rename, Delete, 
Copy, Move, Up- und Download) funktionieren, kann ich es dank CSS sehr 
einfach an Part-DB anpassen.

Im Moment besteht der Filemanager aus einigen vlib-Templates, ein CSS, 3 
Javascript-Dateien (ajax.js, dom.js und filemanager.js) und verwendet an 
manchen Stellen, bedingt durch den Einbau in ein anderes Framework, noch 
dojo. Letzteres ist für den Filemanager innerhalb von Part-DB nicht 
notwendig und wird entfernt.

von Marco tom Suden (Gast)


Lesenswert?

Hi Leute,

Wird Aktuell noch an der part-db gewerkelt?

Hätte gern mal die Part-DB 0.3.0 getestet,bzw offline also auf VM.

Gibt's aber ja noch nicht zum dl,sondern nur Online.

Daher meine zweite frage: Wann kommt denn ca die neue Raus?

Was ich mir zudem wünschen würde ist das man die toten links von Google 
raus nehmen könnte, und das ganze ein wenig Übersichtlicher Gestalten 
würde z.B im bereich 
https://code.google.com/p/part-db/source/detail?r=588 mal genauer sagen 
würde wo und welche php das jeweils ist?

Trotzdem echt gute Arbeit!

PS: Sollte irgendwann mal die Arbeit dran eingestellt werden,sei es aus 
Zeitmangel oder so,wie auch immer. Würde mich freuen es fortführen zu 
dürfen?

von Udo N. (weinbauer73)


Lesenswert?

Die Entwicklung steht nicht. Wir hatten in den letzten Wochen weniger 
Zeit für das Projekt. Derzeit entwickle ich einen Filemanager, der die 
alten Up-/Downloadformulare genauso wie Copy/Move/Rename/Delete und 
ähnliche Befehle für die verschiedenen Inhalte wie Grafiken ersetzt. Ich 
kann diesen allerdings noch nicht in Part-DB integrieren, da er noch ein 
paar Funktionen eines Javascript-Frameworks nutzt, die ich ersetzen 
will.

von Gelöscht (kami89)


Lesenswert?

Marco tom Suden schrieb:
> Hi Leute,
Hallo!

> Wird Aktuell noch an der part-db gewerkelt?
Jain, bei mir sind grad Semesterprüfungen :-(
In einer Woche kanns aber weitergehen :-)

> Hätte gern mal die Part-DB 0.3.0 getestet,bzw offline also auf VM.
> Gibt's aber ja noch nicht zum dl,sondern nur Online.
Die Sources sind ja im Google Code, die kann man runterladen: 
https://code.google.com/p/part-db/source/browse/#svn%2Fbranches%2Funeist_kami89

Dazu brauchst du nur einen SVN Client. Einfach mal im Internet nach 
einer SVN (Subversion) Anleitung suchen.

Bei Linux muss das Paket "subversion" installiert sein, danach einfach 
diesen Befehl im Terminal ausführen:
1
svn checkout http://part-db.googlecode.com/svn/branches/uneist_kami89/ part-db-uneist_kami89
Dann wird das gesamte Projekt in den home-Ordner runtergeladen.

> Daher meine zweite frage: Wann kommt denn ca die neue Raus?
Schwierig zu sagen ;-) Wenns fertig ist^^

> Was ich mir zudem wünschen würde ist das man die toten links von Google
> raus nehmen könnte, und das ganze ein wenig Übersichtlicher Gestalten
> würde z.B im bereich
> https://code.google.com/p/part-db/source/detail?r=588 mal genauer sagen
> würde wo und welche php das jeweils ist?
hmm? Verstehe kein Wort ;-)
Die Google-Code Projektseite können wir nicht verändern, die hat Google 
entwickelt^^

> Trotzdem echt gute Arbeit!
Danke :-)

> PS: Sollte irgendwann mal die Arbeit dran eingestellt werden,sei es aus
> Zeitmangel oder so,wie auch immer. Würde mich freuen es fortführen zu
> dürfen?
Keine Angst, es geht schon weiter :-)
Die v0.3.0 ist aber ein sehr grosser Schritt (auch wenn man davon nicht 
sehr viel sieht, im Hintergrund ist praktisch alles komplett neu), daher 
dauert es halt seine Zeit.

von Marco tom Suden (Gast)


Angehängte Dateien:

Lesenswert?

Ok das mit dem Übersichtlich hat sich erledigt. Die php's haben ja den 
namen,hat sich ja einiges getan.

Habe mit das ganze mal geladen und ins Verzeichnis gepackt.

Nun habe ich aber zweierlei Probleme!.

1. Bekomme ich eine Fehlermeldung beim Aufrufen der Seite:
Strict Standards: Non-static method vlibIni::vlibTemplate() should not 
be called statically, assuming $this from incompatible context in 
C:\xampp\htdocs\part-db2\lib\vlib\vlibTemplate.php on line 849

Strict Standards: Non-static method vlibIni::vlibTemplate() should not 
be called statically, assuming $this from incompatible context in 
C:\xampp\htdocs\part-db2\lib\vlib\vlibTemplate.php on line 851

Sollte hoffentlich eher ein geringes probtem sein.

2. Habe ich bei dem Verzeichnis das ich per TortoiseSVN geladen hab.
Bei der  vlibTemplate.php &  config_defaults.php einen Roten Punkt 
mit(!).
Alles andere ist Grün.

Habe auch ein Update versucht, funzt aber nicht.

von Gelöscht (kami89)


Lesenswert?

Die "Strict Standards" Meldungen kommen vermutlich von einem zu hoch 
eingestellten Error-Reporting-Level bei deinem Webserver (Apache?).

Du hast schon mindestens PHP in der Version 5.3, oder? Das ist nämlich 
Voraussetzung für Part-DB 0.3.0.

Ich schaue dass ich heute Nachmittag noch die aktuellste Version ins SVN 
hochlade, dort ist dann auch noch einen rudimentären Installer 
inbegriffen, der unter Anderem auch die ganzen Tabellen in der Datenbank 
erzeugt.

Ich melde mich dann hier nochmal wenn das hochgeladen ist.

von Marco tom Suden (Gast)


Lesenswert?

Also bei mir ist im Grunde doch alles Aktuell,oder?

MYSQL:5.5.24 PHP:5.4.3 Apache:2.2.22

Hab das auch mit Wampserver2.2 versucht, dort sehen optisch die Fehler 
zwar anders aus,aber selber Fehler.

Urban B. schrieb:
> Ich schaue dass ich heute Nachmittag noch die aktuellste Version ins SVN
> hochlade, dort ist dann auch noch einen rudimentären Installer
> inbegriffen, der unter Anderem auch die ganzen Tabellen in der Datenbank
> erzeugt.

Besten Dank!


Was bedeuten eigentlich die Roten Punkte mit dem(!),die vom svn prog 
angezeigt werden?

von Gelöscht (kami89)


Lesenswert?

So, die neue Version ist hochgeladen. Jetzt kannst du die Dateien 
nochmal runterladen. Beim nächsten Aufruf der Seite sollte dann der 
Installationsassistent kommen.

Du kannst entweder mit einer komplett leeren MySQL Datenbank, oder mit 
einer Datenbank der Version 12 loslegen. Auf keinen Fall die Datenbank 
vom produktiven System (letzte stabile Part-DB Version) benutzen!! Eine 
Kopie davon geht natürlich.

Marco tom Suden schrieb:
> Also bei mir ist im Grunde doch alles Aktuell,oder?
> MYSQL:5.5.24 PHP:5.4.3 Apache:2.2.22

Ja, das passt.

> Was bedeuten eigentlich die Roten Punkte mit dem(!),die vom svn prog
> angezeigt werden?

Ich kenne TortoiseSVN nicht, aber bei meinem SVN Client werden Dateien 
rot markiert, die nicht mehr aktuell sind. Wegen dem Cache sind die 
Icons aber nicht immer aktuell. Im Zweifelsfall einfach die Dateien 
löschen und nochmal per SVN runterladen lassen (gilt natürlich nur für 
"Systemdateien". Bei allen Dateien, die nicht im SVN existieren [z.B. 
config.php] funktioniert das nicht).

Marco tom Suden schrieb:
> 1. Bekomme ich eine Fehlermeldung beim Aufrufen der Seite:
> Strict Standards: Non-static method vlibIni::vlibTemplate() should not

Bei Apache kann man den "Error Reporting Level" einstellen, da musst du 
die "strict standards" deaktivieren.
Hier bei Ubuntu liegen die Einstellungen in /etc/php5/apache2/php.ini, 
die entsprechende Zeile sieht bei mir so aus:
1
error_reporting = E_ALL & ~(E_STRICT | E_DEPRECATED)

Falls es noch Probleme gibt, lösche mal die config.php im 
Hauptverzeichnis von Part-DB (falls sie schon existiert).

von Marco tom Suden (Gast)


Lesenswert?

Hi Urban B.

Hab das ganze komplett neu geladen inkl neuer Database.

Auch die Änderung in der php.ini Sieht bei mir so aus:

Common Values:
;   E_ALL (Show all errors, warnings and notices including coding 
standards.)
;   E_ALL & ~E_NOTICE  (Show all errors, except for notices)
;   E_ALL & ~E_NOTICE & ~E_STRICT  (Show all errors, except for notices 
and coding standards warnings.)
;   E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR  (Show only 
errors)
; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
; Development Value: E_ALL
; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT
; http://php.net/error-reporting
error_reporting = E_ALL & ~(E_STRICT | E_DEPRECATED)


Bei der Installation zeigte er mir ebenfalls Fehler an.

Nach der Installation bestehen die selben Fehler dennoch.

von Gelöscht (kami89)


Lesenswert?

Oh, nach genauerem Betrachten der Fehlermeldung habe ich gemerkt, dass 
in der vlibIni.php tatsächlich ein Fehler war (bzw. sehr unschöne 
Programmierung). Ich frage mich schon ein bisschen, was sich da der 
Entwickler von vlib überlegt hat, ist ja ultrakomisch was der da gemacht 
hat^^ (zur Info: vlib wurde nicht von uns entwickelt, alles im 
vlib-Ordner stammt nicht von uns).

Ich habe nun mal wenigstens ein "public static" vor die Methoden 
geschrieben, jetzt dürften diese Fehlermeldungen nicht mehr kommen. 
Aktualisiere einfach deine Installation nochmal per SVN.

Falls es trotzdem noch weitere Fehlermeldungen gibt, einfach nochmal 
hier melden :-)

@all
Ich habe gerade rausgefunden, dass die derzeit benutzte MySQL Engine 
"MyISAM" gar keine Transaktionen unterstützt. Das ist natürlich sehr 
schade, für die User wären Transaktionen nämlich sehr von Vorteil, da 
die Datenbank keine halbfertigen Operationen mehr übernehmen würde.

Ein Beispiel wäre, wenn der Benutzer alle Teile einer Baugruppe abbucht 
(Button "Teile abfassen") und mittendrin ein Fehler auftauchen würde. 
Dann wären die ersten paar Teile erfolgreich abgefasst worden, doch die 
restlichen Bauteile konnten aufgrund des Fehlers nicht mehr abgefasst 
werden. Der Benutzer hat dann keine Change zu erkennen, bis wohin die 
Abbuchung noch erfolgreich war, bzw. er merkt nicht mal dass ein Teil 
der Bauteile abgebucht wurden, und ein Teil nicht.
Ein Fehler kann z.B. duch ein Programmierfehler verursacht werden, oder 
durch eine gleichzeitige Transaktion eines anderen Benutzers. Zweiteres 
ist zwar erst ab mehr als vielleicht 10 bis 20 Benutzer einigermassen 
realistisch, doch in einem kleinen Unternehmen könnte dies durchaus zu 
einem Problem werden.

Könnte man mit Transaktionen arbeiten, würden alle Änderungen, die 
bereits erfolgreich abgeschlossen wurden, wieder problemlos rückgängig 
gemacht werden. Beim Beispiel mit den Baugruppen würde das dann 
bedeuten, dass einfach kein einziges Bauteil abgebucht wurde. Das wäre 
für den Benutzer dann ganz einfach nachzuvollziehen und es gibt keine 
falschen Bestände in der Datenbank.

Es gibt doch nichts mühsameres als eine schiefgelaufene Transaktion die 
dann so halbfertig in der Datenbank verewigt bleibt ;-)

Daher wäre vielleicht ein Umstieg auf "InnoDB" sinnvoll. Ich kenne mich 
damit leider nicht wirklich aus, doch nach ein paar Recherchen im 
Internet dürfte InnoDB etwas langsamer sein als MyISAM. Kommt aber immer 
drauf an was man macht (Lesen / Schreiben). Nach ein paar Tests mit 
Part-DB habe ich festgestellt, dass das Laden der Bauteile einer 
Kategorie etwa doppelt so lange dauert wie mit MyISAM. Meine VM mit 
einem Kern meines i7-3770k und 2GB RAM schafft nun 240 Bauteile in 180ms 
statt in 90ms. Interessanterweise dauert es umso länger, je mehr 
CPU-Kerne ich der VM zuordne...Bei 4 Kernen dauert es um die 500ms, das 
ist schon beachtlich. Ich denke mal dass VirtualBox da irgendwie 
ausbremst...

Nun, die längere Ladezeiten sind zwar mühsam wenn man einen langsamen 
Server hat oder viele Bauteile auf einmal anzeigen möchte. Ich 
persönlich bin aber der Meinung, dass die Konsistenz der Datenbank 
wichtiger ist als die Geschwindigkeit. Ausserdem könnte man die 
Bauteilelisten auch auf mehrere Seiten aufteilen, so dass z.B. maximal 
200 Teile pro Seite angezeigt werden (so wie es ja in jedem Online-Shop 
auch üblich ist).

Was meint ihr dazu? Udo, hast du vielleicht schon Erfahrungen mit InnoDB 
gemacht?

P.S.
Seit MySQL 5.5 ist InnoDB sowieso zur Standard-Engine geworden, das ist 
ja schonmal kein schlechtes Zeichen. Vielleicht wird die Performance in 
der nächsten Zeit ja auch noch verbessert...

EDIT:
Und etwas mehr Geschwindigkeit könnte man vermutlich auch noch mit ein 
paar Optimierungen von Part-DB rausholen. Bisher habe ich die Klassen 
natürlich noch nicht sonderlich auf Geschwidnigkeit getrimmt, sondern 
vielmehr auf die Funktionalität.

von Udo N. (weinbauer73)


Lesenswert?

Ich würde den Umstieg auf InnoDB befürworten. Geschwindigkeit ist nicht 
das Ziel, sondern Datensicherheit und Nutzbarkeit der Part-DB. Ich würde 
auch jede Suchanfrage auch auf x Ergebnisse einschränken. Wer benötigt 
schon den gesamten Bestand am Bildschirm? Die Einschränkung könnte man 
ja auch mit einer Checkbox oder in der Konfiguration ein- oder 
ausschalten.

Ich habe die Abhängigkeit meines Filemanagers vom dojo-Framework soweit 
beseitigt. Download eines ausgewählten Files funktioniert. Bin gerade an 
der Verarbeitung von Befehlen (Rename, Delete, Copy und Move). Der 
Dialog dazu fehlt noch komplett. Erst wenn das alles funktioniert, dann 
gehts an den Upload. Meine Shell-Klasse werde ich wohl nicht benötigen, 
werde das im Filemanager direkt integrieren.

von Gelöscht (kami89)


Lesenswert?

Okay also wenn ich das alles richtig verstanden habe, genügt ja für jede 
Tabelle ein einziger, kleiner Befehl:
1
ALTER TABLE `xy` ENGINE=InnoDB
Das kann man problemlos als ganz normales Datenbankupdate in die 
db_update_steps.php schreiben, der Benutzer merkt gar nichts davon. 
Zumindest bei meinen Test hat das funktioniert, bzw. deutet die 
gesunkene Geschwindigkeit darauf hin, dass es funktioniert hat :-)

Falls dadurch noch Probleme verursacht werden, ist das ja schnell wieder 
rausgenommen...
Jetzt muss ich einfach "nur" noch alle Klassen etwas umbauen, damit die 
auch sinnvoll mit den Transaktionen umgehen können.

Ausserdem habe ich noch erste Versuche mit SQLite gestartet. Ich finde, 
SQLite macht es den Hobby-Anwendern, die nicht viel Ahnung von 
Datenbanken haben, sehr viel leichter als MySQL. Und fürs Hobby genügt 
SQLite allemal, und Transaktionen werden auch unterstützt. Ich weiss 
noch wie schwer ich mich getan habe, als ich das erste mal eine MySQL 
Datenbank gebraucht habe. Da kann ich gut verstehen wenn einige User das 
Handtuch werfen und zur "Konkurrenz" gehen.
Ebenfalls für eine einfachere Handhabung habe ich einen Installer 
gebaut, der beim ersten Aufruf der Seite automatisch gestartet wird. 
Dort lassen sich bequem die wichtigsten Einstellungen tätigen (vor allem 
die Verbindung zur Datenbank). So muss sich auch niemand mehr von Hand 
um die config.php kümmern, und falls eine SQLite Datenbank verwendet 
wird, muss nichtmal eine Datenbank vorbereitet werden.

Eigentlich dachte ich ja, mit dem Einsatz von PDO sollte SQLite ganz 
leicht auch unterstützt werden. Tja, ganz so einfach ist es dann aber 
leider doch nicht :-( Es gibt einige MySQL-Befehle, die SQLite nicht 
kennt bzw. anders formuliert werden müssen. Ausserdem müssen in SQLite 
scheinbar alle Indizes über die gesamte Datenbank eindeutig sein, nicht 
nur in der jeweiligen Tabelle. Daher müsste ich noch ein paar Indizes 
umbenennen. Irgendwie sollte das dann aber schon auch noch funktionieren 
denke ich mal :-)

Und wegen dem Upload-Manager, du kannst dich ja melden wenn er 
einigermassen fertig ist, dann schauen wir mal wie wir den am besten 
einbauen.

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
> Und wegen dem Upload-Manager, du kannst dich ja melden wenn er
> einigermassen fertig ist, dann schauen wir mal wie wir den am besten
> einbauen.

Mach ich :-) Bin ja schon mitten drin. Die Befehle werden auch schon 
ausgeführt. Aktuell fehlen mir nur noch ein paar Dialoge und der 
Upload-Teil.

von Marco tom Suden (Gast)


Angehängte Dateien:

Lesenswert?

So da bin ich mal wieder.

Kommt mir vor als hätte ich euch mit den Fehlern bei mir, ein wenig 
unterstützt. ;-) Ok bin zwar kein php Profi,kenne mich momentan nur 
bedingt damit aus,wo ich aber meine Kenntnisse in nächster Zeit 
ausarbeiten werde.

Deswegen frag ich ja hier,also wenn ich euch in form von Testen etc 
irgendwie unterstützen kann. Stehe ich euch gern dafür Bereit!

Ich bin nach betrachten der einzelnen Versionen,begeistert und von dem 
Ganzen sehr Überzeugt. Positiv natürlich! Es hat sich einiges dran 
getan,
also dem sei gelobt.

Naja nun aber zum eigentlichen warum ich mich melde ist, ich habe es nun 
folgendermaßen ausgeführt:

Zuerst hab ich die Database komplett geleert war somit vor der 
Installation also Leer Ohne Tabellen usw!

Danach habe ich kein Update gemacht sondern Alles nochmal Neu aus der 
svn geladen!

Als ich die Installation gestartet habe also die install.php aufgerufen 
hab.

War ich erstmal überzeugt das alles so läuft wie es soll,sprich es war 
ein Sauberes Bild da Ohne Fehler!

Als jedoch die Installation Abgeschlossen war, kam die herbe 
Ernüchterung, nämlich nichts, weder Fehler noch die DB, einfach ein 
Schlichtes Weiß ohne jede art von Text.

Habe mal die php_error_log angehängt in der am Ende Fehler angezeigt 
werden ,die aber nun eine Undefinierte Variable in der debug.php 
bettreffen.

von Udo N. (weinbauer73)


Lesenswert?

"PHP Deprecated" ist erstmal kein Fehler, sondern nur ein Hinweis, das 
die genannte Funktion als "nicht mehr erforderlich/als überholt" 
markiert wurde und irgendwann in der Zukunft entfällt. Man sollte sich 
als Programmierer dann eine Alternative ausdenken (z.B. eine eigene 
Funktion schreiben, die entsprechend heißt.

"PHP Notice" heißt nur, hier gibts einen Hinweis. In der Regel sind das 
nicht definierte Variablen oder Indices eines Arrays.

Den anderen Fehler schaue ich mir in der Klasse mal an. Eventuell kann 
ich den Fehler beheben.

von Udo N. (weinbauer73)


Lesenswert?

Fehler: PHP Strict Standards:  Non-static method vlibIni::vlibTemplate() 
should not be called statically, assuming $this from incompatible 
context

Ich habe im Konstruktor den Block
1
if (is_array(vlibIni::vlibTemplate()))
2
{
3
   foreach (vlibIni::vlibTemplate() as $name => $val)
4
   {
5
      $this->OPTIONS[$name] = $val;
6
   }
7
}

durch die ältere Methode
1
$vlibIni = new vlibIni;
2
if (is_array($array = $vlibIni -> vlibTemplate()))
3
{
4
   foreach ($array as $name => $val)
5
   {
6
      $this->OPTIONS[$name] = $val;
7
   }
8
}

ersetzt. Ich hoffe, dass damit der Fehler behoben ist.

von Gelöscht (kami89)


Lesenswert?

Die Meldungen sind mir alle bekannt, die kommen alle von vlib (wenn ich 
keine übersehen habe). Wie ich schonmal hier geschrieben habe, ist vlib 
leider teilweise sehr unsauber programmiert. Eventuell versuche ich mal 
Kontakt mit dem Entwickler aufzunehmen um das zu klären.

Wie Udo bereits schrieb, sind das aber alles nur Warnungen, die sollten 
eigentlich keinen Einfluss auf die Funktionsweise der Webseite haben.

Du kannst aber mal versuchen ganz am Anfang in der Datei 
"start_session.php" die folgenden Zeilen einzufügen:
1
error_reporting(E_ERROR);
2
ini_set("display_errors", 0);
Damit sollten nun definitiv keine Warnungen mehr auf der Seite 
ausgegeben werden. Wichtig ist aber, dass in der config.php die 
Einstellung $config['debug']['enable'] auf "false" gesetzt ist, das ist 
standardmässig aber schon so eingestellt wenn du den Debug-Modus noch 
nicht aktiviert hast.

Ich habe auch schon festgestellt, dass nur noch eine weisse Seite kam, 
anstatt die Warnungen. Das komplette Deaktivieren dieser Warnungen hat 
dann geholfen. Eigentlich komisch, ich weiss nicht warum das so war.

Marco tom Suden schrieb:
> Deswegen frag ich ja hier,also wenn ich euch in form von Testen etc
> irgendwie unterstützen kann. Stehe ich euch gern dafür Bereit!

Das ist super, Tester können wir immer gebrauchen! Vor allem scheinst du 
ja mit Windows zu arbeiten, ich entwickle hier aber nur mit Linux. So 
kannst du uns helfen Fehler aufzudecken, die nur Windows betreffen.

Dass noch nicht alles funktioniert in der Version 0.3.0 sollte dir ja 
klar sein, da sie noch in Entwicklung ist. Also wenn mal eine Funktion 
nicht funktioniert kann das durchaus auch so "gewollt" sein.

@Udo
Ich habe eigentlich vorher in der vlibIni.php die Methoden static 
gemacht, damit sie mit vlibIni::... aufgerufen werden können. So wie es 
aussieht werden diese Funktionen immer nur mit den :: aufgerufen, static 
würde dann also SInn machen. Wobei aber die ganze Konfiguration total 
komisch ist, wer macht schon eine Klasse für die Einstellungen, wo dann 
einfach die Arrays über Methoden geholt werden?! ;-)

von Udo N. (weinbauer73)


Lesenswert?

@Urban
Ich hab nicht ganz auf die Zeiten im Logfile geschaut. Scheint so, dass 
Marco deine Änderung schon geholt hatte und damit der Fehler behoben 
ist. Du kannst meine Änderung wieder rückgängig machen, da ich die 
originale Methode nur auskommentiert habe.

von Marco tom Suden (Gast)


Lesenswert?

Urban B. schrieb:
> Das ist super, Tester können wir immer gebrauchen! Vor allem scheinst du
> ja mit Windows zu arbeiten, ich entwickle hier aber nur mit Linux. So
> kannst du uns helfen Fehler aufzudecken, die nur Windows betreffen.
>
> Dass noch nicht alles funktioniert in der Version 0.3.0 sollte dir ja
> klar sein, da sie noch in Entwicklung ist. Also wenn mal eine Funktion
> nicht funktioniert kann das durchaus auch so "gewollt" sein.

:-) Das hast Richtig Erkannt,das ich mit Windows Arbeite genau.

Helfen tue ich euch dabei sehr gern. Das das ganze also die 0.3.0 noch 
quasi so zu sagen in den Kinderschuhen steckt,und noch reichlich Fehler 
besitzt ist mir ganz klar.


Naja ich sehe das ganze recht Positiv. Zumindest wenn ich mal was von 
der DB bei mir sehen könnte.

Ich versuche mir grad mal einen kleinen Überblick zu verschaffen, wie 
das ganze überhaupt Code technisch abläuft.
Um vtl sogar das Problem genauer Definieren zu können.

Das die Meldungen die ich vorhin als Fehler bezeichnete, keine sind ist 
mir auch grade aufgefallen, also mal wieder was gelernt.


Ich habe grade mal eben die Änderung der Methode wie Udo Neist beschrieb 
versucht, also das Ergebnis bleibt wie gehabt,weises Bild ohne jeglichen 
Inhalt. Was mir an genau dieser Methode auffiel das sie Auskommentiert 
also Grün war!

Edit: Ok da war ich wohl zu schnell :-)

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Du kannst meine Änderung wieder rückgängig machen, da ich die
> originale Methode nur auskommentiert habe.

Ist gemacht. Entweder bin ich zu blöd, oder es gibt in Google Code keine 
Möglichkeit, eine Änderung rückgängig zu machen bzw. eine frühere 
Revision wiederherzustellen?! Sollte doch eigentlich möglich sein würde 
ich meinen...

@ Marco tom Suden
Hast du mal die zwei Zeilen in die start_session.php eingefügt? hat das 
nichts gebracht?

Marco tom Suden schrieb:
> Ich versuche mir grad mal einen kleinen Überblick zu verschaffen, wie
> das ganze überhaupt Code technisch abläuft.
> Um vtl sogar das Problem genauer Definieren zu können.

Auskommentieren ist hier das Zauberwort :-D Nach wie vor das Nr. 1 
Debugwerkzeug bei mir :-)

von Udo N. (weinbauer73)


Lesenswert?

Ich kann im Moment dein Problem mit der weißen Seite nicht überprüfen, 
da ich wohl keine ganz aktuelle Datenbank habe. Mir fehlt die Tabelle 
"part-db.pricedetails". Ansonsten läuft nach dem erstmaligen Aufruf von 
install.php soweit alles, egal ob mit oder ohne meiner Änderung an 
vlibTemplate.php.

Ansonsten besteht die Frage, ob Javascript aktiv ist. Ohne JS 
funktioniert Part-DB nicht vollständig.

Edit: Muss wohl meine Datenbank mal löschen und neu aufbauen. Sind noch 
ein paar mehr SQL-Fehler aufgetaucht.

von Marco tom Suden (Gast)


Lesenswert?

Ja die Zeilen habe ich eingefügt.
In der config.php hab ich bisher nichts verändert.

Ergebnis ist bei mir zumindest so geblieben.

Nun hab ich aber auch keine neuen Einträge mehr in der php_error_log. 
Somit auch keine Meldungen mehr von bestehenden Fehlern etc.

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Ich kann im Moment dein Problem mit der weißen Seite nicht überprüfen,
> da ich wohl keine ganz aktuelle Datenbank habe. Mir fehlt die Tabelle
> "part-db.pricedetails".

Wenn du mit einer Datenbank der Version 12 beginnst, sollte alles 
Notwendige mit den Datenbankupdates nachgerüstet werden, auch die 
Tabelle "pricedetails". Wenn du also eine Part-DB Installation aus dem 
SVN-*Trunk* oder die noch ältere aus der Download-Seite (V0.2.2) hast, 
kannst du die Datenbank von dort kopieren und dann diese für Part-DB 
0.3.0 verwenden. Die wird dann entsprechend angepasst durch die 
DB-Updates.

Aber es gilt immernoch: Die Datenbank ist dann nicht mehr 
abwärtskompatibel, eine upgedatate DB kann also nicht mehr mit den 
stabilen Versionen von Part-DB verwendet werden. Daher nur mit Kopien 
der produktiven Datenbank arbeiten, nicht mit dem Original! :-)

@Marco tom Suden
Ich habe sonst auch keine Ahnung mehr wodurch das Problem verursacht 
werden könnte. Vielleicht findest du es ja noch raus. Ansonsten kann ich 
später eventuell auch selbst mal einen Windows Server aufsetzen zum 
probieren (trotz Windows-Allergie!^^).

von Udo N. (weinbauer73)


Lesenswert?

Ich hatte die Datenbankversion 13 genutzt. Wahrscheinlich war die etwas 
inkompatibel zu deiner Version und irgendein Update hat fehlgeschlagen. 
Ich werde da wohl von vorne anfangen müssen. Ich habe ja noch kein 
Produktivsystem am Start, alles nur für die Entwicklung.

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Ich hatte die Datenbankversion 13 genutzt. Wahrscheinlich war die etwas
> inkompatibel zu deiner Version und irgendein Update hat fehlgeschlagen.

Ja, ich musste ab und zu das Update von v12 auf v13 nochmal ändern, es 
ging nicht anders. Daher funktioniert auch die Online-Demo nicht mehr 
korrekt, da gibts auch noch Datenbankfehler. Man müsste nur wieder mal 
eine DB der Version 12 einspielen.

Udo Neist schrieb:
> Ich werde da wohl von vorne anfangen müssen. Ich habe ja noch kein
> Produktivsystem am Start, alles nur für die Entwicklung.

Für diesen Fall habe ich den Ordner "development/testfiles/database" 
erstellt. Ich habe dort meine DB v12 vom Produktivsystem abgelegt, damit 
auch Leute ohne eigenes Produktivsystem mit richtigen Datensätzen testen 
können: 
https://part-db.googlecode.com/svn/branches/uneist_kami89/development/testfiles/database/v12_kami89.sql

von Udo N. (weinbauer73)


Lesenswert?

Gute Idee :) Dann werde ich diesen Dump mal einspielen.

von Marco tom Suden (Gast)


Angehängte Dateien:

Lesenswert?

Hi ich meld mich grad noch a mal.

Ich habe das ganze mal über Wammp laufen lassen.

Selbes Resultat!

Dann habe ich das mit Fierfox ausprobiert, mit Meldung wie auf dem Bild.

Mir scheint es so als würde das Layout geladen aber kein Inhalt.

Da ich Chrome als Standard verwende,bekam ich über F12 unten eine Art 
Konsole,dort sieht man auch den geladenen Inhalt, aber was mir auffiel 
das die (/) bei den links einmal / und dann \ sind.

Ob da nun relevant ist weis ich grad nicht.
Zumindest betreffen die beiden Fehler, genau diese Zeilen.

Was mir der bzw die was im Grunde ein und das selbe ist,glaub ich 
mal,sagt ist das es lokal nicht erlaubt sei. Ok steht ja da. Aber wie 
Ändern?

von Marco tom Suden (Gast)


Lesenswert?

Ah ok wenn ich über die Konsole den Pfad Änder also von 
C:\wamp\www\part-db-0.3.0/startup.php in startup.php also nur die php 
datei angebe,

zeigt er mir alles an.

Nur wo sind diese angegeben? da sie beim erneuten laden wieder so sind 
wie vorher.


Es sind da aber noch weitere Probs aber dazu komme ich Später wenn alles 
läuft.

von Udo N. (weinbauer73)


Lesenswert?

Ich gehe mal stark davon aus, dass
1
 define('BASE', dirname(__FILE__));
2
 define('DOCUMENT_ROOT', rtrim($_SERVER['DOCUMENT_ROOT'], '/'));
3
 define('BASE_RELATIVE', str_replace(DOCUMENT_ROOT, '', BASE.'/'));
das Problem sein dürfte. Die Definition der Basisverzeichnisse ist unter 
Linux richtig. Vielleicht macht da Wamp Probleme. Mangels letzterem kann 
ich da nicht viel dazu sagen.

von Marco tom Suden (Gast)


Angehängte Dateien:

Lesenswert?

So habs habe in der vlib_frameset.tmpl Folgende Einträge entfernt,bzw 
geändert:

<frameset cols="300,*" frameborder="0" framespacing="0" border="0">
            <frame name="navigation_frame" src="{TMPL_VAR 
NAME="relative_path"}navigation.php">
            <frame name="content_frame" src="{TMPL_VAR 
NAME="relative_path"}startup.php">
        </frameset>

in

<frameset cols="300,*" frameborder="0" framespacing="0" border="0">
            <frame name="navigation_frame" src="navigation.php">
            <frame name="content_frame" src="startup.php">
        </frameset>


Also nur ( {TMPL_VAR NAME="relative_path"} ) entfernt und nun läuft es 
soweit.

Nur sieht es bei mir nun so aus wie auf dem Bild.

Hat jmd ne Lösung?

von Udo N. (weinbauer73)


Lesenswert?

Ersetze in start_session.php folgende Zeile
1
 define('BASE_RELATIVE', str_replace(DOCUMENT_ROOT, '', BASE.'/'));
durch
1
 define('BASE_RELATIVE', '');
und du hast das gleiche für alle Templates erreicht.

von Marco tom Suden (Gast)


Lesenswert?

Udo Neist schrieb:
> Ersetze in start_session.php folgende Zeile define('BASE_RELATIVE', 
str_replace(DOCUMENT_ROOT, '', BASE.'/'));
> durch define('BASE_RELATIVE', '');
> und du hast das gleiche für alle Templates erreicht.

Das geht nun aber runter wie butter. Es Läuft!


Was ist eigentlich damit gemeint?

Die SVN Revision konnte nicht aus 
"C:\wamp\www\part-db-0.3.0/.svn/entries" gelesen werden.


Scheint jedoch auch was damit zu tun zu haben wegen \.../, oder?

An sich sieht das schon ganz ordentlich aus. sogar meine Alte Database 
aus 0.2.2 geht. Also die Inhalte zumindest.

Dan kann es ja so langsam auf Fehler, bzw Bug suche gehen.

von Udo N. (weinbauer73)


Lesenswert?

Marco tom Suden schrieb:
> Was ist eigentlich damit gemeint?
>
> Die SVN Revision konnte nicht aus
> "C:\wamp\www\part-db-0.3.0/.svn/entries" gelesen werden.

Das ist nur eine Meldung, dass in der Datei die Revisionsangabe fehlt. 
Anscheinend wurde das Format dieser Datei geändert, denn in älteren 
Versionen von SVN konnte man dies auslesen. Wahrscheinlich ist das ganze 
in eine SQLite-Datenbank mit dem Namen wc.db gewandert. Manche Server 
verbieten Shellzugriffe von PHP aus und daher wurde von "svnversion" per 
system() in get_svn_revision() auf eine manuelle Lösung umgestellt. Die 
funktioniert halt nicht mehr. Ich begebe mich mal auf die Suche nach 
einer Lösung.

von Udo N. (weinbauer73)


Angehängte Dateien:

Lesenswert?

Ein Glück hatte ich erst vor kurzem das Firefox-Addon SQLite-Manager 
installiert ;-) Folgendes habe ich gefunden: Die wc.db enthält in der 
Tabelle eine Spalte 'revision', in der die gewünschte Information 
gespeichert ist.

von Gelöscht (kami89)


Lesenswert?

@Marco tom Suden

Könntest du mal die folgenden Zeilen ganz am Anfang in die 
start_session.php schreiben, und dann die Ausgaben hier reinstellen?
1
print 'dirname='.dirname(__FILE__).'<br>';
2
print 'docroot='.$_SERVER['DOCUMENT_ROOT'].'<br>';

Das nervt echt dass Linux und Windows unterschiedliche Trennzeichen in 
Dateipfaden verwenden. In den PHP-Dateien könnte man dafür die Konstante 
"DIRECTORY_SEPARATOR" verwenden, doch in den *.tmpl Dateien ist es etwas 
mühsamer. OK man könnte dort auch so eine Konstante erstellen...Ich muss 
aber erst mal rausfinden ob das überhaupt notwendig ist, denn unter 
Windows laufen die Webseiten, die Linux-Dateipfade verwenden, 
normalerweise ja auch.

Die SVN-Fehlermeldung kommt bei mir auch, bei SVN hat das Dateiformat 
mal geändert und ich kam bisher noch nicht dazu, das anzupassen. Danke 
Udo, dass du die Recherche gleich selbst übernommen hast :-)

Udo Neist schrieb:
> Ersetze in start_session.php folgende Zeile
>  define('BASE_RELATIVE', str_replace(DOCUMENT_ROOT, '', BASE.'/'));
> durch
>  define('BASE_RELATIVE', '');

Und wie siehts mit dieser Variante aus, funktionierts so auch?
1
define('BASE_RELATIVE', str_replace(DOCUMENT_ROOT, '', BASE.DIRECTORY_SEPARATOR));

von Udo N. (weinbauer73)


Lesenswert?

Keine Ursache, Urban :-) Hauptsache man kann wieder einen Bug mehr von 
der Liste streichen.

von Marco tom Suden (Gast)


Lesenswert?

Also die Ausgabe:
dirname=C:\wamp\www\part-db-0.3.0
docroot=C:/wamp/www/


Bei dem:

define('BASE_RELATIVE', str_replace(DOCUMENT_ROOT, '', 
BASE.DIRECTORY_SEPARATOR));

Bleibt wie vorhin das bild weiß!,
jedoch sind die Pfadangaben mit den \ durchgehend einheitlich.

C:\wamp\www\part-db-0.3.0\navigation.php



PS: (Is nur nebenbei bemerkt!)

Hab grade mal das Greenway Theme mal angesehen und mit dem bild
http://1.2.3.12/bmi/www.mikrocontroller.net/wikifiles/thumb/5/56/Greenway.png/150px-Greenway.png

Verglichen,da ist bis auf Grüne schrift alles wie bei dem Standard. Aber 
da habe ich schon die 2 Bilder von der 0.2.2 genommen. Muss nur noch ein 
wenig angepasst werden.

von Udo N. (weinbauer73)


Lesenswert?

Greenway ist eine Variation des Standards und kein eigenes Thema. Ich 
denke, nach dem Abschluss der 0.3er Entwicklung werden wir die Frames 
ablösen und auch neue Themen anbieten können.

von Marco tom Suden (Gast)


Lesenswert?

Udo Neist schrieb:
> Greenway ist eine Variation des Standards und kein eigenes Thema. Ich
> denke, nach dem Abschluss der 0.3er Entwicklung werden wir die Frames
> ablösen und auch neue Themen anbieten können.

Ahso ok. Oder so.

Meinte nur, da das auf bild, bei mir halt nicht so aussieht.

Aber wenn das so ist,ist das auch ok.

von Gelöscht (kami89)


Lesenswert?

Marco tom Suden schrieb:
> Also die Ausgabe:
> dirname=C:\wamp\www\part-db-0.3.0
> docroot=C:/wamp/www/

Danke! Ist ja lustig dass es einmal mit Slash und einmal mit Backslash 
daherkommt...das ist doch total verwirrend.

Ich glaube, jetzt habe ich den Fehler aber gefunden. Versuch mal das 
hier:
1
define('BASE', dirname(__FILE__));
2
define('DOCUMENT_ROOT', rtrim($_SERVER['DOCUMENT_ROOT'], '/\ '));
3
define('BASE_RELATIVE', str_replace(DOCUMENT_ROOT, '', BASE.DIRECTORY_SEPARATOR));

mfg

von Marco tom Suden (Gast)


Angehängte Dateien:

Lesenswert?

So zeigt er mir das

Urban B. schrieb:
> Ich glaube, jetzt habe ich den Fehler aber gefunden. Versuch mal das
> hier:define('BASE', dirname(_FILE_));
> define('DOCUMENT_ROOT', rtrim($_SERVER['DOCUMENT_ROOT'], '/\ '));
> define('BASE_RELATIVE', str_replace(DOCUMENT_ROOT, '', 
BASE.DIRECTORY_SEPARATOR));

So zeigt er mir das damit.

Bei mir läuft das wenn ich folgende Zeilen eingebe:

define('BASE', dirname(_FILE_));
define('DOCUMENT_ROOT', rtrim($_SERVER['DOCUMENT_ROOT'], '/'));
define('BASE_RELATIVE', '');

Damit werden sogar die Kommentare Grau ( /\ ),
so rum  bleiben sie normal ( \/ )

Es legt definitiv an diese Zeile:

define('BASE_RELATIVE', '');

Wenn ich diese Auskommentiere und die
define('BASE_RELATIVE', str_replace(DOCUMENT_ROOT, '', verwende geht 
nichts.

Die Zeile mit \/ bei dir ist's andersrum Funktioniert bei mir, /\ so rum 
jedoch nicht.

Also schließe ich diese aus.

Da geb ich dir recht das verwirrt einen, mal so rum und mal so hmm.

Wofür ist die Zeile: define('BASE_RELATIVE', ''); denn zuständig bzw wo 
oder was greift denn darauf zu?


PS: Wie ist das eigentlich wenn ich z.B einen Bug oder so behoben hab 
oder ähnlich. Euch das zugänglich zu machen, ohne das das mit den 
Vorhandenen Dateien in Konflikt gerät?

von Gelöscht (kami89)


Lesenswert?

Jetzt fehlt das Leerzeichen von '/\ ', dann wirkt der Backslash als 
Steuerzeichen oder wie man das nennt. Besser wären eigentlich zwei 
Backslashes hintereinander. Aber ich habe noch ein anderes Problem 
bemerkt, jetzt sieht es so aus:
1
define('BASE', dirname(__FILE__));
2
define('DOCUMENT_ROOT', rtrim($_SERVER['DOCUMENT_ROOT'], '/\\'));
3
define('BASE_RELATIVE', str_replace(str_replace('/', DIRECTORY_SEPARATOR, DOCUMENT_ROOT), '', BASE.DIRECTORY_SEPARATOR));

Wenn das immer noch nicht funktioniert, dann setz BASE_RELATIVE mal von 
Hand. Welche dieser beiden Varianten funktioniert?
1
define('BASE_RELATIVE', '/part-db-0.3.0/');
2
define('BASE_RELATIVE', '\part-db-0.3.0\');

Marco tom Suden schrieb:
> Wofür ist die Zeile: define('BASE_RELATIVE', ''); denn zuständig bzw wo
> oder was greift denn darauf zu?

Damit können Pfadangaben (Links und Bilder) immer relativ zum 
Verzeichnis des Webservers angegeben werden, bei dir also z.B. 
"/part-db-0.3.0/ordner/datei.xy". Das funktioniert dann auch unabhängig 
davon, ob das Ziel eines Pfades im gleichen Ordner wie die ausgeführte 
Datei liegt oder irgendwo ganz anders. Möchte man in der Datei 
/part-db-0.3.0/ordner/xy.php die Grafik /part-db-0.3.0/img/xy.png 
einbinden, braucht es kein Link wie "../img/xy.png", sondern ganz 
einheitlich BASE_RELATIVE."img/xy.png", was dann durch 
"/part-db-0.3.0/img/xy.png" ersetzt wird.

Ich weiss aber nicht ob das auch unter Windows so funktioniert bzw. ob 
ein Pfad mit Slashes oder Backslashes verlangt wird. Ich hoffe, du 
kannst es rausfinden mit dem testen der obigen Codezeilen :-)

Marco tom Suden schrieb:
> PS: Wie ist das eigentlich wenn ich z.B einen Bug oder so behoben hab
> oder ähnlich. Euch das zugänglich zu machen, ohne das das mit den
> Vorhandenen Dateien in Konflikt gerät?
Hmm wie meinst du das genau? Also das einfachste ist, wenn du nur die 
geänderten Codezeilen hier postest, dann können wir das überprüfen und 
einbauen.

von Uhu U. (uhu)


Lesenswert?

Urban B. schrieb:
> Ausserdem habe ich noch erste Versuche mit SQLite gestartet.

Das halte ich nicht für notwendig. Ich bin auch nicht gerade 
Datenbankexperte, hatte aber mit MySQL (unter Linux) bisher keine 
unüberwindbaren Probleme.

Je mehr Möglichkeiten man im Unterbau versteckt, desto mehr kann schief 
gehen und um so schwieriger wird es im Zweifelsfall, dahinterzukommen, 
was gerade schief gegangen ist.

von Gelöscht (kami89)


Lesenswert?

Uhu Uhuhu schrieb:
> Das halte ich nicht für notwendig. Ich bin auch nicht gerade
> Datenbankexperte, hatte aber mit MySQL (unter Linux) bisher keine
> unüberwindbaren Probleme.

Dass wir damit keine Probleme haben, heisst noch lange nicht, dass 
andere auch keine Probleme damit haben :-)
Ausserdem ist das Erstellen von Backups mit SQLite noch ein wenig 
einfacher, da man nur eine Datei sichern muss. Verwendet man MySQL, ist 
z.B. MySQLDumper eine Möglichkeit, doch das ist auch schon wieder ein 
Mehraufwand.

Ausserdem ist es ja nicht so, dass man für SQLite das Rad neu erfinden 
muss. Ich weiss nicht ob du mitgekriegt hast, dass ab Version 0.3.0 ein 
PDO (http://php.net/manual/de/book.pdo.php) zum Einsatz kommt. Das 
erleichtert einem die Unterstützung für verschiedene Datenbanken enorm.

Ich muss mir das dann nochmal genau anschauen, aber ich vermute, 
schlussendlich müssen nur die Update-Schritte leicht umgeschrieben 
werden, damit sie bei beiden Datenbanken funktionieren. Ich habe mal 
meine MySQL Datenbank in SQLite umgewandelt, Part-DB hat damit dann 
sofort funktioniert ohne zu knurren. Einzig die Updateschritte müssen 
wohl angepasst werden, und das ist ja keine grosse Sache wenn man mal 
weiss worauf man achten muss. Das, was ich bisher schonmal rausgefunden 
habe, schrieb ich schonmal in die db_update_steps.php rein, damit dort 
jeder nachlesen kann worauf man achten muss:
https://part-db.googlecode.com/svn/branches/uneist_kami89/updates/db_update_steps.php
Nach dem Schreiben eines Update-Schrittes sollte man halt schnell mit 
beiden Datenbanken probieren obs funktioniert, das ist aber keine grosse 
Sache...

Übrigens soll auch die Geschwindigkeit für eher kleinere Datenbanken bei 
SQLite ein Stück höher sein als bei MySQL. Für den Hobby-Anwender bringt 
SQLite also eigentlich nur Vorteile mit sich, ich persönlich würde 
vielleicht sogar auch auf SQLite umsteigen, einfach weil es 
unkomplizierter ist.

von Uhu U. (uhu)


Lesenswert?

Urban B. schrieb:
> Nach dem Schreiben eines Update-Schrittes sollte man halt schnell mit
> beiden Datenbanken probieren obs funktioniert, das ist aber keine grosse
> Sache...

Tja, doppelter Testaufwand... Ich habe einige Erfahrung mit 
Softwaretests und Fehlersuche nach Abstürzen beim Anwender und mein Sinn 
für diese Metier sagt mir: "tus nicht und schon gar nicht ohne Not".

Stecke die Arbeit lieber in eine sehr solide Installationsroutine mit 
Diagnose und unterstütze den Einsatz der für die DB gebräuchlichen 
Datensicherungstools so, daß auch ein unbedarfter Nutzer damit klar 
kommt.

von Gelöscht (kami89)


Lesenswert?

Uhu Uhuhu schrieb:
> Tja, doppelter Testaufwand... Ich habe einige Erfahrung mit
> Softwaretests und Fehlersuche nach Abstürzen beim Anwender und mein Sinn
> für diese Metier sagt mir: "tus nicht und schon gar nicht ohne Not".

Ja, grundsätzlich gebe ich dir da recht, keine Frage. Ich finde aber, 
dass SQLite doch ziemlich starke Vorteile für den Endanwender mit sich 
bringt. Einerseits natürlich die einfachere Handhabung bei der 
Installation (der User muss nicht selbst eine Datenbank anlegen), 
andererseits ermöglicht SQLite es uns Entwicklern, die Datenbankbackups 
selbst zu übernehmen. Heisst also, wenn SQLite eingesetzt wird, kann 
Part-DB z.B. vor jedem Datenbankupdate selbstständig ein Backup der DB 
anlegen. Der Benutzer bekommt so völlig "kostenlos" eine höhere 
Sicherheit. Aber auch die regelmässigen Backups könnte Part-DB dann 
übernehmen.

Nutzt der Benutzer MySQL, können wir nicht viel mehr machen, als bei der 
Installation einen Hinweis einzublenden wie "Machen Sie regelmässig und 
vor jedem Datenbankupdate ein Backup!". Und dann ist da noch die 
Möglichkeit, sich einen Link im Menü von Part-DB zu erstellen, die dann 
z.B. zu MySQLDumper führt.

Aber mal ehrlich: Es wissen sooo viele Leute, dass man regelmässig 
Backups machen sollte. Nur, wieviele davon machen es wirklich? Leider 
nur ein Bruchteil davon. Ähnlich wird es wohl auch bei Datenbanken sein.

Daher finde ich es wichtig, dass Part-DB die Backups selbstständig 
anlegen kann. Nach Zeitplan, und vor jedem Datenbankupdate. Nur ist das 
bei MySQL sehr aufwändig und fehleranfällig, bei SQLite hingegen ist es 
ein Kinderspiel.

Ich könnte mir dann sogar vorstellen, dass SQLite zur Standarddatenbank 
von Part-DB wird, also schon voreigestellt ist bei der Installation.

Und wenn dann theoritisch wirklich mal ein DB-Update schief laufen 
würde, wäre es kein Problem, da der ursprüngliche Zustand ja dank des 
Backups ganz einfach wiederhergestellt werden kann :-) Das kann 
natürlich vollautomatisch ablaufen, ohne Eingriffe des Benutzers. Bei 
MySQL wüsste ich aber nicht mal, wie man vor einem Update zuerst ein 
Backup erstellen könnte. Mehr als ein Hinweis "Machen Sie jetzt ein 
Backup!" fällt mir da nicht ein. Wird das Backup nicht gemacht, hat der 
Benutzer ein Problem wenn beim Update etwas schief läuft...Dann kann man 
die DB nur noch von Hand retten, also alle Updateschritte z.B. in 
phpMyAdmin durchführen.

Wenn du eine gute Möglichkeit zur Sicherung/Wiederherstellung einer 
MySQL Datenbank kennst, die nicht allzu aufwändig ist und trotzdem 
zuverlässig funktioniert und sich gut in Part-DB integrieren lässt, wäre 
das natürlich auch super. Doch solange ich keine solche Möglichkeit 
kenne, ist für mich SQLite interessanter weil wir den Benutzern mehr 
Sicherheit bieten können.

Versteh mich nicht falsch - ich will nicht MySQL schlechtmachen oder so. 
Ich finde einfach, die Sicherheit der Datenbanken der Part-DB-Benutzer 
hat höchste Priorität. Diese Sicherheit können wir mit SQLite problemlos 
bieten, bei MySQL hingegen müssen wir die Verantwortung dem Benutzer 
abgeben. Wer MySQL nutzen möchte, kann dies natürlich machen, doch dann 
muss er sich auch selber um die Backups kümmern.

Uhu Uhuhu schrieb:
> Stecke die Arbeit lieber in eine sehr solide Installationsroutine mit
> Diagnose

Das kommt sowieso, unabhängig davon ob nun SQLite auch eingebaut wird 
oder nicht :-) Angefangen habe ich schonmal damit (install.php), ist 
aber erstmal nur rudimentär, das wird noch ausgebaut.

mfg

von Marco tom Suden (Gast)


Angehängte Dateien:

Lesenswert?

Urban B. schrieb:
> Jetzt fehlt das Leerzeichen von '/\ ', dann wirkt der Backslash als
> Steuerzeichen oder wie man das nennt. Besser wären eigentlich zwei
> Backslashes hintereinander. Aber ich habe noch ein anderes Problem
> bemerkt, jetzt sieht es so aus:define('BASE', dirname(_FILE_));
> define('DOCUMENT_ROOT', rtrim($_SERVER['DOCUMENT_ROOT'], '/\\'));
> define('BASE_RELATIVE', str_replace(str_replace('/', DIRECTORY_SEPARATOR, 
DOCUMENT_ROOT), '', BASE.DIRECTORY_SEPARATOR));

Also ich hab das mal versucht, soweit läuft das.

Aber! der Ganze bereich Verwaltung / Tools ist nicht erreichbar (Not 
Found

The requested URL /part-db-0.3.0/part-db-0.3.0system_config.php was not 
found on this server.)

Alles andere wie Baugruppen und die Kategorien sind aufrufbar!



define('BASE_RELATIVE', '/part-db-0.3.0/'); Funktioniert komplett!,also 
auch Verwaltung und co.

Bei define('BASE_RELATIVE', '\part-db-0.3.0\');bekomme ich eine Meldung,

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in 
C:\wamp\www\part-db-0.3.0\start_session.php on line 83

Demnach wird alles unterhalb der Zeile ausgegraut,quasi Grauer Text!

Habe die laufende start_session.php mit denen genannten Änderungen mal 
angehängt.

von Gelöscht (kami89)


Lesenswert?

Marco tom Suden schrieb:
> define('BASE_RELATIVE', '/part-db-0.3.0/'); Funktioniert komplett!,also
> auch Verwaltung und co.

OK damit weiss ich jetzt dass Windows da auch Slashes haben will, und 
nicht Backslashes. Ich habe die start_session.php nochmals angepasst, 
jetzt müsste es eigentlich für Linux und Windows korrekt funktionieren. 
Die neue Version ist schon im SVN, einfach schnell updaten lassen.

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Hallo Urban,

Ich schreibe euch mal wie die Datensicherung EleLa macht:

Ich habe das mit der Datensicherung der MySQL DB in EleLa relativ leicht 
gelöst:
- Man wählt die Sicherungsdatei aus, die ist eine SQLite Datenbank
- Darauf hin erstellt EleLa eine komplett neue SQLite Datenbankdatei mit 
allen Tabellen (ich gehe mal davon aus, das kann PHP genauso machen, 
nicht existierende Datei angeben und CREATE TABLE ...)
- Kopiert alle Datensätze von MySQL dort hinein.

Daraus ergeben sich 3 Vorteile:
- Die Sicherungsdatei ist automatisch eine Datenbank, die direkt mit 
EleLa weiter benutzt werden kann (z.B. wenn man mal was in der Sicherung 
kontrollieren möchte, und man muss das Backup nicht zurück spielen)
- Supereinfach zu Implementieren
- Die aktuelle Programm-Version kennt die Datenstruktur und macht in 
jedem Fall ein korrektes Backup.

Beim zurück spielen des Backups geht EleLa so vor:
- Überprüfung der Version der Sicherung, ggf Update der Datenbankdatei, 
denn ein Zurückspielen benötigt die gleiche Struktur
- Löschen aller MySQL Daten und zurückspielen der Daten, einzeln je 
Tabelle

Vielleicht hilft das euch ja. Wenn Ihr Tipps benötigt, was die 
Kompatibilität der SQL Befehle usw. angeht kann ich auch helfen. 
MySQL/SQLite haben nur wenige Unterschiede.

Ich hatte zu Anfang auch größere Anfragen, weil der einfache User sich 
mit MySQL/Einrichtung schwer tut. Jetzt da EleLa auch einfach mit einem 
einfachen Setup und SQLite funktioniert gibt es kaum noch Rückfragen.

von Udo N. (weinbauer73)


Lesenswert?

Wir könnten dem User für das Backup der MySQL-Datenbank ja ein kleines 
Shellscript an die Hand geben, das er/sie dann in /etc/cron.* kopiert. 
Bei den meisten Linux-Distris sollte ein Wrapper dann diese Scripte 
automatisch im Kontext von cron ausführen. Unter Windows gibts auch 
einen Scheduler, aber fragt mich nicht, wie man den quasi von Part-DB 
aus einrichten könnte.

von Gelöscht (kami89)


Lesenswert?

Markus Müller schrieb:
> Hallo Urban,
>
> Ich schreibe euch mal wie die Datensicherung EleLa macht:

Hallo Markus,

Danke für die Info, ist tatsächlich eine sehr elegante Lösung die du da 
gefunden hast! Ich denke, ich werde mir das mal genauer anschauen, 
vielleicht wäre das für uns wirklich auch eine gute Lösung.

Markus Müller schrieb:
> Vielleicht hilft das euch ja. Wenn Ihr Tipps benötigt, was die
> Kompatibilität der SQL Befehle usw. angeht kann ich auch helfen.
> MySQL/SQLite haben nur wenige Unterschiede.

Ja, ich habe eben festgestellt dass nur die Datenbank-Updates (Struktur 
anpassen) von den Inkompatibilitäten betroffen sind, z.B. dass es 
AUTOINCREMENT anstatt AUTO_INCREMENT heisst. Für die Benutzung braucht 
man solche Befehle aber nicht, da läuft auch SQLite ohne jegliche 
Anpassung auf Anhieb. Zumindest konnte ich nach einem kurzen Test noch 
keine Probleme feststellen.

Und die Anpassung der Updateroutinen ist nunmal nicht wirklich eine 
riesige Sache, meistens werden eh nur ganz kleine Sachen verändert. Nur 
grad jetzt für die Version 0.3.0 gibt es sehr viele Änderungen. Da die 
ganze Entwicklung für die 0.3.0 aber eh schon sehr lange dauert, kommt 
es nicht mehr drauf an ob man nun das grosse Datenbankupdate zusätzlich 
auch noch SQLite-kompatibel macht.

Markus Müller schrieb:
> Ich hatte zu Anfang auch größere Anfragen, weil der einfache User sich
> mit MySQL/Einrichtung schwer tut. Jetzt da EleLa auch einfach mit einem
> einfachen Setup und SQLite funktioniert gibt es kaum noch Rückfragen.

Also werden nur die Backups als SQLite abgespeichert, oder kann man auch 
direkt von Anfang an mit SQLite arbeiten?

Udo Neist schrieb:
> Wir könnten dem User für das Backup der MySQL-Datenbank ja ein kleines
> Shellscript an die Hand geben, das er/sie dann in /etc/cron.* kopiert.

Da gibts aber zwei Probleme:
- Erstens wird so sicher kein einfacher Benutzer mehr ein Backup machen, 
weil er damit nicht zurechkommt, es ist einfach zu kompliziert
- Zweitens läuft diese Variante so nicht auf jedem gemieteten Webserver 
(Hoster). Klar gibt es meistens auch cron, doch ich wüsste nichtmal wie 
man sowas einrichtet. Ein Backup einer SQLite Datenbank hingegen 
funktioniert problemlos auch auf einem Webspace. Und auch der Vorschlag 
von Markus dürfte dort problemlos funktionieren.

mfg

von Uhu U. (uhu)


Lesenswert?

Urban B. schrieb:
> (der User muss nicht selbst eine Datenbank anlegen)

Das kann auch die Installationsroutine erledigen.

> wenn SQLite eingesetzt wird, kann
> Part-DB z.B. vor jedem Datenbankupdate selbstständig ein Backup der DB
> anlegen.

PHP kann doch ein Shell-Skript, bzw. das Windows-Äquivalent dazu 
starten, oder nicht?

> Versteh mich nicht falsch - ich will nicht MySQL schlechtmachen oder so.

Mir geht es nicht um MySQL - hätten wir SQLite, dann wäre meine 
Argumentation gegenüber MySQL dieselbe -, sondern um den Testaufwand. 
Wir unterstützen zwei Betriebssysteme und wenn wir dann auch noch zwei 
Datenbanken unterstützen, dann muß - wenn man es solide machen will - 
schon der vierfache Testaufwand betrieben werden.

Wie gründlich man als Entwickler sowas dann letztlich macht, wirst du 
selbst wissen. Mein innerer Schweinehund hat mich meistens davor 
bewahrt, das auch nur annähernd gründlich genug zu tun und die Quittung 
kam dann mit ziemlicher Sicherheit hinterher.


Markus Müller schrieb:
> Ich habe das mit der Datensicherung der MySQL DB in EleLa relativ leicht
> gelöst:
> - Man wählt die Sicherungsdatei aus, die ist eine SQLite Datenbank

Warum sicherst du in eine SQLite DB?


Ich habe in einem Rails-Projekt recht gute Erfahrungen mit dem 
Dump-Programm von MySQL gemacht. Das kickt man an und schon hat man eine 
Textdatei, die alle Daten enthält, mit der man eine leere DB befüllen 
kann und das Anlegen einer leeren DB kann man per Skript machen, das aus 
der Installationsroutine angekickt wird.

von Gelöscht (kami89)


Lesenswert?

Uhu Uhuhu schrieb:
> PHP kann doch ein Shell-Skript, bzw. das Windows-Äquivalent dazu
> starten, oder nicht?

Uhu Uhuhu schrieb:
> Ich habe in einem Rails-Projekt recht gute Erfahrungen mit dem
> Dump-Programm von MySQL gemacht. Das kickt man an und schon hat man eine
> Textdatei, die alle Daten enthält, mit der man eine leere DB befüllen
> kann und das Anlegen einer leeren DB kann man per Skript machen, das aus
> der Installationsroutine angekickt wird.

Ja, genau so hatten wir es schonmal eingebaut, das funktioniert auch 
wunderbar solange man genügend Rechte hat, so ein Skript 
auszuführen. Unser Ziel ist es aber, dass Part-DB weitgehendst auch 
auf einem einfachen Webspace läuft - und da ist dann häufig nix mehr mit 
Skripte ausführen, weil exec() vom Hoster gesperrt ist.

von Marco tom Suden (Gast)


Lesenswert?

Urban B. schrieb:
> OK damit weiss ich jetzt dass Windows da auch Slashes haben will, und
> nicht Backslashes. Ich habe die start_session.php nochmals angepasst,
> jetzt müsste es eigentlich für Linux und Windows korrekt funktionieren.
> Die neue Version ist schon im SVN, einfach schnell updaten lassen.

Jo hab das update gemacht wie du sagtest,mit der aus der svn.

Also es läuft super. Fehler hinsichtlich dessen habe ich keine mehr.

Damit währe glaube ich mal diese Punkt abgehakt,oder.

Was is denn sonst noch so auf der Bug-list oder wie man das jetzt 
nennt?.

von Gelöscht (kami89)


Lesenswert?

Marco tom Suden schrieb:
> Damit währe glaube ich mal diese Punkt abgehakt,oder.

Jup, die Pfad-Konstanten sollten somit (hoffentlich) auf allen Systemen 
funktionieren.

Marco tom Suden schrieb:
> Was is denn sonst noch so auf der Bug-list oder wie man das jetzt
> nennt?.

Nun, da sind noch einige Sachen. Zum richtig Testen ist es eigentlich 
noch zu früh denke ich. Eine ToDo-Liste gibts noch in der 
Quellcode-Dokumentation (nicht alle Punkte betreffen aber die Version 
0.3.0 - einige können noch länger warten, z.B. die System-Updates und 
die Benutzerverwaltung).
Wenn du in der config.php die Einstellung "developer_mode" auf "true" 
stellst, kommt ein neuer Menüpunkt "Entwickler-Werkzeuge" zum Vorschein, 
dort drin ist dann der Link zur Quellcode-Dokumentation.

Wichtig wäre mir in nächster Zeit mal jemand der sich mit Datenbanken 
etwas besser auskennt, da einige kompliziertere Abfragen noch nicht 
genau das machen was sie sollten :-)

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

>z.B. dass es AUTOINCREMENT anstatt AUTO_INCREMENT heisst

Bei SQLite deklariere ich das Feld nur als "INTEGER NOT NULL PRIMARY 
KEY" und es ist automatisch ein Autoincrement-Feld.

EleLa merkt sich den CREATE TABLE Code als SQLite Syntax. Dazu habe ich 
eine Routine geschrieben "ChgQueryCreateSQL()", die biegt alles um auf 
MySQL und PostgreSQL. Feldtypen, AutoIncrement und Indize.
Wichtig ist, dass Felder mit der gleichen Funktion auch den gleichen 
Name haben, wie "ID" "Bezeichnung" "Beschreibung" "AendDatum" um die 
globalen Funktionen besser nutzen zu können.

>Also werden nur die Backups als SQLite abgespeichert, oder kann man auch
>direkt von Anfang an mit SQLite arbeiten?

EleLa kann SQLite, MySQL und PostgreSQL. Nach dem ersten Setup wird man 
in der Regel mit SQLite beginnen um mal rein schnuppern zu können ob 
einem überhaupt das Programm gefällt und es sind auch schon einige 
Datensätze (Widerstände) vorhanden.
Jederzeit kann man auf MySQL oder PostgreSQL wechseln.
Wenn man in EleLa nur die Verbindungsdaten des MySQL Servers eingibt, so 
kann EleLa mit einem Tastenklick eine neue Datenbank samt aller Tabellen 
automatisch anlegen (der MySQL-User muss natürlich die Rechte haben). 
Ein Import der bestehenden SQLite Daten in MySQL und man hat innerhalb 
weniger Sekunden MySQL als Server.
Mit EleLa ist der Wechsel der Datenbank ein Kinderspiel und alles 
Menügeführt.

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Uhu Uhuhu schrieb:
> Warum sicherst du in eine SQLite DB?

Hier in der Doku ist das ganze beschrieben:
http://www.mmvisual.de/Hilfe/EleLa/ExtraExp.htm

von Gelöscht (kami89)


Lesenswert?

Markus Müller schrieb:
> EleLa merkt sich den CREATE TABLE Code als SQLite Syntax. Dazu habe ich
> eine Routine geschrieben "ChgQueryCreateSQL()", die biegt alles um auf
> MySQL und PostgreSQL. Feldtypen, AutoIncrement und Indize.

So ähnlich habe ich mir das auch vorgestellt. Da Part-DB bis jetzt nur 
MySQL unterstützte, sind alle Updatebefehle auch in MySQL Syntax 
gespeichert. Nun habe ich in der Updateroutine einfach mal ein 
rudimentärer "Konverter" eingebaut, der eben z.B: ein "AUTO_INCREMENT" 
automatisch durch ein "AUTOINCREMENT" ersetzt, oder sowas wie 
"ENGINE=InnoDB" entfernt.

Ich habe auch festgestellt dass mit SQLite das hier nicht funktioniert:
1
INSERT INTO tabelle SET key=value
Das hier funktionier hingegen bei SQLite und MySQL:
1
INSERT INTO tabelle (key) VALUES (value)

Schlussendlich müssen wir Entwickler uns einfach darauf einigen, dass 
immer die zweite Variante verwendet wird. Das sollte eigentlich kein 
Problem sein, an andere Code-Guidelines halten wir uns ja auch.
Und wenn wirklich mal eine fehlerhafte Datenbankabfrage in ein Release 
kommt - davon geht die Welt auch nicht unter. Ausser der Fehler passiert 
beim Datenbankupdate und es existiert kein Backup - dieses Problem 
hätten wir aber bei SQLite sicher nicht, und wenn wir dein System für 
das Backup einer MySQL Datenbank auch noch einbauen, existiert das 
Problem auch bei MySQL nicht mehr.

Markus Müller schrieb:
> EleLa kann SQLite, MySQL und PostgreSQL. Nach dem ersten Setup wird man
> in der Regel mit SQLite beginnen um mal rein schnuppern zu können ob
> einem überhaupt das Programm gefällt

Genau sowas finde ich für Einsteiger sehr wichtig, darum "kämpfe" ich ja 
auch für die Unterstützung von Part-DB für SQLite :-)
Auch der Installer, den es bisher noch nicht gab, finde ich wichtig. Ich 
bin mir ziemlich sicher, dass schon viele Leute Part-DB runtergeladen 
haben, dann aber mit dem Einrichten überfordert waren und es aufgegeben 
haben. Das ist natürlich schade, denn mit einem benutzerfreundlichem 
Installer und SQLite-Datenbank lässt sich das weitgehendst verhindern.

Dass man auch einfach zwischen verschiedenen Datenbanken wechseln kann, 
ist für den Anfang sicher nicht notwendig. Später, wenn wir mehr Zeit 
für solche Sachen haben, könnte man natürlich immernoch einen 
"Konverter" einbauen. Momentan haben wir aber wichtigere Sachen zu tun 
:-)

EDIT:
Ich habe in unseren "Issues" gleich mal einen Link eingefügt zur 
Beschreibung der Datenbanksicherung von Markus: 
https://code.google.com/p/part-db/issues/detail?id=3

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

>Später, wenn wir mehr Zeit für solche Sachen haben

Ja, klar. War bei mir am Anfang auch nicht drin und kam erst später.
Macht erst mal weiter mit eurem Projekt und bringt das auf einen guten 
Stand.

Irgend wann einmal, wenn PartDB gut läuft können wir auch mal dran gehen 
und EleLa/PartDB von der Datenstruktur her angleichen, dann wäre EleLa 
und PartDB mit dem gleichen Datenbestand nutzbar. Ein Front-End für 
Lokal und eines Internettauglich :-)
Im moment sind die noch zu verschieden, hier die EleLa-DB:
http://www.mmvisual.de/Hilfe/EleLa/TutorialDB/TutDB.htm

von Marco tom Suden (Gast)


Lesenswert?

Habe grad mal alles durch gegangen,als ich bei Zeige/Statistik an kam, 
dauerte es erst ne weile bis überhaupt was angezeigt wurde.

Zuerst war es ne art Fehlermeldung, wo was von Time-out 30 sec etc 
stand.
Nach dem 2 Versuch öffnete sich die Seite wie sie soll, jedoch fiel mir 
sofort das Karo mit (?) ins Auge. Das sicherlich das € darstellen 
soll,was glaub ich mal an der Kodierung UTF-8 / ANSI liegt.

Demnach habe ich in der config.php unten diese Auskommentierte Zeile 
wieder Aktiv gemacht:
$manual_config['money_format']['de_DE']        = '%!n Euro';

Naja dementsprechend wird nun statt dem Karo (Euro) ausgegeben.

Nach Änderung dieser Zeile in:
$manual_config['money_format']['de_DE']        = '%!n €'

war das Karo wieder da,logisch da die config.php in ANSI Kodiert ist, 
als ich sie jedoch in UTF-8 Kodiert hab war das € Zeichen da.
Wie es sicherlich soll.

Ich weis grad nicht,ob das bei euch auch so ist.
Daher dachte ich ich schreib euch das einfach mal.

von Uhu U. (uhu)


Lesenswert?

Daß ein unbedarfter User mit MySQL zurecht kommt, ist letztendlich eine 
Frage der Anleitung, nach der er das macht. Er muß ja nicht im Einzelnen 
verstehen, was da passiert, aber so lange er ein Kochrezept an die Hand 
bekommt, nach dem er nur Schritt für Schritt vorgehen muß, dann wird er 
diese Klippe nehmen. Und wenn man ihn zusätzlich noch mit Skripten 
versorgt, die ihn vor Tippfehlern bewahren, dann ist das ganz prima.

Nur ohne, oder mit einer Doku, die in Rudimenten über diverse Threads, 
Quelltexte, Readmes etc. pp. verstreut ist, wird das natürlich nix.

von Gelöscht (kami89)


Lesenswert?

Marco tom Suden schrieb:
> Habe grad mal alles durch gegangen,als ich bei Zeige/Statistik an kam,
> dauerte es erst ne weile bis überhaupt was angezeigt wurde.

Das ist eine Baustelle, wo mal einer mit mehr Datenbankkenntnissen ran 
muss :-) Momentan habe ich dort noch improvisiert, es werden Sachen mit 
PHP berechnet, die man (mit genügend Kenntnissen^^) auch mit SQL machen 
könnte, damit würde es gleich viel schneller gehen.

Marco tom Suden schrieb:
> Nach dem 2 Versuch öffnete sich die Seite wie sie soll, jedoch fiel mir
> sofort das Karo mit (?) ins Auge. Das sicherlich das € darstellen
> soll,was glaub ich mal an der Kodierung UTF-8 / ANSI liegt.

Ja, das ist auch ein Problem von mir, weil ich da den Durchblick noch 
nicht habe mit den verschiedenen Kodierungen :-( In der Konfiguration 
kannst du übrigens noch den Zeichensatz ändern, bringt das auch nichts 
wenn du den auf "ISO-8859-1" stellst?

In den *.tmpl Dateien sind bisher auch alle ä, ö, ü ganz normal 
gschrieben, und nicht in HTML-Schreibweise (&auml;). Bei mir 
funktioniert das zwar, ich weiss aber nicht inwiefern das auch mit 
anderen Systemen kompatibel ist, bzw. ob sich das mit dem Ändern des 
Zeichensatzes lösen lässt.

Udo, hast du hier vielleicht den Durchblick und kannst mir mit ein paar 
Sätzen mal einen kurzen Crashkurs geben? :-D

Ich finde die Schreibweise &auml; mühsam und würde sie gerne vermeiden 
wenn es geht.

Markus Müller schrieb:
> Irgend wann einmal, wenn PartDB gut läuft können wir auch mal dran gehen
> und EleLa/PartDB von der Datenstruktur her angleichen, dann wäre EleLa
> und PartDB mit dem gleichen Datenbestand nutzbar. Ein Front-End für
> Lokal und eines Internettauglich :-)
> Im moment sind die noch zu verschieden, hier die EleLa-DB:
> http://www.mmvisual.de/Hilfe/EleLa/TutorialDB/TutDB.htm

Uiuiui, da hat sich ja schon richtig was ergeben bei dir :-D Gegen deine 
DB sieht unsere ja grad mickrig aus :-D
Also falls das mal was werden würde mit dem Angleichen von 
Part-DB/EleLa, dann sicher erst in ferner Zukunft. Unsere nächsten Ziele 
sind erstmal die Version 0.3.0 stabil zu machen. Dann arbeiten wir auf 
die Version 1.0.0 hin, wo nochmal sehr viel getan werden muss: es soll 
eine Benutzerverwaltung und ein automatisches System-Update geben.
Die Arbeit geht uns erstmal also nicht aus :-)

Uhu Uhuhu schrieb:
> Daß ein unbedarfter User mit MySQL zurecht kommt, ist letztendlich eine
> Frage der Anleitung, nach der er das macht.
Ja stimmt schon auch. Aber dann müssen wir wieder zwei verschiedene 
Anleitungen schreiben, eine für Windows und eine für Linux. Ist also 
auch doppelter Aufwand.

Naja - ich werde mir in den nächsten paar Wochen das Thema SQLite 
nochmal genauer anschauen und ausführlichere Tests machen. Dann kann man 
besser abschätzen wieviel Mehraufwand es wirklich bedeutet. Bis jetzt 
habe ich aber den Eindruck, mit ein paar SQL Guidelines kriegen wir das 
sehr gut in den Griff.

von Marco tom Suden (Gast)


Lesenswert?

Urban B. schrieb:
> Ja, das ist auch ein Problem von mir, weil ich da den Durchblick noch
> nicht habe mit den verschiedenen Kodierungen :-( In der Konfiguration
> kannst du übrigens noch den Zeichensatz ändern, bringt das auch nichts
> wenn du den auf "ISO-8859-1" stellst?

Ja das geht auch, meinte nur wenn man das auf utf-8 hat geht's nicht.
Mit ISO-8859-1 geht's auch mit auskommentierter Zeile.

Unter utf-8 jedoch nicht.

Wenn du nichts dagegen hast,würde mir gern mal die ganze 
Konstruktion,etwas genauer ansehen,vtl Find ich ja ne Lösung dafür ;-).

von Gelöscht (kami89)


Lesenswert?

Marco tom Suden schrieb:
> Ja das geht auch, meinte nur wenn man das auf utf-8 hat geht's nicht.
> Mit ISO-8859-1 geht's auch mit auskommentierter Zeile.
>
> Unter utf-8 jedoch nicht.
>
> Wenn du nichts dagegen hast,würde mir gern mal die ganze
> Konstruktion,etwas genauer ansehen,vtl Find ich ja ne Lösung dafür ;-).

Ach so, dann ist doch alles gut? :-)
Genau für diesen Fall gibts doch die Möglichkeit, den Zeichensatz zu 
ändern.

Meine Vermutung ist, dass Zeichen wie &auml; halt immer funktionieren, 
unabhängig vom Zeichensatz. Verwendet man aber ganz normale Zeichen wie 
ä, ö, ü, so muss man dem Browser halt mitteilen wie er die Zeichen 
interpretieren soll. Ist aber nur eine Vermutung von mir, da ich 
eigentlich mit Webseiten-Entwicklung nicht viel am Hut habe.

Vielleicht sollte man in der Installationsroutine eine Erkennung des 
Betriebssystems einbauen. Wird Windows verwendet, soll der Zeichensatz 
automatisch auf ISO-8859 gesetzt werden, ansonsten auf utf-8.

von Marco tom Suden (Gast)


Lesenswert?

Urban B. schrieb:
> Ach so, dann ist doch alles gut? :-)
> Genau für diesen Fall gibts doch die Möglichkeit, den Zeichensatz zu
> ändern.

Ja aber mir ist grade aber aufgefallen das andere texte wie der Button 
(Einstellungen übernehmen) plötzlich unter ISO Merkwürdige Zeichen 
enthalten.

Wenn man die config.php dann aber wieder in utf konvertiert ist alles 
easy,und sauber.

Da gibts aber sicherlich ne Lösung für.

Ich versuche grad der Statistik bei zu bringen die Daten aus der 
Database direct aus zu lesen,vtl läuft es dann schneller.

Zu dem Kodierung's Konstrukt,fällt mir sicher auch was ein ;-)

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Die Zeichen in der DB sollten immer UTF-8 sein, denn wenn man mal einen 
Server-Umzug von Windows <> Linux macht, dann sollte der eine Export 
beim anderen Import immer gehen.
Zum zweiten ist UTF-8 unter Linux Standard.
Mit htmlentities() sollte das ganze dann auch korrekt gewandelt werden.

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

>Uiuiui, da hat sich ja schon richtig was ergeben bei dir :-D

Bei meiner Versino 0.x war das auch noch so. ;-)
Um so mehr PartDB nutzen um so mehr Anforderungen und entsprechend 
Tabellen/Felder wird es geben.
Foreign Key's nutze ich nicht, denn SQLite kann das nicht. Wird alles im 
Programm geprüft.

von Christoph (Gast)


Lesenswert?

Markus Müller schrieb:
> Foreign Key's nutze ich nicht, denn SQLite kann das nicht. Wird alles im
> Programm geprüft.

Grad die Foreign Keys muessen vom Datenbanksystem ueberprueft werden. 
Die Integritaet der Datenbank wird ja schliesslich hauptsaechlich von 
fehlerhaften Referenzen in andere Tabellen bedroht.

Die Ueberpruefung der referenziellen Integritaet muss unbedingt vom DB 
System gemacht werden. Dazu muessen die Foreign Keys natuerlich in den 
Schemadefinitionen definiert werden. Das wird vermutlich eine ganze 
Menge Fehler aufbringen, weil ein INSERT dann schlicht nicht moeglich 
ist, wenn es den Key, auf den verwiesen wird, noch nicht gibt. In dem 
Fall muss man dann die Statements im PHP Code umstellen.

Viele Gruesse
Christoph

von Gelöscht (kami89)


Lesenswert?

Markus Müller schrieb:
> Die Zeichen in der DB sollten immer UTF-8 sein, denn wenn man mal einen
> Server-Umzug von Windows <> Linux macht, dann sollte der eine Export
> beim anderen Import immer gehen.

Ja, das macht Sinn. Ist bei Part-DB auch standardmässig auf UTF-8 
gesetzt, kann jedoch geändert werden. Theoretisch könnte man diese 
Möglichkeit vielleicht auch noch rauswerfen, also dass es immer mit 
UTF-8 arbeitet, da dies ja jeder MySQL Server unterstützen sollte.

Markus Müller schrieb:
> Foreign Key's nutze ich nicht, denn SQLite kann das nicht.
Sicher? http://www.sqlite.org/foreignkeys.html

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Stimmt, jetzt kann SQLite das. Ab der Version 3.6.19.
Ich nutze schon viel länger SQLite und damals konnte SQLite das nicht.

Wenn Du jetzt SQLite mit Foreign Keys unter Linux nutzt, dann musst Du 
auch sicherstellen, dass die DLL libsqlite.so auch wirklich eine 
aktuelle ist. Ältere Linux-Distris haben zum Teil nicht die neueste 
libsqlite mit dabei. Ich meine sogar, als ich vor einem halben Jahr mal 
Debian in eine VBox installiert habe, dass dort auch nur eine 
V3.6.irgendwas dabei war und nicht mal eine 3.7.x.
Bei mir überprüft EleLa die Konsistenz der Daten und ich zeige auch 
entsprechende Fehlermeldungen. Wenn das nur die DB macht, dann kommen 
kryptische Meldungen auf den Bildschirm und das ist immer schwierig zu 
handeln. Foreign Keys sind nur für den Notfall da, falls man mal ein Bug 
in der Programmierung drin hat, um die Daten zu schützen.

EleLa macht auch alles mit UTF-8, da das Standard der 
Programmierumgebung Lazarus ist. Damit wäre schon mal der erste 
Meilenstein für das Zusammenspiel gelegt ;-)

Bei MySQL lege ich die DB immer mit dem Code an:
1
CREATE DATABASE IF NOT EXISTS <######> DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci

von Gelöscht (kami89)


Lesenswert?

Also hier unter Ubuntu 12.10 ist SQLite 3.7.13 in den offiziellen 
Paketquellen. Wie es auf den gängigen Webservern aussieht, weiss ich 
aber nicht.

Part-DB hat eigentlich eh schon "relativ hohe" Anforderungen an die 
PHP-Version (mind. 5.3), da sollte die hohe Anforderung bei SQLite auch 
nicht mehr so schlimm sein. Obwohl man meinen würde, dass heute PHP5 
Standard ist, musste ich meinen Webhoster anfragen ob Sie mir PHP 5.3 
installieren könnten. Die haben immer noch PHP4, und per Webfromular 
kann man es auf 5.2 aktualisieren lassen. Mit einer persönlichen Anfrage 
aktualisieren sie aber auch auf 5.3.

Alternativ könnte man immernoch im Installer schreiben:
Entweder SQLite >= 3.6.19, oder dann MySQL.

Obwohl auch in Part-DB seit der Version 0.3.0 die Beziehungen sehr genau 
"von Hand" überprüft werden, ist die Überprüfung durch das 
Datenbanksystem per Foreign Keys doch nochmal ein Plus an Sicherheit. 
Das werde ich noch einbauen müssen, bis jetzt werden nämlich auch bei 
MySQL keine Foreign Keys verwendet...

@Markus
Habe ich das eigentlich richtig verstanden, dass bei SQLite die Indizes 
innerhalb der ganzen Datenbank eindeutig sein müssen, bei MySQL aber nur 
innerhalb einer Tabelle?

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Nein, bei mir sich die Indizes nur innerhalb der Tabelle eindeutig. Das 
geht so wie ich oben gezeigt habe.

Aber, wenn man bei SQLite den letzten Datensatz (z.B. ID = 15) löscht, 
dann ist der letzte ID = 14. Wenn man nun einen neuen Datensatz anlegt, 
so erhält der wieder 15. Bei MySQL würde der Datensatz die ID = 16 
erhalten. SQLite ist schon eine wirklich einfache Datenbank, SQLite ist 
fast wie ein Müllschlucker und frisst alles.
Besonders musst Du auf Datums und Zeitfelder aufpassen und die besser 
als Float Felder abfragen und selbst in das gewünschte Anzeigeformat 
wandeln, damit habe ich ständig Probleme. Das Datumsfeld als Float 
abzufragen macht bei MySQL keine Probleme.

Die SQLite Version kannst Du mit dem SQL Befehl einfach auslesen:

SELECT sqlite_version() AS Vers

von Gelöscht (kami89)


Lesenswert?

Markus Müller schrieb:
> Nein, bei mir sich die Indizes nur innerhalb der Tabelle eindeutig. Das
> geht so wie ich oben gezeigt habe.

Hmm okay, dann muss ich mir das nochmal anschauen...Ich bekam immer eine 
Fehlermeldung (blabla...already exists...blabla) wenn ein gleichnamiger 
Index bereits in einer anderen Tabelle vorhanden war.

Momentan habe ich aber für sowas keine Zeit. Ab Freitag kanns dann 
wieder richtig weitergehen :-)

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Vermutlich muss nur der Name des Indizes eindeutig sein, den also so 
z.B. benennen:
TabellenName_FeldName_IX
Probiere das mal.
PS: Index oder Primary key? Nicht dass wir jetzt da was durcheinander 
bringen.

Bei sieht das z.B so aus:

CREATE TABLE IF NOT EXISTS bauteil (
ID INTEGER NOT NULL PRIMARY KEY,
: :
AendDatum DATETIME);

CREATE TABLE IF NOT EXISTS bauteillager (
ID INTEGER NOT NULL PRIMARY KEY,
: :
AendDatum DATETIME);

Hinterher erzeuge ich die Indizes.

von Gelöscht (kami89)


Lesenswert?

Markus Müller schrieb:
> Vermutlich muss nur der Name des Indizes eindeutig sein, den also so
> z.B. benennen:
> TabellenName_FeldName_IX

Ja, genau das meine ich. Es gibt bei uns verschiedene Tabellen, die 
gleichnamige Spalten haben. Also eine Spalte "A" in Tabelle 1, und eine 
Spalte "A" in Tabelle 2. Bei beiden ist diese Spalte A auch ein Index 
(nicht Primary Key) und heisst ebenfalls "A". Und da bekomme ich bei 
SQLite eine Fehlermeldung dass so ein Index schon existiert, bei MySQL 
hingegen funktioniert es. Daher kam die Vermutung, dass die Namen der 
Indizes bei MySQL nur innerhalb einer Tabelle eindeutig sein müssen, bei 
SQLite jedoch innerhalb der ganzen Datenbank.

Aber ein "Tabellenname_" vor die Index-Namen zu setzten ist natürlich 
kein Problem, werde ich dann vermutlich so einbauen.

Als nächstes (wenn ich wieder Zeit habe) werden aber erstmal überall 
Transaktionen eingebaut, damit im Fehlerfall immer ein Rollback 
durchgeführt werden kann. Und dann den Installer noch etwas ergänzen, 
die Importfunktionen wieder zum laufen bringen, einige kleine Bugs 
beheben usw usw... :-)

mfg

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Transaktionen machen die DB auch schneller, da erst mal nichts auf die 
Disk geschrieben wird.

Wenn Du fragen zu SQL Befehlen hast kannst Du mir auch eine PN 
schreiben.
Ich kann Dir auch Teile von EleLa schicken, damit Du siehst wie ich z.B. 
"ChgQueryCreateSQL()" mache oder Felder im Update hinzufüge.
Ist halt Lazarus/Pascal und Du müsstest das umschreiben auf PHP.

von Christoph (Gast)


Lesenswert?

Markus Müller schrieb:
> Transaktionen machen die DB auch schneller, da erst mal nichts auf die
> Disk geschrieben wird.
Aber beim COMMIT wird synchron geschrieben, was den 
Geschwindigkeitsvorteil wieder relativiert.

von Udo N. (weinbauer73)


Lesenswert?

Transaktionen dienen der Datenkonsistenz und nicht der Geschwindigkeit. 
Erst wenn alle SQL-Aktionen innerhalb einer Transaktion fehlerfrei 
ausgeführt wurden, dann erfolgt das COMMIT und die Datenbank schreibt 
die Daten endgültig auf Platte. Wenn man Geschwindigkeit herausholen 
möchte, dann per Indices, Keys, Cache etc. SQLite ist zwar nett, aber 
nur für Einzelplatzsysteme wirklich sinnvoll. Erstmal ist MySQL zu 
bedienen, danach kann man ja auch andere Systeme unterstützen. Die Idee, 
SQLite als Backup zu nutzen, finde ich interessant.

von Gelöscht (kami89)


Lesenswert?

Markus Müller schrieb:
> Wenn Du fragen zu SQL Befehlen hast kannst Du mir auch eine PN
> schreiben.
> Ich kann Dir auch Teile von EleLa schicken, damit Du siehst wie ich z.B.
> "ChgQueryCreateSQL()" mache oder Felder im Update hinzufüge.

Danke für das Angebot, ich werde darauf zurückkommen wenn ich soweit bin 
und Hilfe brauchen könnte.

> Ist halt Lazarus/Pascal und Du müsstest das umschreiben auf PHP.

Das ist kein Problem, ich habe auch mal Pascal programmiert :-)

Udo Neist schrieb:
> SQLite ist zwar nett, aber
> nur für Einzelplatzsysteme wirklich sinnvoll.

Und genau das wird für viele Benutzer schon genügen, da sie zu Hause 
Part-DB nur auf einem einzigen Computer benutzen ;-)

Udo Neist schrieb:
> Erstmal ist MySQL zu
> bedienen, danach kann man ja auch andere Systeme unterstützen.

Jup, erstmal hat MySQL schon Priorität. Wenn es aber kein grosser 
Aufwand ist, kann ich SQLite auch schon in die Version 0.3.0 einbauen.

Übrigens habe ich gerade noch das Auslesen der SVN-Revision mit einem 
PDO Objekt gelöst, funktioniert wunderbar :-) Wird in nächster Zeit mal 
noch ins SVN hochgeladen...

von Udo N. (weinbauer73)


Angehängte Dateien:

Lesenswert?

Der Filemanager nimmt so langsam Formen an. Ich habe heute am 
Dialogsystem gearbeitet. Damit ihr euch schon mal ein Bild davon machen 
könnt, habe ich zwei Screenshots angehängt.

Das ganze basiert auf zwei Javascript-Klassen mit eigenem Namensraum. 
Derzeit fehlt noch die Anbindung der Dialogbuttons an frei definierbare 
Funktionen innerhalb der DOM-Klasse. Das Aussehen der Elemente ist in 
CSS-Dateien definiert. Im Moment erbt der Dialog noch ein Element der 
Webseite, wird aber noch korrigiert. Der PHP-Unterbau benötigt eine 
fileIO-Klasse.

von Gelöscht (kami89)


Lesenswert?

Sieht doch schonmal ganz gut aus!

Vielleicht könnte man ja den Bereich "Ausgawähltes File / Dateiinfos" 
noch auf die rechte Seite nehmen, dann ist es auch besser für 
Bildschirme mit niedriger Auflösung (z.B. 1366x768) geeignet. Die blöden 
Netbooks haben einfach eine viel zu niedrige vertikale Auflösung...

Ach ja, falls das noch nicht geplant ist: Ganz oben wäre noch eine 
Navigations-Zeile sinnvoll, damit man sieht in welchem Ordner man sich 
gerade befindet. Also sowas in der Art:
1
media / footprints / TQFP
Wobei natürlich jedes dieser Elemente ein Link sein könnte um zum 
jeweiligen Ordner navigieren zu können.

Bin auf jeden Fall schonmal gespannt auf den fertigen Dateimanager :-)

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
> Sieht doch schonmal ganz gut aus!

Danke :-)

> Vielleicht könnte man ja den Bereich "Ausgawähltes File / Dateiinfos"
> noch auf die rechte Seite nehmen, dann ist es auch besser für
> Bildschirme mit niedriger Auflösung (z.B. 1366x768) geeignet. Die blöden
> Netbooks haben einfach eine viel zu niedrige vertikale Auflösung...

Dank CSS lassen sich die 4 Blöcke (Ordner, Dateiinfo, Commands und 
Explorer) frei verschieben. Nur die IDs sind fest vergeben.

> Ach ja, falls das noch nicht geplant ist: Ganz oben wäre noch eine
> Navigations-Zeile sinnvoll, damit man sieht in welchem Ordner man sich
> gerade befindet. Also sowas in der Art:
>
1
media / footprints / TQFP
> Wobei natürlich jedes dieser Elemente ein Link sein könnte um zum
> jeweiligen Ordner navigieren zu können.

Breadcrumb-Navigation? Existiert schon auf der globalen Ebene der 
Webseite und wäre für den Dateimanager recht einfach zu adaptieren. Die 
Navigation enthält aber keine Links. Werde ich mal für die nächste Runde 
umsetzen.

> Bin auf jeden Fall schonmal gespannt auf den fertigen Dateimanager :-)

:-)

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Dank CSS lassen sich die 4 Blöcke (Ordner, Dateiinfo, Commands und
> Explorer) frei verschieben. Nur die IDs sind fest vergeben.

OK super!

Udo Neist schrieb:
> Breadcrumb-Navigation?

Lol, wusste gar nicht dass das so heisst xD Aber ja, laut Wikipedia ist 
das genau das was ich meinte :-) Halt wie in Nautilus, Windows Explorer 
usw.

Sind eigentlich die beiden Ordner links oben auf dem Screenshot 
aufklappbare Menüs wo dann die ganze Verzeichnisstruktur ersichtlich 
ist?

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
>> Breadcrumb-Navigation?
>
> Lol, wusste gar nicht dass das so heisst xD Aber ja, laut Wikipedia ist
> das genau das was ich meinte :-) Halt wie in Nautilus, Windows Explorer
> usw.
>
> Sind eigentlich die beiden Ordner links oben auf dem Screenshot
> aufklappbare Menüs wo dann die ganze Verzeichnisstruktur ersichtlich
> ist?

In meinem Beispiel sind das zwei fest vergebene Verzeichnisse, die 
unterhalb eines gemeinsamen Verzeichnisses liegen. Ausserhalb dieser 
Verzeichnisse kann der Filemanager nicht zugreifen.

Natürlich lassen sich diese Verzeichnisse auch ändern. Entsprechend dem 
Einsatzzweck muss man die Konfiguration und Suchfunktion anpassen. Ich 
habe mal die Dateisuchfunktion rauskopiert, damit man mal eine 
Vorstellung davon hat.
1
function searchFiles() {
2
    /*
3
        Sucht nach Dateien
4
    */
5
6
    global $dirs;
7
8
    $fileIO = new fileIO;
9
    $fileIO -> readDir($dirs['dir'].'/'.$_GET['list'],'','cached',array('mime'=>$dirs['mime'][$_GET['type']],'recursive'=>false,'onlyfiles'=>false,'stripdir'=>true));
10
    $files = $fileIO -> getFiles();
11
    $tmpl = new vlibTemplateCache('templates/vlib/vlib_filemanager_list.html');
12
    $tmpl -> setVar('path',$_GET['list']);
13
    $tmpl -> setVar('type',$_GET['type']);
14
    if (count($files)>0) {
15
        asort($files);
16
        $array=array();
17
        if (strpos($_GET['list'],'/')>0) {
18
            $dir = explode('/',$_GET['list']);
19
            if (count($dir)>1) {
20
                $last = array_pop($dir);
21
                $array['dir'][]=basename(implode('/',$dir));
22
            }
23
        }
24
        foreach($files as $file) {
25
            if (is_dir($file)) {
26
                // Directory
27
                $array['dir'][]=str_replace($dirs['dir'].'/','',$file);
28
            }else{
29
                // File
30
                $array['file'][]=$file;
31
            }
32
        }
33
        foreach($array as $type => $file) {
34
            $tmpl -> newLoop($type);
35
            foreach($file as $name) {
36
               $tmpl -> addRow(
37
                    array(
38
                        'name'      =>  (($type=='dir' && strlen($_GET['list'])>strlen($name))?'..':basename($name)),
39
                        'path'      =>  (($type=='file')?$name:$name),
40
                        'b64name'   =>  base64_encode($dirs['dir'].'/'.$_GET['list'].'/'.$name)
41
                    )
42
                );
43
            }
44
            $tmpl -> addLoop();
45
        }
46
        $tmpl -> setVar('type',$_GET['list']);
47
    }else{
48
        $tmpl -> setVar('nofile',true);
49
    }
50
    $tmpl -> pparse();
51
}
52
53
54
class fileIO {
55
    function readDir($path = '.',$search = '',$exclude = '', $options = array('mime'=>array(),'recursive'=>true,'onlyfiles'=>false,'stripdir'=>false)) {
56
    /*
57
        Durchforstet das übergebene Verzeichnis rekursiv nach Dateien
58
    
59
        * Variablen
60
        $this -> files (array): Container für Dateien
61
        $path (string): Suchpfad (Default: .)
62
        $search (string): Suchmuster für preg_match()
63
        $exclude (string): Suchmuster für preg_match() zum Ausschliessen von Dateien/Verzeichnissen
64
        $options (array):
65
            recursive (bool): Rekursiv suchen
66
            onlyfiles (bool): Nur Dateien
67
            stripdir (bool): Gibt nur den Filenamen zurück
68
            mime (string): Mimetyp
69
    
70
        * Rückgabe
71
        $this -> files (array): Liste der Ergebnisse mit absoluten Pfad
72
    
73
        * Anforderung
74
        Kein Datenbanklink erforderlich!
75
    
76
        * Anmerkung
77
        Der Punkt ist das aktuelle Verzeichnis, ".." kennt man als "Verzeichnis höher" und "dir/" als "Verzeichnis tiefer".
78
    
79
    */
80
    }
81
}

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> In meinem Beispiel sind das zwei fest vergebene Verzeichnisse, die
> unterhalb eines gemeinsamen Verzeichnisses liegen. Ausserhalb dieser
> Verzeichnisse kann der Filemanager nicht zugreifen.

Jup, ich denke schlussendlich soll der Benutzer die Verzeichnisse 
"img/footprints/", "/img/iclogos/" und "media/" im Dateibrowser zur 
Verfügung haben. In "img/..." darf er aber nur Leserechte haben, da die 
dort enthaltenen Dateien von Part-DB verwaltet werden, also auch Updates 
bekommen. Fummelt der Benutzer da drin rum, gibts nur ein Chaos.

Für die Dateien des Benutzers ist der Ordner "media/" vorhanden, dort 
kann er tun und lassen was er möchte. Part-DB hingegen wird dort keine 
Dateien ablegen.

Möchte ein Benutzer z.B. die Footprint-Bilder auf eine andere Art und 
Weise sortiert haben, so muss er unseren Footprint-Ordner nach media/ 
kopieren und dort nach seinen Wünschen organisieren.

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
> Udo Neist schrieb:
>> In meinem Beispiel sind das zwei fest vergebene Verzeichnisse, die
>> unterhalb eines gemeinsamen Verzeichnisses liegen. Ausserhalb dieser
>> Verzeichnisse kann der Filemanager nicht zugreifen.
>
> Jup, ich denke schlussendlich soll der Benutzer die Verzeichnisse
> "img/footprints/", "/img/iclogos/" und "media/" im Dateibrowser zur
> Verfügung haben. In "img/..." darf er aber nur Leserechte haben, da die
> dort enthaltenen Dateien von Part-DB verwaltet werden, also auch Updates
> bekommen. Fummelt der Benutzer da drin rum, gibts nur ein Chaos.

Ich kann ja den Filemanager soweit ergänzen, dass er neben den 
Verzeichnisnamen auch Rechte verwaltet. Wäre also sowas wie:
1
$dir[0]['dir']="img/footprints/";
2
$dir[0]['name']="Footprints";
3
$dir[0]['type']="image";
4
$dir[0]['mode']="ro";
5
$dir[1]['dir']="img/iclogos/"
6
$dir[1]['name']="IC Logos";
7
$dir[1]['type']="image";
8
$dir[1]['mode']="ro";
9
$dir[2]['dir']="media/"
10
$dir[2]['name']="Media";
11
$dir[2]['type']="";
12
$dir[2]['mode']="rw";
>
> Für die Dateien des Benutzers ist der Ordner "media/" vorhanden, dort
> kann er tun und lassen was er möchte. Part-DB hingegen wird dort keine
> Dateien ablegen.
>
> Möchte ein Benutzer z.B. die Footprint-Bilder auf eine andere Art und
> Weise sortiert haben, so muss er unseren Footprint-Ordner nach media/
> kopieren und dort nach seinen Wünschen organisieren.

Jupp. Ich werde zwar erst einmal nur einzelne Dateien verwalten können, 
aber wenn das klappt, dann ist es auch kein Problem, mehrere Dateien zu 
bearbeiten. Es bleibt nur zu überlegen, ob auch Verzeichnisse bearbeitet 
werden dürfen oder ob die Struktur einmal festgelegt wird.

Wenn der Filemanager in der jetzigen Form fertig ist, werde ich ihn ins 
Part-DB-Repo rüberziehen, damit wir den zusammen weiter entwickeln 
können. Die Software steht unter CC-BY-SA 3.0-Lizenz.

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Ich kann ja den Filemanager soweit ergänzen, dass er neben den
> Verzeichnisnamen auch Rechte verwaltet. Wäre also sowas wie:
> [...]

Das wäre super! Dann kann er auch ganz einfach angepasst werden wenn mal 
noch neue Verzeichnisse hinzukommen.

Udo Neist schrieb:
> Jupp. Ich werde zwar erst einmal nur einzelne Dateien verwalten können,
> aber wenn das klappt, dann ist es auch kein Problem, mehrere Dateien zu
> bearbeiten. Es bleibt nur zu überlegen, ob auch Verzeichnisse bearbeitet
> werden dürfen oder ob die Struktur einmal festgelegt wird.

Was meinst du mit "Verzeichnisse bearbeiten"? Umbenennen, Kopieren, neue 
Verzeichnisse erstellen? Das sollte natürlich in "media/" schon möglich 
sein, sonst muss der Benutzer ja all seine Dateien in einen Topf werfen. 
Oder eben das ganze Verzeichnis "img/footprints" (rekursiv) nach 
"media/footprints" kopieren sollte auch möglich sein.

Erstmal ist aber wichtig dass man Dateien hochladen und hochgeladene 
Dateien auswählen kann, die man dann den Bauteilen zuordnen kann...

von Gelöscht (kami89)


Lesenswert?

Ich bin grad die Updateschritte auf die DB-Version 13 nochmal am 
anpassen. Es werden noch diverse Änderungen vorgenommen: Umstellung auf 
InnoDB, zusätzliche TIMESTAMP-Spalten, und - sehr wichtig - es werden 
Foreign Keys hinzugefügt.

Es gibt aber immernoch einen Updateschritt, der nicht funktioniert. Ich 
wäre froh wenn mir hier jemand helfen könnte, da meine SQL-Fähigkeiten 
begrenzt sind ;-)

Es geht um folgendes:
Bisher (bis DBv12) war es erlaubt, einem Bauteil eine Bestellnummer 
und/oder ein Preis zuzuordnen, ohne einen Lieferanten anzugeben. All 
diese Daten befanden sich in der Tabelle "parts". Jetzt ist dies aber 
nicht mehr erlaubt.
Für Bauteile, die keinen Lieferanten, jedoch eine Bestellnummer und/oder 
ein Preis besitzen, wird einfach ein Lieferant "Unbekannt" erzeugt:
1
INSERT IGNORE INTO `suppliers` (name, parent_id) VALUES ('Unbekannt', NULL)
Dann soll die ID von diesem (evtl. neuen) Lieferanten allen Bauteilen 
zugeordnet werden, die noch keinen Lieferanten (parts.id_supplier == 0), 
jedoch eine Bestellnummer (parts.supplierpartnr != '') und/oder einen 
Preis (preise.price > 0) haben. Mein Versuch sieht so aus:
1
UPDATE `parts` SET parts.id_supplier = (SELECT `id` FROM `suppliers` WHERE name='Unbekannt') WHERE (parts.id_supplier = 0) AND ((preise.price > 0) OR (parts.supplierpartnr != ''))
Ich glaube, man sieht was der Befehl machen sollte. Allerdings muss da 
wohl noch ein JOIN rein, damit genau der Preis geholt wird, der zum 
jeweiligen Bauteil gehört. Die Tabelle "preise" wird über die Spalte 
"part_id" mit einem Bauteil verknüpft. Dabei kann es aber auch Bauteile 
geben, die keinen Eintrag in der Tabelle "preise" haben! Mehr als ein 
Eintrag kann (sollte...) aber nicht existieren.
Ausserdem, wenn es jetzt mehrere Lieferanten mit Namen "Unbekannt" gäbe, 
sollte es trotzdem funktionieren (einfach einer dieser Lieferanten 
nehmen, egal welcher). Ich bin mir nicht sicher wie sich da mein Befehl 
verhalten würde...

Ist sicher nur eine Kleinigkeit für jemanden der was davon versteht :-)
Wäre super wenn mir da jemand helfen könnte, dann würde wenigstens mal 
das Datenbankupdate funktionieren.

Falls mehr Infos gebraucht werden, einfach melden.

mfg

von Gelöscht (kami89)


Lesenswert?

na, nur nicht alle auf einmal! :-D

Ich hätte auch gleich schon das zweite "Problem":
Bevor die Foreign Keys hinzugefügt werden, sollen alle Datenbankeinträge 
mit einer "toten" parent_id auf die oberste Ebene gesetzt werden, also 
parent_id = NULL setzen. Ansonsten ist die Gefahr eines Fehlschlages 
beim Update zu hoch, weil es sein könnte dass es in der Spalte 
'parent_id' IDs gibt, die nicht (mehr) existieren (sollte zwar 
theoretisch nicht vorkommen - habe aber auch schon merkwürdige Dinge in 
meiner Datenbank gesehen)

Pseudo-Code für die Tabelle "categories":
1
UPDATE `categories` SET parent_id=NULL WHERE (parent_id existiert nicht in categories.id)

Für die anderen Tabellen kann ich das Ding natürlich auch selber 
anpassen.

mfg

von Gelöscht (kami89)


Lesenswert?

Kann mir denn wirklich keiner helfen? ;-)

Ich habe noch diverse andere Sachen gemacht, die ich gerne wiedermal ins 
SVN laden würde, aber ohne das Datenbankupdate funktionieren die 
nicht...

Wenn sich keiner meldet, frage ich dann halt mal in einem MySQL Forum 
nach... Die Updateschritte sollten halt wirklich wasserdicht sein, und 
das krieg ich mit meinen MySQL-Fähigkeiten nicht hin :-(

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Die Tabelle mit PHP auf machen und mit einer Schleife durchlaufen?
Es muss ja nicht unbedingt ein SQL Script sein, komplexere Teile können 
auch per PHP bearbeitet werden.

von Gelöscht (kami89)


Lesenswert?

Markus Müller schrieb:
> Die Tabelle mit PHP auf machen und mit einer Schleife durchlaufen?
> Es muss ja nicht unbedingt ein SQL Script sein, komplexere Teile können
> auch per PHP bearbeitet werden.

Nein es sollte wenn möglich schon direkt per MySQL Queries erledigt 
werden, da das bisherige Updatesystem so aufgebaut ist dass nur MySQL 
Befehle abgearbeitet werden können. Ausserdem sollten die genannten 
Operationen ja problemlos mit MySQL lösbar sein, es liegt nur an meinem 
begrenzen Fähigkeiten dass ich es nicht hinkriege ;-)

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Ich weiß das jetzt auch nicht auswendig und müsste in der Doku 
nachlesen. Ich habe das zumindest in meinen Updates so gelöst um die 
Unterschiede der SQL Syntax korrekt behandeln zu können.
Damit habe ich sogar die Möglichkeit gleiche Updates mehrfach aus zu 
führen, da erst geprüft wird ob z.B. das Feld nicht doch schon existiert 
und dann erst angelegt wird. Bei einem reinen SQL Script ist das viel 
schwieriger.

von Gelöscht (kami89)


Lesenswert?

Markus Müller schrieb:
> Damit habe ich sogar die Möglichkeit gleiche Updates mehrfach aus zu
> führen, da erst geprüft wird ob z.B. das Feld nicht doch schon existiert
> und dann erst angelegt wird. Bei einem reinen SQL Script ist das viel
> schwieriger.

Jup, das war bisher tatsächlich ein Problem. Ich habe jetzt aber einen 
Zähler eingebaut, der sich merkt bei welchem Updateschritt ein Abbruch 
stattfand. So kann beim nächsten Versuch wieder an der gleichen Position 
weitergemacht werden. Beim Update von v12 auf v13 ist das auch dringend 
notwendig, da wird so viel an der DB verändert... ;-)

Das ganze Updatesystem soll später aber sowieso nochmal überarbeitet 
werden, da wir auch Systemupdates unterstützen möchten. Bisher wird nur 
die Datenbank an die neue Systemversion angepasst nachdem der Benutzer 
das System selbst aktualisiert hat.

von Gelöscht (kami89)


Lesenswert?

OK also ich habs nochmal selbst probiert, und ich glaube sogar ich habs 
hingekriegt :-) Bei den Tests die ich durchgeführt habe, stimmte das 
Ergebnis jedenfalls...

Ich habe jetzt mal alle Änderungen ins SVN hochgeladen (r594).

Achtung! Es wird jetzt wieder eine Datenbank der Version 12 
vorausgesetzt, da ich den Schritt von v12 auf v13 verändert habe! Eine 
DB v12 liegt ja nach wie vor im "development" Ordner.

Die Online Demo wird nun in nächster Zeit vermutlich auch nicht mehr 
richtig funktionieren, da muss auch erstmal wieder eine frische DB 
geladen werden...

So, vielleicht kriege ich nun sogar auch noch die anderen 
Datenbankprobleme hin, die in der Doxygen Doku noch aufgelistet sind ;-)

mfg

P.S.
Falls es bei euch Probleme geben sollte beim DB-Update, bitte melden, 
vielleicht ist ja doch noch ein Wurm drin ;-)

von K. J. (Gast)


Lesenswert?

Urban B. schrieb:
>
> Die Online Demo wird nun in nächster Zeit vermutlich auch nicht mehr
> richtig funktionieren, da muss auch erstmal wieder eine frische DB
> geladen werden...
>
Leuft ;-)
>
> P.S.
> Falls es bei euch Probleme geben sollte beim DB-Update, bitte melden,
> vielleicht ist ja doch noch ein Wurm drin ;-)

Jap aus irgendeinen Grund, wird der Datenbank Zeichensatz bei mir auf 
schwedisch gestellt für die umbenannten Tabellen.

Was noch nett ist das neuerdings erst nach dem kompletten Update die DB 
Rev. geändert wird so kann man das auch selber grade biegen und dann das 
script nochmal durchlaufen lassen.

von Gelöscht (kami89)


Lesenswert?

K. J. schrieb:
> Leuft ;-)

Super, danke! :-)

K. J. schrieb:
> Jap aus irgendeinen Grund, wird der Datenbank Zeichensatz bei mir auf
> schwedisch gestellt für die umbenannten Tabellen.

Hmm dann musst du dir wohl noch eine schwedische Tastatur besorgen ;-)

Ne im Ernst, ich bin mir noch unsicher was die Befehle "CHARSET=..." und 
"COLLATE=..." genau bringen. Vorher haben wir ja eine Tabelle so 
erzeugt:
1
DROP TABLE IF EXISTS `categories`;
2
CREATE TABLE IF NOT EXISTS `categories` (
3
  `id` int(11) NOT NULL AUTO_INCREMENT,
4
  `name` mediumtext COLLATE utf8_unicode_ci NOT NULL,
5
  `parentnode` int(11) NOT NULL DEFAULT '0',
6
  PRIMARY KEY (`id`),
7
  KEY `parentnode` (`parentnode`)
8
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

Hier wird ja der Zeichensatz auf utf8_unicode_ci gesetzt. Aber was, wenn 
jemand einen anderen Zeichensatz haben möchte (auf Windows?) ? Oder wird 
das niemand wollen? ;-) Über die Konfiguration lässt sich ja jetzt der 
Zeichensatz des PDO setzen. Dieser Zeichensatz sollte dann eigentlich ja 
auch beim Anlegen neuer Tabellen verwendet werden nehme ich mal an. So 
ist halt der Zeichensatz nicht mehr hardgecoded, sondern der Benutzer 
kann ihn selber wählen. Aber ob das wirklich Sinn macht... Sollte man 
besser den Zeichensatz wieder auf utf8 hardcoden und die 
Konfigurationsmöglichkeit rauswerfen?

Und dann gibts da noch das "COLLATE=...". Hier bin ich mir auch nicht 
sicher. Wird da nicht standardmässig utf8 verwendet, wenn die Tabelle 
sowieso den utf8-Zeichensatz verwendet? Oder muss das wirklich noch 
separat angegeben werden?

Die blöden Zeichensätze bereiten mir echt Kopfschmerzen... :-(

K. J. schrieb:
> Was noch nett ist das neuerdings erst nach dem kompletten Update die DB
> Rev. geändert wird so kann man das auch selber grade biegen und dann das
> script nochmal durchlaufen lassen.

Jup, wenn ein Update fehlschlägt wird die aktuelle Position in der 
config.php abgelegt, damit beim nächsten Versuch wieder an der gleichen 
Position weitergemacht werden kann. Vorher war es echt mühsam wenn mal 
ein Update fehlgeschlagen hat... ;-)

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Foreign Key's benötigen InnoDB.
Wegen der schwedische Zeichen werden vermutlich mit PHP falsch 
decodiert, die DB Definition ist korrekt.

von Gelöscht (kami89)


Lesenswert?

Markus Müller schrieb:
> Foreign Key's benötigen InnoDB.

Ja, deshalb werden zu Beginn des Updates alle Tabellen auf InnoDB 
umgestellt:
1
ALTER TABLE `categories` ENGINE=InnoDB

Aber das hat mit dem Zeichensatz eigentlich ja nichts zu tun, oder?

Übrigens ist mir grad noch ein schlimmer Fehler im DB Update 
aufgefallen, es waren plötzlich alle Einkaufsinformationen doppelt 
vorhanden :-) Ist jetzt aber gefixt (r596).

Kann man eigentlich in Google Code nicht einzelne Verzeichnisse aus dem 
Changelog rausnehmen? Die Änderungen an der Doxygen Doku nerven extrem 
in der Änderungsliste, die wirklich wichtigen Änderungen gehen so total 
unter...

Übrigens, ich habe jetzt mal ein Dokuwiki in Part-DB mit eingebaut. Wer 
möchte, kann gerne daran arbeiten :-)

Und dann habe ich noch diverse Sachen gefixt: Man kann nun endlich nach 
Lieferanten und Bestellnummern suchen, die Statistik wird jetzt viel 
schneller geladen (Preisberechnung per MySQL statt PHP) und die 
Footprint-Bilder Auflistung habe ich umgebaut. Beim Aufrufen von Tools 
-> Footprints werden nun nicht mehr die über tausend Bilder geladen 
(sehr mühsam bei langsamen PCs). Wer es trotzdem wieder haben möchte, 
kann es in der Konfiguration ändern.

mfg

von Gelöscht (kami89)


Lesenswert?

K. J. schrieb:
> Jap aus irgendeinen Grund, wird der Datenbank Zeichensatz bei mir auf
> schwedisch gestellt für die umbenannten Tabellen.

Ich habe mal die CHARSET=... und COLLATE=... wieder hinzugefügt (r598), 
könntest du nochmal eine DB v12 laden und schauen obs nun klappt?

Ausserdem gibts jetzt ein paar neue Sachen in Part-DB 0.3.0:
1
- Export für gesuchte Teile, Baugruppen und zu bestellende Teile
2
- Eigene Exportformate können ziemlich einfach in der config.php definiert werden
3
- Baugruppen können zum Bestellen vorgemerkt werden (damit tauchen Sie in der Liste der zu bestellenden Teile auf - war ziemlich tricky, vielleicht gibts da noch Bugs...)
4
- Obsolete Einkaufsinformationen werden in den Tabellen nicht mehr angezeigt

So langsam aber sicher wird die ganze Sache ziemlich kompliziert ;-) Die 
Einkaufsinformationen und Preisinformationen machen es einem nicht 
leicht, aber ich denke der Aufwand lohnt sich. Wenn man das selbe 
Bauteil mal bei diesem, mal bei einem anderen Lieferanten bestellt, muss 
das halt auch irgendwie gescheit verwalten können...

Gute Nacht! :-)

von K. J. (Gast)


Lesenswert?

Urban B. schrieb:
> K. J. schrieb:
>> Jap aus irgendeinen Grund, wird der Datenbank Zeichensatz bei mir auf
>> schwedisch gestellt für die umbenannten Tabellen.
>
> Ich habe mal die CHARSET=... und COLLATE=... wieder hinzugefügt (r598),
> könntest du nochmal eine DB v12 laden und schauen obs nun klappt?
>

Supi geht.

von K. J. (Gast)


Lesenswert?

Aso hab mich mal ans Wiki gemacht, ich weis nur nicht ob ein einfaches 
Coppy der Seiten reicht damit sie übernommen werden.

von Udo N. (weinbauer73)


Lesenswert?

An dieser Stelle einfach mal ein Lob an Urban für seine Arbeit :-)

Ich hänge derzeit an den AJAX-Routinen für den IE (hab nur den 8er) 
fest. JScript ist halt nicht Javascript und das nervt tierisch :(

von Uhu U. (uhu)


Lesenswert?

Udo Neist schrieb:
> JScript ist halt nicht Javascript und das nervt tierisch :(

Tja, das ist das Echo des Browserkrieges.

von Gelöscht (kami89)


Lesenswert?

K. J. schrieb:
> Supi geht.

OK dann lassen wir das mal so :-)
Ich habe mich jetzt übrigens mal noch ein bisschen mit dem Thema 
Zeichensätze beschäftigt, da ich damit immernoch Mühe hatte. Einerseits 
haben wir ja den HTTP Zeichensatz (im HTML Header), und andererseits den 
Zeichensatz der Datenbank.

Die Kommunikation mit der Datenbank können wir wohl auf UTF-8 hardcoden 
denke ich (mit "SET NAMES utf8"). Jeder (einigermassen aktuelle) MySQL 
Server sollte UTF-8 unterstützen, so können Probleme und 
Missverständnisse vermieden werden. Übrigens habe ich heute 
herausgefunden dass der Befehl "SET NAMES utf8" bisher gar nicht 
funktioniert hat, in der nächsten Revision die ich hochlade, 
funktioniert es dann aber.

Eventuell könnte es aber bei einigen Benutzern zur falschen Darstellung 
von Umlauten führen. In früheren Versionen von Part-DB wurden die Daten 
wohl in "latin1" in der Datenbank abgelegt. Die Backups davon werden bei 
mir nun aber als UTF-8 interpretiert und somit die Umlaute falsch 
dargestellt. Ich bin mir aber nicht sicher ob das nur bei alten Backups 
passiert, oder obs auch im normalen Betrieb dann plötzlich passiert 
(beim Update auf eine neue Version von Part-DB)...Im schlimmsten Fall 
müssten die Benutzer dann ihre latin1-Datenbank nach UTF-8 konvertieren. 
Ist zwar irgendwie blöde, aber wenn man jetzt einfach was "bastelt" wird 
uns das Problem auf immer und ewig verfolgen ;-)

Und dann zum HTTP-Zeichensatz. Der gibt eigentlich dem Browser ja nur 
bekannt, wie die Daten codiert sind. Da gibt es einmal die (ich nenne 
sie mal) "dynamischen" Daten, die z.B. von der Datenbank kommen, die 
erhalten wir immer in UTF-8 und werden auch so ausgegeben. Und dann 
gibts noch die "statischen" Daten, die hardgecoded (in *.php oder 
*.tmpl) sind. Die sind ja auch alle in UTF-8 codiert. Teilweise gibts 
Umlaute noch in HTML-Schreibweise, die könnten wir aber auch noch durch 
Umlaute (im Klartext) ersetzen. Es ist also immer alles UTF-8, somit 
könnten wir doch den HTTP-Zeichensatz auch auf UTF-8 hardcoden, oder? 
Wenn jetzt ein Windows Server eingesetzt wird, sind ja die Dateien von 
Part-DB immernoch UTF-8 und es müsste weiterhin funktionieren schätze 
ich. Oder liefert ein Apache Server auf Windows etwa latin1 Ausgaben, 
auch wenn die PHP/TMPL Dateien UTF-8 codiert sind? Das bin ich mir nicht 
so ganz sicher...

Zusammengefasst würde ich also sagen: Wir könnten alles auf UTF-8 
hardcoden und es sollte tzotzdem auf allen Server-Systemen richtig 
funktionieren. Einzig bei der Bearbeitung der PHP/TMPL Dateien unter 
Windows muss man darauf aufpassen, dass die Dateien auch wieder UTF-8 
codiert gespeichert werden. Aber das sollte ja jeder ernstzunehmende 
Code-Editor beherrschen.

K. J. schrieb:
> Aso hab mich mal ans Wiki gemacht,

Super! :-)
Uhu hat sich ja diesbezüglich auch mal gemeldet, vielleicht müsstest du 
mit ihm mal besprechen ob/was/wie/wann er auch noch an der Doku 
arbeitet.

> ich weis nur nicht ob ein einfaches
> Coppy der Seiten reicht damit sie übernommen werden.

mmh ich verstehe die Frage nicht ganz. Also grundsätzlich solltest du im 
DokuWiki einfach Änderungen machen und dann die Dateien ins SVN 
hochladen können. Man sieht ja in der Online-Demo dass das bereits 
geklappt hat.

Übrigens habe ich nur mal ein paar grobe Einstellungen gemacht im 
DokuWiki. Vielleicht gäbe es noch ein paar andere Sachen die man ändern 
könnte. z.B. macht es nicht viel Sinn dass der Benutzer schlussendlich 
auch die Möglichkeit hat, Änderungen an der Doku durchzuführen (sieht 
irgendwie komisch aus wenn man die Doku einer Software selbst verändern 
kann). Da könnte man sicher noch ein bisschen was anpassen...

Udo Neist schrieb:
> An dieser Stelle einfach mal ein Lob an Urban für seine Arbeit :-)

Vielen Dank :-)

von K. J. (Gast)


Lesenswert?

Ja, werd mich drum kümmern werde auch mal schauen ob wir das ganze nicht 
mal etwas abspecken können alleine die Sprachfiles sind son eine ganze 
menge die wir nicht brauchen, denke DE und EN werden reichen, das 
gleiche für die doxigen doku die ist sowas von aufgebläht.

von Gelöscht (kami89)


Lesenswert?

K. J. schrieb:
> Ja, werd mich drum kümmern werde auch mal schauen ob wir das ganze nicht
> mal etwas abspecken können alleine die Sprachfiles sind son eine ganze
> menge die wir nicht brauchen, denke DE und EN werden reichen,

Jup, gute Idee.

K. J. schrieb:
> das gleiche für die doxigen doku die ist sowas von aufgebläht.

Ja es sind halt sehr viele Dateien, aber viel weglassen kann man da 
nicht denke ich. Ausserdem kriegt der Endanwender die Doxygen-Doku 
nicht, die ist nur für Entwickler. Der ganze Ordner "development" kommt 
schlussendlich nicht in die Download-Archive, deshalb habe ich die 
Doxygen Doku auch von "documentation" nach "development" verschoben.

Was ich aber schön finden würde, wäre wenn man die Änderungen im Ordner 
"doxygen" im Changelog in Google Code irgendwie ausblenden könnte. Aber 
ich vermute mal das ist nicht möglich (?)...

@ Marco tom Suden (falls du noch mitliest)
Wenn du auf deinem Windows Server den HTTP Zeichensatz auf "UTF-8" 
einstellst, werden dann die Umlaute richtig dargestellt (nicht bei den 
Daten schauen die aus der Datenbank kommen, sondern bei statischen 
Inhalten, z.B. die Tabellenüberschrift "Datenblätter")?

von Uhu U. (uhu)


Lesenswert?

Urban B. schrieb:
> z.B. macht es nicht viel Sinn dass der Benutzer schlussendlich
> auch die Möglichkeit hat, Änderungen an der Doku durchzuführen (sieht
> irgendwie komisch aus wenn man die Doku einer Software selbst verändern
> kann).

Das sehe ich nicht ganz so. Wenn die Doku schlecht ist - MS ist in 
dieser Disziplin ganz große Klasse! - ist es mehr als wünschenswert, daß 
man als Nutzer z.B. leeres Stroh eliminieren, verkorkste Übersetzungen, 
oder Formulierungen reparieren kann...

Dokuwiki ist genau dafür ganz prima geeignet: man kann neue Versionen 
einspeisen und private Änderungen notfalls mit Hilfe der diff-Funktion 
finden und übernehmen, falls sinnvoll.

Aber es ist durchaus sinnvoll, die Änderbarkeit an einen speziellen 
Wiki-Login zu koppeln, daß nicht aus Versehen Änderungen gemacht werden. 
Der Username muß natürlich bekannt gemacht werden.

von Gelöscht (kami89)


Lesenswert?

Uhu Uhuhu schrieb:
> Aber es ist durchaus sinnvoll, die Änderbarkeit an einen speziellen
> Wiki-Login zu koppeln, daß nicht aus Versehen Änderungen gemacht werden.
> Der Username muß natürlich bekannt gemacht werden.

Ja, so ähnlich hätte ich mir das auch vorgestellt. Also dass 
standardmässig die Editier-Buttons nicht sichtbar sind (die meisten 
Anwender werden die nicht brauchen), aber mit der Möglichkeit, dass man 
eben doch was verändern kann wenn man möchte (z.B. wir Entwickler 
brauchen das ja). Sei es ein Login, oder evtl. auch in der Konfiguration 
von Part-DB eine Option wie "Änderungen in der Dokumentation zulassen".

Wie gesagt, ich habe mich nicht grossartig mit DokuWiki beschäftigt. Ich 
habs einfach mal in Part-DB eingefügt und ein paar grundlegende 
Einstellungen getätigt, so dass wir mal eine Grundlage für die Doku 
haben. Ihr dürft daran gerne noch Einstellungen verändern usw.

von Udo N. (weinbauer73)


Lesenswert?

Uhu Uhuhu schrieb:
> Udo Neist schrieb:
>> JScript ist halt nicht Javascript und das nervt tierisch :(
>
> Tja, das ist das Echo des Browserkrieges.

Problem ist gelöst. Ajax funktioniert jetzt auch mit dem IE8. Jetzt muss 
ich erstmal einen Schönheitsfehler im Bezug auf die Testseite beheben, 
dann kommen die Kommandos hinzu. Ich habe mir überlegt, dass ich die 
Verzeichnisse per Konfiguration von Änderungen ausnehmen kann (jetziges 
Verhalten). Alternativ würde man per Einfachklick das Verzeichnis zum 
Bearbeiten markieren und ein weiterer Klick würde das Verzeichnis 
öffnen. Neue Ordner können nur dann erstellt werden, wenn eine weitere 
Konfigurationsoption dies freischaltet. Schließlich soll nicht jeder an 
der bestehenden Struktur was ändern können, eventuell neu erstellte 
Verzeichnisse würde vom System u.U. auch gar nicht berücksichtigt 
werden.

von Stefan . (xin)


Lesenswert?

Habt Ihr eigentlich ein Release-Datum (final) auf dem Schirm, oder 
entwickelt Ihr so vor Euch hin ?

von Udo N. (weinbauer73)


Lesenswert?

Ne, derzeit haben wir kein Release-Fahrplan. Nach meinem Wissen gibt es 
derzeit drei Baustellen:

1) Umstellung des Codes auf Modul-/Klassenbasis
2) Neuer Filemanager
3) Dokumentation im Form eines Wikis

Ich vermute mal, dass wir irgendwo bei 90% sind. Am eigentlichen Code 
arbeitet derzeit nur Urban und ich bin am Filemanager dran. Nach der 
Veröffentlichung der Version 0.3 soll die Kommunikation zwischen 
Anwendung und Server auf Ajax umgestellt werden und somit die veraltete 
Frame-Variante komplett ersetzen.

Für den produktiven Betrieb ist die 0.2.x vorgesehen.

Grüße
Udo

von Gelöscht (kami89)


Lesenswert?

So, die Importfunktionen sollten nun (r606) auch funktionieren. Falls 
noch jemand Bugs findet, bitte melden :-)
Ihr glaubt gar nicht, wie froh ich bin dass wir nun Transaktionen 
verwenden können :-D Eine Funktion, die die Werte aus dem Import-Text 
auf Gültigkeit überprüft, wurde so zum Kinderspiel. Einfach alles normal 
importieren, aber am Schluss ein Rollback statt einem Commit ausführen 
:-)

Ausserdem habe ich den Code-Styleguide vom Google-Code Wiki in die 
Doxygen-Doku verschoben. So gibts schlussendlich nur zwei 
Nachschlagewerke: Die Doxygen Doku für Entwickler, und das DokuWiki für 
Anwender (und beide Nachschlagewerke sind natürlich auch online auf der 
Demo-Seite verfügbar).

So braucht es das Google Code Wiki gar nicht mehr.

Den Code-Styleguide sollte demnächst dann unter 
http://partdb.grautier.com/uneistkami89/development/doxygen/html/styleguide.html 
erreichbar sein.

Gespeichert ist die Seite übrigens unter 
"development/doxygen/related_pages/". Man kann sehr schön eigene Seiten 
in die Doxygen Doku aufnehmen, die sich dann auch ins Menü integrieren. 
Wie man das genau macht, kann man in den in diesem Ordner vorhandenen 
Dateien nachschauen.

Ich wäre nun übrigens langsam für den Dateimanager bereit, wie sieht die 
Lage bei dir aus, Udo? :-)

mfg

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
> Ich wäre nun übrigens langsam für den Dateimanager bereit, wie sieht die
> Lage bei dir aus, Udo? :-)

Ich wollte heute einige der Kommandos fertig machen, damit der 
Filemanager zumindest mit den Basisfunktionen auch nutzbar ist. Vorerst 
halt nur für Dateien, das mit den Verzeichnissen kommt später noch dazu. 
Den Upload-Teil werde ich die Tage dann integrieren.

von Udo N. (weinbauer73)


Lesenswert?

Aktueller Stand Filemanager:

- Befehle funktionieren, sind aber auf Dateien beschränkt
- Alle Meldungen über einen modalen Dialog (Formulare, Meldungen)
- Fehlermeldungen des Webservers werden als Statusmeldung direkt im 
entsprechenden Block angezeigt (kein Dialog)
- (Access-)Token als Absicherung für die Kommandos, da man auf den 
HTTP-Referrer nicht bauen kann
- Vorschau von Grafiken
- Mimetyp-Grafiken für alle anderen Files (optional)
- Anpassen des Designs über CSS. Nur wenige Elemente sind in den 
Templates fest über Style-Regeln definiert.

Basis sind XMLHttpRequests und JSON auf Seite von Javascript. Die 
Javascript-Klassen haben einen eigenen Namespace.

ToDo:

- Verzeichnisfunktionen einführen
- Fehlermeldungen des Webservers als modaler Dialog

Die aktuelle Version werde ich die Tage von den Eigenheiten meiner 
Webseite befreien und erstmal in den Development-Ordner kopieren. Eine 
Minidoku füge ich hinzu.

Grüße
Udo

Edit:
Es fehlt noch der Upload-Teil. Hab mich erstmal auf meinen eigenen Code 
konzentriert ;-)

von Udo N. (weinbauer73)


Lesenswert?

Revision 609: Der Filemanager ist im Verzeichnis 
"development/filemanager" zu finden.

von Gelöscht (kami89)


Lesenswert?

Super, dann geht die Version 0.3.0 nun ja endlich langsam in die 
Endphase über :-)

Also ich bin auch noch nicht ganz fertig, aber es sind jetzt 
hauptsächlich nur noch Kleinigkeiten die noch fehlen. Und beim Testen 
werden dann sicher auch noch einige Bugs auftauchen...

Ich wollte dich aber schon lange mal noch was ganz anderes fragen. Du 
hast  ja mal das Skript "svn.sh" erstellt, das ich mittlerweile übrigens 
in "tools.sh" umbenannt habe (habe noch eine neue Funktion hinzugefügt, 
die nichts mit SVN zu tun hat). Ein Teil dieser Funktionen sind übrigens 
nun auch sehr bequem über Part-DB unter "Entwickler-Werkzeuge" 
erreichbar. Ich bin einfach zu faul um jedesmal ein Terminal aufzumachen 
;-)
Meine Frage bezieht sich aber auf das Commiten. Du hast ja dort den 
Parameter "--force" mit eingebaut. Ich frage mich aber ein bisschen, ob 
das geschickt ist. Einerseits werden doch so eventuelle Änderungen im 
Repository, die seit dem letzten Update gemacht wurden, einfach 
überschrieben, oder? Und andererseits habe ich gelesen dass dann die 
Ignore-Dateien auch nicht mehr ignoriert werden (verwende ich für den 
Debug-Log und config.php). Zweiteres ist nicht schlimm, aber ersteres 
könnte zu Problemen führen wenn man nicht aufpasst.

Ich selber benutze einen grafischen SVN Client der sich in Nautilus 
integriert. Bei jedem Commiten überfliege ich alle geänderten Dateien 
nochmal um zu prüfen, ob auch wirklich genau das hochgeladen wird, was 
hochgeladen werden soll. Und falls meine lokale Kopie nicht mehr aktuell 
ist, bekomme ich eine Fehlermeldung weil ich kein "--force" verwende. So 
werde ich gezwungen, erst mal ein Update durchzuführen und es wird 
sichergestellt dass ich keine Dateien aus Versehen überschreibe.

Ich habe das leider auch schon bei anderen Projekten erlebt (git) dass 
Leute einfach mal drauflos committen und Änderungen von Anderen wieder 
(aus Versehen) rückgängig machen. Das ist extrem mühsam...

Meine Frage wäre also: Sollten wir da nicht besser das "--force" 
entfernen, um unbeabsichtigte Änderungen zu vermeiden?

mfg

von Udo N. (weinbauer73)


Lesenswert?

Das "--force" bezieht sich ja nur auf "svn add" und durchsucht rekursiv 
alle Verzeichnisse. Mit "--no-ignore" würdest du gesperrte Dateien 
hinzfügen, so lese ich zumindest die Doku. Zudem fehlt da eh noch der 
Befehl "svn resolve --accept working *" (oder ne Variante), um Konflikte 
zu lösen. Das Script ist noch lange nicht perfekt und sollte ja auch 
erstmal nur die Arbeit in meinem Branch erleichtern. Es ist halt nicht 
für Mehrbenutzer-Repos ausgelegt und darf jederzeit angepasst werden :-)

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Das "--force" bezieht sich ja nur auf "svn add"

Ups, da habe ich wohl nicht richtig hingeschaut^^ Sorry, ich dachte das 
war beim "commit" ;-) Beim "add" sollte das dann ja tatsächlich nicht so 
wild sein...

Udo Neist schrieb:
> Mit "--no-ignore" würdest du gesperrte Dateien
> hinzfügen, so lese ich zumindest die Doku.

Jo nach Doku würde ich das auch sagen, wenn ich aber diverse Meldungen 
in Foren richtig verstanden habe, tut es das eben nicht. Ich habs 
allerdings nie selber ausprobiert, das Committen mit der Konsole ist mir 
etwas ungeheuer. Ich setze da lieber auf hübsche Klicki Bunti GUIs, dann 
kommt auch das richtige bei raus :-D

Aber dann hat sich das ja auch mehr oder weniger erledigt. Ich wollte 
nur sichergehen dass man (die, die es verwenden) mit dem Skript keine 
unbeabsichtigten Sachen im Repo überschreibt.

Das nächste Mal schaue ich mir den Code etwas genauer an bevor ich hier 
nachfrage, versprochen! :-D

von Udo N. (weinbauer73)


Lesenswert?

Lieber ne doofe Frage stellen, als dumm sterben ;-)

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Lieber ne doofe Frage stellen, als dumm sterben ;-)

Hehe, wie wahr :-)

von Gelöscht (kami89)


Lesenswert?

...wie still es doch sein kann in diesem Thread :-)

Ich habe vor ein paar Wochen noch ein neues (grosses...) Projekt 
angefangen, daher ist Part-DB in letzter Zeit leider etwas auf der 
Strecke geblieben. Dieses Wochenende versuche ich aber wieder daran zu 
arbeiten :-)

@Udo, siehts bei dir (bzw. beim Dateimanager) ähnlich aus oder bist du 
in der Zwischenzeit weiter gekommen?

mfg
Urban

von Udo N. (weinbauer73)


Lesenswert?

Leider nein :( Wird wohl noch bis Ende April oder Mitte Mai dauern, bis 
ich wieder mehr Zeit habe. Im Moment raubt mir die Vertretung eines 
Kollegen etwas die Zeit. Wie es im Juni aussieht, weiß ich auch noch 
nicht. Da steht bei uns eine Reakkreditierung an. Ich versuch zumindest 
mal den Uploader zu integrieren, damit wenigstens diese Baustelle im 
Dateimanager geschlossen werden kann.

von Udo N. (weinbauer73)



Lesenswert?

So, habe einen einfachen Uploader integriert. Es wird kein Flash oder 
ähnliches verwendet. Nur der Browser sollte möglichst aktuell sein. Es 
fehlt nur noch die Option, nach dem Upload direkt ins Zielverzeichnis zu 
wechseln.

von Gelöscht (kami89)


Lesenswert?

Ok super, also wenn der Uploader schon funktionsfähig ist, kannst du ihn 
ja mal ins SVN hochladen.

Wenn der Uploader einen Haufen Dateien braucht, wäre es vielleicht 
sinnvoll wenn wir ihm ein eigenes Verzeichnis spendieren, also im 
Hauptverzeichnis einen Unterordner "filemanager/" o.ä. (anstatt 
JS-Dateien in "javascript/", CSS in "templates/" usw.)

von Udo N. (weinbauer73)


Lesenswert?

Das Wechseln nach 5s in das Zielverzeichnis funktioniert jetzt auch. Ob 
das auch bei fehlgeschlagenen Uploads funktioniert, kann ich noch nicht 
beurteilen, da es nur sporadisch auftritt.

Die Installation in ein eigenes Verzeichnis wäre mir auch lieber, da der 
Filemanager ja absichtlich als Add-On/Modul für ein CMS oder ähnliches 
gedacht ist. Javascript und CSS müssen eingebunden, die 
Grafikverzeichnisse verlinkt werden. Ansonsten sollte es ziemlich 
pflegeleicht sein. Ich werde vielleicht morgen mal die aktuelle Version 
ins Repo einbinden. In die jetzige Version der Part-DB kann man 
allerdings nur das Aufrufen per Popup-Window nutzen. Eigentlich ist es 
für die Nutzung innerhalb eines DIV-Elements auf der Hauptseite 
vorgesehen. Es wird ein Fenster mit mindestens 600px Breite gebraucht.

von Udo N. (weinbauer73)



Lesenswert?

Nächstes Feature: Interner Viewer ähnlich eines Dialogs

Unterstützt werden PDF und Images. PDF wird vom jeweiligen Plugin 
angezeigt, die Images werden bei Übergröße über CSS skaliert. Letzteres 
ist kein ideales Verhalten, aber sollte bei jedem Browser funktionieren. 
Kleinere Bilder füllen den Viewer nicht aus. Dieser wird nicht 
angepasst. Wäre noch was für die ToDo-Liste. Vielleicht unterstütze ich 
später auch noch Videos oder anderes per object-Tag.

von Udo N. (weinbauer73)


Lesenswert?

Ich habe den Filemanager mit Kommentaren versehen und ein paar kleinere 
Anpassungen für Part-DB gemacht. Wie man den Filemanager in einen 
Webseite einbaut, kann man in der Datei vlib_filemanager.html sehen. 
dom.css und filemanager.css dabei nicht vergessen!

Aktuelle Version ist in der Revision 613 enthalten.

ToDo:
- Viewer soll auch Text-Dateien anzeigen können, dabei soll 
Syntax-Highlightning unterstützt werden.
- Hauptverzeichnis für Dateioperationen wird in filemanager.php bzw. 
conf.php definiert, aber kann dort noch nicht gesperrt werden. Geht 
derzeit nur über eine interne Variable in filemanager.js.
- README ändern, da es nicht mehr aktuell ist.
- Doxygenkompatible Kommentare, kann auch jemand vom Part-DB-Projekt 
übernehmen ;-)

von Gelöscht (kami89)


Lesenswert?

Ich habe mir das mal angeschaut aber ich blicke noch nicht so richtig 
durch :-(

Wie würde man den Filemanager später z.B. in "edit_part_info.php" (bzw. 
dem *.tmpl davon) einbinden?

Die Bedienung stelle ich mir etwa so vor (Bsp. "edit_part_info.php"):
- Der Benutzer klickt unter Dateianhänge/Dateiname auf den Button "..."
- Der Filemanager öffnet sich in einem neuen Fenster (Popup)
- Falls nötig, kann der Benutzer die Datei erst noch hochladen
- Der Benutzer wählt die entsprechende Datei aus und klickt auf "OK"
- Der Filemanager schliesst sich und der Pfad zur gewählten Datei wird 
automatisch in das Textfeld "Dateiname / URL" in "edit_part_info.php" 
geschrieben.

Wie man das so hinkriegt weiss ich aber leider nicht... ;-)

mfg

von Udo N. (weinbauer73)


Lesenswert?

Dachte ich mir schon, dass dazu noch Fragen sind :-) Ich werde noch eine 
Testseite machen, auf dem der Aufruf für den Upload-Teil gezeigt wird. 
Erst wenn die dann so läuft wie angedacht, würde ich den Filemanager in 
Part-DB einbauen.

Im Grunde besteht der Uploadmanager nur aus einem Dialogfenster und 
einem zweiten Element für die Anzeige des Uploads selbst. Innerhalb der 
gleichen Seite wäre es ein
1
onclick="filemanager.command('upload');"
auf einem entsprechenden Button. Für den Aufruf in einem Popup muss man 
mehr machen. Erstmal ein onclick-Event, das ein neues Fenster erzeugt. 
In dem Fenster wird dann der komplette Filemanager aufgebaut, aber die 
normalen Funktionen wären abgeschaltet, d.h. das Element links oben mit 
den Verzeichnissen wäre abgeschaltet.

von Gelöscht (kami89)


Angehängte Dateien:

Lesenswert?

Okay dann warte ich diesbezüglich noch ab :-)

Momentan habe ich noch ein anderes Problem. Unter "Zu bestellende Teile" 
werden nun ja jeweils zu jedem Bauteil alle verfügbaren 
Einkaufsinformationen angezeigt, jeweils mit einem Radiobutton um 
auszuwählen, welchen Artikel man nun genau bestellen möchte. Anhand 
dieser Auswahl wird dann übrigens der Gesamtpreis der Bestellung 
berechnet, und auch für den Bestelllisten-Export ist diese wichtig.

Das Problem ist nun aber, dass die Radiobuttons etwas höher sind als der 
Text alleine, und das führt bei mehreren Einkaufsinformationen zu einer 
Verschiebung in der Höhe (zwischen den verschiedenen Spalten). Siehe 
angehängtes Bild.

Ich habe keine gescheite Idee, wie man die Zeilen jeweils aufeinander 
ausrichten könnte. Die einzige Idee war, dass man für jede 
Einkaufsinformation eine eigene Zeile macht, und die dann mit "rowspan" 
zusammenfasst wo sie nicht gebraucht werden. Allerdings würde das extrem 
viel Aufwand bedeuten, vieles verkomplizieren und neue Probleme mit sich 
ziehen.

Hat jemand eine gute Idee wie man das machen könnte?

Nachtrag:
Das Beispiel im Anhang ist natürlich ziemlich übertrieben. Bei 2 oder 3 
Einkaufsinformationen ist dieses Problem erst leicht ersichtlich. 
Trotzdem ist es unschön und sollte wenn möglich verbessert werden :-)

von Udo N. (weinbauer73)


Lesenswert?

Warum ausgerechnet Radio-Buttons? Select mit allen Infos wäre passender.

von Udo N. (weinbauer73)


Lesenswert?

Auf http://phpbookworm.singollo.de/project/part-db/index.html ist der 
Filemanager in zwei Modi zu sehen:

- Innerhalb eines DIV-Elements
- In einem Popup-Fenster

Ausprobieren ist ausdrücklich erlaubt. Fehlerberichte wären sehr 
hilfreich, um den Filemanager fertig zu bekommen.

ToDo:
- Breadcrumb-Anzeige der Verzeichnisstruktur hinzufügen.
- README ändern, da es nicht mehr aktuell ist.
- Doxygenkompatible Kommentare, kann auch jemand vom Part-DB-Projekt
übernehmen ;-)

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Warum ausgerechnet Radio-Buttons? Select mit allen Infos wäre passender.

Daran habe ich auch schon gedacht. Irgendwie finde ich es aber mit 
Radiobuttons übersichtlicher, weil man direkt auf einen Blick alle 
Möglichkeiten sieht. So sieht man halt sehr schnell, welche Teile man 
bei welchen Lieferanten bekommt und kann so entscheiden, wo man 
bestellen möchte.

Wenn ich z.B. 10 zu bestellende Teile habe, müsste ich bei Comboboxen 
erst bei jedem einzelnen Teil schauen (klicken, schauen, anwählen), ob 
es das bei z.B. Conrad gibt. Bei Radiobuttons sieht man auf einen Blick
- "aha, 3 der Teile gibts bei Reichelt, aber alle 10 gibts bei Conrad, 
also bestelle ich alle 10 bei Conrad"
- oder "aha, 5 gibts bei Reichelt und Conrad, die anderen 5 gibts nur 
bei Conrad, ich muss also sowieso bei beiden Lieferanten bestellen, 
markiere also bei den 5 Teilen wo ich wählen kann jeweils den 
Lieferanten mit dem tieferen Preis".

Und dann kommt dann manchmal auch noch der Mindestmengenzuschlag hinzu, 
den man berücksichtigen muss...

kurz gesagt: Radiobuttons halte ich für übersichtlicher (klar, wenn 
jedes Teil 10 verschiedene Einkaufsinformationen hat, wirds auch 
unübersichtlich. Aber ich schätze mal die meisten Benutzer von Part-DB 
werden maximal 3 Einkaufsinformationen pro Bauteil haben).

Theoretisch könnte man aber auch beide Varianten implementieren, und die 
Wahl dem Benutzer überlassen. Ist eigentlich auch ganz einfach, so wie 
die Tabellen jetzt aufgebaut sind (Spalten in der config.php definiert).

von Udo N. (weinbauer73)


Lesenswert?

Warum dann nicht alle Elemente mit einem identischen height-Wert 
ausstatten? Entweder Listen oder DIV/P-Elemente verwenden. Ist bisschen 
Fummelarbeit, zugegeben, aber die praktikabelste Lösung.

von Gelöscht (kami89)


Lesenswert?

Funktioniert das dann auch ziemlich 
browser-/schriftarten-/betriebssystemunabhängig?

Und sollte man das am besten gleich in CSS machen?
Bin leider in HTML/CSS nicht wirklich fit...ein Beispiel wäre super :-)

von Udo N. (weinbauer73)


Lesenswert?

Entweder du nimmst bei jedem Element das Inline-Verfahren
1
style="height=1.5em;"
oder du definierst das im CSS
1
eklist{height: 1.5em;}
und bindest das dann als
1
class="eklist"
ein. Im Template muss das dann nur einmal pro Spalte an der richtigen 
Stelle der Schleife eingetragen werden. Steht da nur ein BR-Tag, dann 
mach mal daraus ein DIV-Element.

PS: Die Höhe hab ich einfach mal beispielsweise genommen. Kommt auf das 
Radio-Element an, wie hoch das dann tatsächlich ist. "em" ist eine 
relative Größe.

von Gelöscht (kami89)


Lesenswert?

Super, danke!

Mit ein bisschen Internetrecherche bin ich nun auf das hier gekommen:
1
<div style="display:inline-block; height:1.7em; line-height:1.7em;">

Das scheint zu funktionieren, zumindest im IE und im FF (Win7/Ubuntu) 
siehts nun so aus wie es soll.

Dann kann ich das ja endlich mal abhaken...

Wenn ich mich nicht täusche, ist nun etwa alles, was ich für die Version 
0.3.0 vorgesehen habe, eingebaut. Ich wäre froh, wenn ein paar Leute nun 
langsam mit dem Testen beginnen würden, es gibt sicher noch viele Bugs 
und Sachen die ich vergessen habe :-)

Vom geplanten Systemupdate sind halt schon ein paar Fragmente in der 
aktuellen Version drin, die kann man ignorieren, die kommen nicht in die 
v0.3.0. Aber der Filemanager kommt natürlich rein, der ist aber noch 
nicht fertig.

Ich würde mich sehr über Rückmeldungen aller Art (Bugs, Vorschläge, 
Bemerkungen) freuen!

Noch nicht wirklich ausgiebig getestet sind übrigens der Installer und 
die Import/Exportfunktionen, hier ist also das Testen besonders wichtig.

von Udo N. (weinbauer73)


Lesenswert?

Ich habe die komplette Testsuite mit dem aktuellen Stand des 
Filemanagers reinkopiert. Ist recht groß das ganze, da es neben GeShi 
auch noch die vlibTemplate-Engine drin hat. Letztere ist eigentlich 
überflüssig, aber ich wollte die Testsuite nicht extra umschreiben.

Die beiden Dateien index.html und popup.html zeigen, wie man den 
Filemanager in eine Seite integriert.

Revision 615 steht zur Verfügung.

ToDo:
- Globale Rechte und Benutzerrechte integrieren. Einerseits werden 
Standardrechte zu definieren sein, andererseits soll die Token-Abfrage 
zu einem Rechtesystem erweitert werden.
- Doxygenkompatible Kommentare, kann auch jemand vom Part-DB-Projekt
übernehmen ;-)
- Aktualisierung von http://weinbauer73.myparts.info/ (Test-Branch)

von Gerald *. (pyromane)


Angehängte Dateien:

Lesenswert?

Udo Neist schrieb:
> Ausprobieren ist ausdrücklich erlaubt. Fehlerberichte wären sehr
> hilfreich, um den Filemanager fertig zu bekommen.

Gefällt mir schon gut.

Kleinigkeiten hätte ich allerdings:
Obwohl ich bereits im Filemanager einen Unterordner ausgewählt habe bzw 
mich darin befinde, muss ich im Uploader den Unterordner erneut 
auswählen.

Im IE 9 funktioniert leider weder "Filemanager (gleiche Seite)" noch 
"Filemanager (per Popup)" (Popup geht zwar auf, aber es wird kein Inhalt 
angezeigt)

Beim FF und Opera gibts kleinere Schönheitsfehler, siehe Anhang.

mfg Pyro

von Udo N. (weinbauer73)


Lesenswert?

Mit dem erneuten Auswählen im Uploadmanager hab ich erstmal so gemacht. 
Kann ich ja noch so umbauen, dass das angezeigte Unterverzeichnis als 
Vorauswahl dient.

Im FF habe ich eigentlich keine Darstellungsfehler, hatte das mit der 
19er und jetzigen 20er so entwickelt. Mit Opera, Chrome und dem IE (nur 
bis IE 8, da nur XP) hab ich es noch nicht probiert, aber ich kann mich 
die Tage mal ransetzen.

von Udo N. (weinbauer73)


Lesenswert?

Ein Fehler hab ich schon gefunden. Ältere Browser verstehen den Mime-Typ 
"application/javascript" nicht, sondern die nie standardisierte Version 
"text/javascript". Warum der IE 8 dann immer noch das dom-Objekt nicht 
findet, konnte ich heute morgen noch nicht klären.

von Udo N. (weinbauer73)


Lesenswert?

Ich hab dem IE8 zumindest schon mal die Anzeige im gleichen Fenster 
beigebracht. Bis auf den Darstellungsfehler und dem fehlenden Support 
für den Multifileupload von HTML5 läuft es. Eigentlich wollte ich das 
unabhängig von Flash oder Java halten, um nicht irgendwelchen 
IT-Restriktionen zu wider zu laufen :(

von Christoph Emonds (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

erstmal vielen Dank für PartDB. Das ist eine tolle Sache und hilft 
ungemein. Ich habe eine kleine Ergänzung für den Import von Bauteilen 
bei einer Baugruppe gemacht, so dass man nun die Bauteile nicht nur über 
die ID sondern auch über den Bauteilnamen importieren kann. Vielleicht 
ist das ganze ja auch für andere hilfreich. Der Patch gegenüber dem 
branch uneist_kami89 hängt an.


Viele Grüße,
Christoph

von Gelöscht (kami89)


Lesenswert?

Hallo Christoph,

Danke für den Patch, das ist keine schlechte Idee. Ich habe ihn kurz 
angeschaut und werde ihn dann gleich übernehmen (mit ein paar 
Anpassungen - z.B. wenn es zu einem Namen mehrere exakt gleichnamige 
Bauteile gibt, soll der Vorgang abgebrochen werden weil das Ergebnis 
nicht eindeutig ist).

Momentan bin ich mich übrigens grad selbst am bestrafen ;-)
Als ich die Klasse "File" und die davon abhängigen Klassen erstellte, 
war mir bereits bewusst dass "File" ein nicht sehr geschickter Name ist, 
bin aber grad auf keine bessere Idee gekommen. Danach ist es leider in 
Vergessenheit geraten... Nun bin ich dabei, den Namen "File" durch 
"Attachement" zu ersetzen, diese neue Bezeichung ist viel 
aussagekräftiger und zutreffender. Man kann sich ja etwa vorstellen 
wieviel Arbeit das gibt... Und nein, automatisches copy&replace geht 
nicht, da "File" auch in anderen Zusammenhängen verwendet wird ;-)

Ich werde dann schon bald diese zwei Änderungen ins Repository 
hochladen. Dann muss man auf jeden Fall wieder eine Datenbank der 
Version 12 laden, da auch die Tabelle "files" in "attachements" 
umbenannt wird.

mfg

von Christoph Emonds (Gast)


Lesenswert?

Hallo,

es freut mich, dass du die Funktion einbaust. Dadurch, dass in meinem 
Fall die Namen eindeutig sind, habe ich nicht dran gedacht, da auf 
Mehrdeutigkeit zu testen.
Von Klassennamen, mit denen man sich ein Bein stellt, kann ich auch ein 
Lied singen (ich verdiene meine Brötchen als Softwareentwickler). Da 
hilft dann einfach nur Augen zu und durch :)

Im Moment ist bei mir das Datenschema Version 13. Heißt dass, dass ich 
erst ein Downgrade machen muss, bevor ich dann die neue Version mit den 
zwei Änderungen verwenden kann?

Viele Grüße,
Christoph

von Gelöscht (kami89)


Lesenswert?

So, die Änderungen sind nun im Repository (r616).

Ich habe vorher gar nicht gesehen, dass im Patch das Suchen des 
entsprechenden Bauteiles in "build_deviceparts_import_template_loop()" 
geschah, das ist irgendwie nicht so passend weil diese Funktion nur für 
das Erzeugen eines Template-Loops (also für die Ausgabe) verantwortlich 
ist. Die eigentliche Import-Funktion braucht die Suchfunktion allerdings 
auch, daher habe ich sie nun in eine eigene Funktion 
"match_devicepart_names_to_ids()" ausgelagert. Scheint soweit zu 
funktionieren, wenns Probleme gibt bitte melden :-)

Christoph Emonds schrieb:
> Von Klassennamen, mit denen man sich ein Bein stellt, kann ich auch ein
> Lied singen (ich verdiene meine Brötchen als Softwareentwickler).

Ja, das glaube ich :-)
Ich bin zwar bei solchen Sachen ein Perfektionist, habe aber das Problem 
dass mir manchmal keine passenden Namen einfallen. Das war mir auch 
bewusst als ich die Klasse "File" getauft habe, daher stand das schon 
von Anfang an auf meiner (virtuellen :-) ToDo-Liste. Die virtuelle 
ToDo-Liste ist aber leider auch nicht von Datenverlust befreit :-D

Christoph Emonds schrieb:
> Im Moment ist bei mir das Datenschema Version 13. Heißt dass, dass ich
> erst ein Downgrade machen muss, bevor ich dann die neue Version mit den
> zwei Änderungen verwenden kann?

Ja, die Entwicklung findet momentan im Branch "uneist_kami89" statt, und 
die aktuelle Version ist noch nicht für den produktiven Einsatz gedacht. 
Heisst also, ich passe die Datenbankstruktur ab und zu wieder an, ohne 
ein entsprechendes Update rauszugeben. Stattdessen muss wieder eine alte 
Datenbank geladen werden, sonst läuft Part-DB nicht mehr korrekt.

Ein Downgrade auf v12 gibt es nicht. Ich hoffe, du setzt Part-DB 0.3.0 
nicht schon produktiv ein? ;-)

mfg

von Udo N. (weinbauer73)


Lesenswert?

Vielleicht sollte man sich ein Deutsch-Englisch-Wörterbuch neben den PC 
legen, um passende englische Wörter zu finden? ;-)

PS: Mittlerweile hab ich auch Win7 in einer virtuellen Umgebung. So kann 
ich dann auch in meinem Kurzurlaub um den 1. Mai den Filemanager weiter 
entwickeln.

von Christoph Emonds (Gast)


Lesenswert?

Hmmm... Angenommen ich würde gerne die Datenbankstruktur meines 
"Testsystems" migrieren, kann ich mir die dafür nötigen Änderungen aus 
den Commit messages zusammensuchen und selber ein Änderungsskript 
erstellen? Hast du denn schon eine Idee, wann ein neues Release kommt? 
Hatte mich da wohl von dem RC1 auf der Startseite dazu verleiten lassen, 
die Version schon einzusetzen.

Vielen Dank schonmal :)

Viele Grüße,
Christoph

von Gelöscht (kami89)


Lesenswert?

> Hatte mich da wohl von dem RC1 auf der Startseite dazu verleiten lassen,
> die Version schon einzusetzen.

Naja...Wir entwickeln ja laufend im Repository, und momentan arbeiten 
wir auf die 0.3.0 RC1 hin. 0.3.0 Ist also quasi das Ziel, nicht der 
momentane Stand. Wenn die RC1 fertig ist, wird sie als Downloadpaket 
angeboten. Solange wir kein fertiges Paket anbieten, ist es noch nicht 
für Endanwender bestimmt.
Mir scheint, vielen Leuten ist nicht klar bewusst dass das Repository 
grundsätzlich nur für die Entwickler gedacht ist. Für den Endanwender 
stricken wir dann Archive, die man (ohne SVN Client) runterladen kann.

> Hmmm... Angenommen ich würde gerne die Datenbankstruktur meines
> "Testsystems" migrieren, kann ich mir die dafür nötigen Änderungen aus
> den Commit messages zusammensuchen und selber ein Änderungsskript
> erstellen?

Also zurück zur v12 migrieren wäre ein riesen Aufwand, bzw. u.U. gar 
nicht mehr möglich weil dort gewisse Funktionen noch nicht zur Verfügung 
standen. Wenn es dir nichts ausmacht wäre es einfacher, wenn du deine 
Datenbank von nun an jeweils selber aktualisierst, bis dann die RC1 
offiziell fertig ist. Bis dahin sollte es eigentlich fast keine 
Änderungen mehr geben (hoffe ich mal ;-).

Die Datenbankupdates sind in der updates/db_update_steps.php 
aufgelistet.
Im Commit von r616 siehst du, was du alles ändern müsstest, damit du 
deine Datenbank mit der Version 0.3.0 weiterverwenden könntest.

Wenn es nur eine handvoll Artikel sind, würde ich aber eher eine leere 
DB v12 nehmen und die Bauteile von Hand übertragen. Halt mit den 
Einschränkungen von v12, die z.B. nur einen einzigen Lieferanten pro 
Bauteil unterstützt.

> Hast du denn schon eine Idee, wann ein neues Release kommt?

Das ist schwierig zu sagen. Sobald Udo den Dateimanager fertig hat, 
können wir ausgiebig mit dem Testen anfangen und dann schon bald einen 
ersten Release Kandidaten rausgeben. Ausser die 80/20-Regel macht uns 
noch einen Strich durch die Rechnung :-)

von Christoph Emonds (Gast)


Lesenswert?

Hallo,

mir war schon bewußt, dass das 0.3.0 Repository nicht stabil ist, aber 
ich bin halt eher davon ausgegangen, dass sich das weniger auf die 
Datenbank als vielmehr auf das Frontend bezieht. Ich hatte mir zuerst ja 
auch die 0.2.2 installiert, aber später dann geupgradet, weil ich ja 
noch die Änderungen bzgl. des Bauteileimports machen wollte. Da sich ja 
schon einiges im Vergleich zur 0.2.2 getan hat, hielt ich es für 
sinnvoll, das ganze dann in der aktuellen Version zu machen.
Das ganze ist aber auch kein Problem. Ich bastel mir jetzt einfach immer 
wenn es noch Änderungen am Datenbankschema gibt ein Updateskript und 
pass das ganze dann bei mir an. Solange solche Änderungen in den 
Commitmessages stehen, geht das schon :-)
Auf jeden Fall vielen Dank für das Tool und eure Arbeit.

Viele Grüße,
Christoph

von Gelöscht (kami89)


Lesenswert?

Christoph Emonds schrieb:
> Solange solche Änderungen in den
> Commitmessages stehen, geht das schon :-)

Jup, das werden sie. Sollten aber wie gesagt nicht mehr häufig 
vorkommen.

Christoph Emonds schrieb:
> Auf jeden Fall vielen Dank für das Tool und eure Arbeit.

Gerne doch :-)

@K.J. falls du mitliest:
In der Online Demo sollte man nun auch wiedermal eine Datenbank der 
Version 12 einspielen. Ausserdem, wäre es vielleicht möglich Doxygen auf 
dem Server zu installieren? Ich habe nun nämlich die Doxygen Doku aus 
dem Branch entfernt, weil die stört in den Commits einfach zu stark, die 
wirklich wichtigen Änderungen gehen dabei unter. Wer sie braucht, kann 
sie ja ganz einfach selber erstellen, das Doxyfile ist ja vorhanden. 
Wenn nun auf dem Demo Server Doxygen auch installiert wäre, könnte man 
ab und zu mal in den Entwicklerwerkzeugen auf "Doxygen Doku 
aktualisieren" (o.ä.) klicken, dann steht auch diese Doku wieder online 
zur Verfügung. Noch komfortabler wäre natürlich, wenn sie jeweils nach 
dem auschecken der aktuellen SVN Revision gleich automatisch erstellt 
werden würde, muss aber nicht unbedingt sein.

Gruss
Urban

von K. J. (Gast)


Lesenswert?

Hi ja mache  ich zum WE hin

mfg

von Christoph K. (Gast)


Lesenswert?

hi,

erstmal danke für das tolle System, es ist sehr hilfreich!
Ich glaube ich habe einen Bug gefunden: Wenn ich einem Bauteil ein 
falsches Bild hochgeladen habe und zum ausbessern ein anderes Bild 
hochlade, hat das Bauteil gar kein Bild mehr und jeder weitere Versuch 
funktioniert nicht. Aber hochgeladen wird das Bild, also es ist immer im 
img/ Verzeichnis. (Habe auch probiert das Bild direkt im Dateisystem zu 
löschen, es wird einfach beim hochladen neu erstellt aber im Bauteil 
wird kein Bild angezeigt).

c,Ya Chris.

von Christoph K. (Gast)


Lesenswert?

ganz vergessen, ich verwende 0.2.2 SVN-Revision: 594M

von Gelöscht (kami89)


Lesenswert?

Christoph K. schrieb:
> Ich glaube ich habe einen Bug gefunden:

Da bist du nicht der Erste ;-)
https://code.google.com/p/part-db/issues/detail?id=5

mfg

von Christoph K. (Gast)


Lesenswert?

Urban B. schrieb:
> Da bist du nicht der Erste ;-)
> https://code.google.com/p/part-db/issues/detail?id=5

k. Also wenn der Filemanager dann fertig ist, sollt es gehen. Danke.

von kirkdis (Gast)


Lesenswert?

also aktuell ist keine demo funktionsfähig oder sehe ich das falsch. bin 
heute mal wieder hierher gekommen um mich etwas über den weiteren 
verlauf zu informieren. meine SVN 512er läuft immernoch stabil mit 
einigen bugs die aber eher nebensächlich sind. ansonsten ist die partdb 
hier im volleinsatz zu unseren Kardex Lagerschränken.

wollte gerade mal die weinbauer demo testen was sich so getan hat bisher 
aber dort geht gar nix. weder mit ie noch chrome. anscheinend ist da was 
am template falsch wodurch mir das neuerstellen von artikeln verwährt 
bleibt.

wäre schön wenn man da extern wieder bisl testen könnte und entsprechend 
beid er fehlersuche hilft. Ich habe auch paar bugs in der issue list auf 
google eingetragen. ob diese noch in der neuesten vorhanden sind kann 
ich aber aufgrund der oben genannten probleme gerade nicht sagen.

gruß kirkdis.

PS: wie schon vor nem halben jahr erwähnt kann ich auch gerne am wiki 
und anleitungen zur partdb mithelfen allerdings bräuchte ich da mal ne 
neue version zum testen

von K. J. (Gast)


Lesenswert?

Hi, ich beuchte mittlerweile mal Hilfe (am besten einer der Entwickler), 
zum Thema GPL neuerdings trudelt hier ne menge Post ein, der Part-DB 
betreffend mag sich jemand mit mir per Mail in Verbindung setzen.

Danke

von Gelöscht (kami89)


Lesenswert?

hallo  kirkdis,

Also momentan gibts nur einen aktiven Branch, das ist der 
"uneist_kami89". Der sollte lauffähig sein, in der Online-Demo muss nur 
noch eine neue Datenbank eingespielt werden dann läufts dort auch 
wieder.

Die anderen Branches sind veraltet, da gibts nichts Interessantes mehr.

Hilfe bei der Doku können wir bestens gebrauchen, dazu gibts im 
genannten Branch extra ein DokuWiki das noch auf einen Freiwilligen 
Helfer wartet :-)

@K.J.
hast eine PN bekommen.

mfg

von K. J. (Gast)


Lesenswert?

Zur Online Demo kann mir jemand einen Snapschot seiner DB zur Verfügung 
stellen ?

von Gelöscht (kami89)


Lesenswert?

K. J. schrieb:
> Zur Online Demo kann mir jemand einen Snapschot seiner DB zur Verfügung
> stellen ?

Für solche Fälle habe ich extra mal meine DB (v12) in den Branch 
kopiert, die kannst du gerne verwenden:
https://part-db.googlecode.com/svn/branches/uneist_kami89/development/testfiles/database/v12_kami89.sql

von K. J. (Gast)


Lesenswert?

Danke ist mir wohl irgendwie entgangen, gibt noch das Typische umlaut 
Problem aber da kümmer ich mich gleich noch drum.

@kami installiere auch grade doxigen mal sehn ob ich das hinbekomme weil 
mein Server recht restriktiv ist mit fremd Programme ausführen.

von Udo N. (weinbauer73)


Lesenswert?

Meine Demo funktioniert derzeit gar nicht, da sie einen Stand ausserhalb 
unseres SVN-Repos repräsentiert. Ich werde mal die Demo auf den Stand 
des Repos updaten und auch mal den Filemanager weiter schreiben. Gerade 
das Thema Javascript ist ja nicht ohne, weil fast jeder Browser seine 
Eigenheiten hat und man sich oft stundenlang die passende Doku zusammen 
suchen muss. Vorallem die unterschiedlichen IEs sind grauslich!

Javascript-Entwickler sind gerne willkommen :)

Wenn bei mir auf der Arbeit die Akkreditierung im Juni gelaufen ist, 
dann dürfte ich auch wieder mehr Zeit (und Nerven) für die Entwicklung 
haben.

Grüße
Udo

von K. J. (Gast)


Lesenswert?

Udo Neist schrieb:
> Vorallem die unterschiedlichen IEs sind grauslich!
>
> Javascript-Entwickler sind gerne willkommen :)
>
>
> Grüße
> Udo

Tu dir das nicht an alles unter 7/8 ist für die Reste Tonne und ziemlich 
unbeherrschbar, bau ne abfrage rein das der User updaten muss, der 
filemanager ist momentan ja nicht zwingent damit die Part-DB leuft.


Doxigen scheint zu laufen auf der DEMO.

von Udo N. (weinbauer73)


Lesenswert?

Den IE 6 und älter sind bei mir nicht auf der Liste. Warum soll ich mit 
den JS (nicht zu verwechseln mit Javascript; M$ wollte keine Lizenzen 
kaufen, daher diese Variante der ECMA-Scriptfamilie) unterstützen? Erst 
mit IE 7 näherte sich M$ an Javascript an, wobei da selbst im IE 10 noch 
Differenzen zum Quasi-Standard der Gecko/Webkit-Systeme bestehen.

Leider ist mir durch eine kleine Unachtsamkeit mein Raid mit den 
virtualisierten Windoofs (XP und 7) "abgeraucht", muss beides morgen neu 
installieren. Zum Glück hab ich aber noch ein XP auf dem Notebook ;-)

von Gelöscht (kami89)


Lesenswert?

K. J. schrieb:
> gibt noch das Typische umlaut
> Problem aber da kümmer ich mich gleich noch drum.

Ja, das leidige Problem mit den Umlauten... ;-)
Das Problem liegt aber höchstwahrscheinlich nicht an deiner 
Installation, sondern an meiner Datenbank.

Wenn ich mich nicht täusche, liegt das Problem genau genommen an älteren 
Versionen von Part-DB. Wenn man da nämlich ISO-8859-1 als HTTP 
Zeichensatz verwendet hat, dann wurden die ISO-8859-1-codierten Zeichen 
als UTF-8 codierte Zeichen an die MySQL Datenbank übergeben. Beim MySQL 
connect ist nämlich kein Zeichensatz angegeben, also müsste automatisch 
UTF-8 verwendet werden.

Das würde dann also bedeuten, dass alle Benutzer, die den HTTP 
Zeichensatz auf ISO-8859-1 stehen haben, nun falsch codierte Zeichen in 
ihrer Datenbank haben. Solange man zum Decodieren auch wieder ISO-8859-1 
verwendet, fällt das natürlich nicht auf. Jetzt (v0.3.0) kann man 
allerdings den Zeichensatz nicht mehr wählen (weils nichts bringt), und 
die falsch codierten Zeichen in der Datenbank äussern sich in Form von 
kryptographischen Zeichen auf der Webseite.

Man könnte natürlich weiterhin den Zeichensatz auf ISO-8859-1 stellen, 
dann fällt das Problem nicht auf, aber das behebt nicht die Ursache 
sondern nur das Symptom.

Die Frage ist jetzt allerdings, wie wir das Problem lösen, ohne dass die 
Benutzer all ihre Umlaute von Hand austauschen müssen. Vielleicht würde 
es ein MySQL Befehl im Datenbankupdate tun, das alle falsch codierten 
Umlaute durch richtig codierte Umlaute ersetzt. Muss mal schauen ob das 
funktioniert...

Dabei muss ich aber noch anmerken, dass das alles nur Vermutungen sind. 
Ich habe nicht so wirklich viel Erfahrung mit dieser Problematik, ich 
habe einfach mal versucht das Phänomen mit logischen Schlussfolgerungen 
nachzuvollziehen ;-D

K. J. schrieb:
> Doxigen scheint zu laufen auf der DEMO.
Wunderbar!

mfg

von b.r (Gast)


Lesenswert?

mysql und Zeichenkodierung ist schon seit Jahren ein echtes Problem.
Evtl. kann man da mit ein paar manuellen Konvertieroutinen Abhilfe 
schaffen, letztendlich muß die Kodierung von der Datenbank über php und 
dem Webserver bis zum Browser konsistent sein :-/

Grüße
b.r

von Gelöscht (kami89)


Lesenswert?

Okay also ich habe gerade gemerkt dass meine Testdatenbank-Datei im SVN 
schon fehlerhaft ist, daher werden die Umlaute dann auch nach dem Import 
noch falsch dargestellt. Ich habe die Datei nun korrigiert und werde sie 
mit dem nächsten Commit hochladen.

Irgendwie kommen die falsch codierten Werte ziemlich sicher von einem 
Bug in einer früheren Version von Part-DB. In der Zwischenzeit habe ich 
aber mindestens einmal meine Datenbank exportiert und wieder Importiert 
(Umzug des Servers), durch den Import/Export konnten meine Daten aber 
ev. noch zusätzlich beschädigt worden sein. Denn mich macht etwas 
stutzig, dass in meiner Datenbank ein 'ä' ganze 4 Bytes belegt, das kann 
also nicht nur durch ein falsch codiertes Zeichen entstanden sein. Da 
muss mindestens zweimal nacheinander etwas schiefgelaufen sein.

Dieser spezielle Fall lässt sich vermutlich nur durch Textersetzung 
korrigieren. Allerdings frage ich mich, ob noch mehr Leute von diesem 
Problem betroffen sind.

Hat jemand noch eine Datenbank, die mit einer Part-DB <= 0.2.2 betrieben 
wird und noch nie exportiert/importiert wurde?
Falls ja, würde mich interessieren, wie dort die Umlaute abgespeichert 
werden. Werden sie in phpMyAdmin korrekt angezeigt? Falls nicht, kann 
man sich den Hex-Code anschauen, z.B. damit:
1
SELECT HEX(`name`) FROM categories WHERE ID = 5

Das Umlaute-Problem ist sicher relativ leicht zu lösen. Viel schwieriger 
ist es aber, rauszufinden, wie die Datenbanken unserer Nutzer überhaupt 
aussehen ;-)

mfg

von Udo N. (weinbauer73)


Lesenswert?

Eventuell ist in meinem Testbranch noch eine alte Version vorhanden.

PS: Ich habe zwar am Filemanager weiter gearbeitet, kann aber leider 
keine Fortschritte beim IE vermelden. Bis einschliesslich IE9 fehlt mir 
FormData(), um einen verbesserten Uploader fertig zu stellen. Da muss 
ich wohl oder übel auf Flash oder die alte Methode zurück greifen :( 
Wobei Flash ja nicht überall zu finden wäre.

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Eventuell ist in meinem Testbranch noch eine alte Version vorhanden.

OK wäre super wenn du da bei Gelegenheit mal nachschauen könntest :-)

Udo Neist schrieb:
> PS: Ich habe zwar am Filemanager weiter gearbeitet, kann aber leider
> keine Fortschritte beim IE vermelden. Bis einschliesslich IE9 fehlt mir
> FormData(), um einen verbesserten Uploader fertig zu stellen. Da muss
> ich wohl oder übel auf Flash oder die alte Methode zurück greifen :(
> Wobei Flash ja nicht überall zu finden wäre.

Hmm also das klingt, als ob es noch etwas länger dauern wird (?). 
Theoretisch könnten wir sonst ja auch nochmal den simplen Upload-Button 
wie bisher verwenden bis der neue Dateimanager fertig ist. Dann könnten 
wir den ersten Release Kandidat der Version 0.3.0 schon sehr bald zum 
Download anbieten, und du kannst dir für den neuen Uploader problemlos 
die Zeit nehmen, die du brauchst.

Arbeiten kann man ja auch mit dem alten Uploader, bisher ging das 
schliesslich auch :-)

Falls niemand etwas dagegen hat, würde ich mich dann mal ums 
Fertigstellen der 0.3.0 RC1 kümmern. Das Problem mit der 
Zeichencodierung hätte dann jetzt erstmal höchste Priorität, denn das 
muss noch vor dem Release behoben werden.

von Udo N. (weinbauer73)


Lesenswert?

Fündig geworden :-) Sind beides Dumps der Struktur, die ich mal 
irgendwann bei Revision 4xx oder höher gemacht habe.

http://code.google.com/p/part-db/source/browse/branches/uneist/readme/createtables-FOR-V0.2.1-rev12.sql.orig
http://code.google.com/p/part-db/source/browse/branches/uneist/readme/createtables-FOR-V0.2.1.sql

Nimm erstmal den alten, funktionsfähigen Uploader. Ich werde wohl eine 
Lösung mit Iframe bauen müssen, damit wenigstens sowas ähnliches wie mit 
FF, Chrome und Co funktioniert.

von K. J. (Gast)


Lesenswert?

@kami das ist Definitiv ein Datenbank Problem das bekommen wir nicht im 
griff  4-Byte für umlaute hat was mit dem Zeichensatz zu tun.

Du hast div. Möglichkeiten den Zeichensatz einzustellen, im Mysql, PHP 
und im Script selber, zuletzt noch im Backup, und das sind alles User 
Probleme.

Das ist ziemlich unhändelbar die meisten CMS geben das auch nur vor fürs 
Script und um den Rest muss sich der User kümmern.

Das einzige was mir so einfallen würde ist die Sonderzeichen vor der 
Weitergabe in die DB umzuwandeln und beim Rausholen nochmal, aber das 
wehre ziemlich unnötiger Overhead, im Normalfall gibt man seine Backups 
nicht weiter.

von Gelöscht (kami89)


Lesenswert?

Also ich habe mal einen Test gemacht. Neue Datenbank angelegt, Struktur 
mit dem SQL Skript aus v0.2.2 erzeugt und meine Part-DB 0.2.2 mit dieser 
Datenbank verknüpft. Dann eine neue Kategorie 'ä' angelegt und in 
phpMyAdmin den Bytecode davon angeschaut.

Das Zeichen 'ä' sollte dem Bytecode 0xC3 0xA4 (UTF-8) bzw. 0xE4 
(ISO-8859-1) entsprechen.

Ergebnis mit HTTP Zeichensatz UTF-8: 0xC3 0x83 0xC2 0xA4
Ergebnis mit HTTP Zeichensatz ISO-8859-1: 0xC3 0xA4

Erklärung:
Bei ISO-8859-1 wird das 'ä' als 0xE4 von PHP entgegengenommen und MySQL 
übergeben. Da für die Übertragung kein Zeichensatz vereinbart wurde, 
beginnt hier ein Glücksspiel. In meinem Fall geht MySQL wohl davon aus, 
dass es ISO-8859-1 codiert ist. Intern arbeitet MySQL aber mit UTF-8, 
also wird das Zeichen nach UTF-8 konvertiert und als 0xC3 0xA4 in der 
Datenbank abgelegt. In diesem Fall wird das Zeichen also richtig codiert 
in der Datenbank abgelegt.
Bei UTF-8 wird das 'ä' als 0xC3 0xA4 von PHP entgegengenommen und MySQL 
übergeben. MySQL nimmt aber wieder an es sei ISO-8859-1. 0xC3 entspricht 
dann 'Ã', 0xA4 entspricht '¤'. Beide Zeichen werden dann wieder 
(unnötigerweise!) nach UTF-8 konvertiert. 'Ã' ergibt dann 0xC3 0xA4, '¤' 
entspricht 0xC2 0xA4.

Zusammengefasst kann man also sagen, dass zwei Fehler das Problem 
verursachen:
- Beim Verbindungsaufbau mit dem MySQL Server wird kein Zeichensatz 
vereinbart. Es ist reine Glückssache, dass der richtige Zeichensatz 
verwendet wird
- Der Benutzer kann in Part-DB den HTTP Zeichensatz selber einstellen. 
Wählt er den falschen, gibts ein Durcheinander.

Lösungsvorschlag:
- Für die MySQL-Verbindung wird IMMER UTF-8 verwendet (hardcoded). Das 
ist in der aktuellen Entwicklerversion bereits so gemacht.
- Der HTTP Zeichensatz wird IMMER auf UTF-8 eingestellt (hardcoded), der 
Benutzer kann es nicht ändern. Was er nicht ändern kann, kann er nicht 
falsch machen ;-) Ausserdem wäre hier m.M.n. ISO-8859-1 sowieso falsch, 
weil unsere PHP/TMPL Dateien ja auch UTF8-codiert sind.

Machen wir diese Umstellung, wird es Benutzer geben die nach dem Update 
auf 0.3.0 das gleiche Problem haben wie ich. Lösen könnte man es mit 
Search&Replace in der Datenbank.

Ich werde mal schauen wie die "4-Byte-Codes" der wichtigsten paar 
Zeichen (Umlaute und noch ein paar Sonderzeichen) lauten und ein 
entsprechender Search&Replace Befehl ins Datenbankupdate einbauen.

von Udo N. (weinbauer73)


Lesenswert?

Man könnte beim Update einfach einen Dump der Datenbank machen, den mit 
Recode auf UTF-8 trimmen und wieder einspielen. 100% sicher ist das 
Verfahren nicht, aber immerhin besser als das Scannen aller Daten und 
halbmanuell das ändern. Beim Einlesen "--default_character_set utf8" 
nicht vergessen, damit MySQL nicht wieder was falsch macht ;-)

Dump:
1
mysqldump --set-charset utf8 --default_character_set utf8 -uUSER -pPASS DATABASE >dump

Einlesen:
1
mysql --default_character_set utf8 -uUSER -pPASS DATABASE <dump

Weitere Optionen können hilfreich sein, z.B.
--add-drop-table
--hex-blob
--create-options
--extended-insert

Wobei einige Optionen bereits mit per Default gesetzt sind (siehe auch 
--opt).

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> mysqldump

Können wir leider nicht verwenden weil das bei den meisten Hostern nicht 
läuft ;-)
Part-DB sollte möglichst ohne exec() auskommen sonst kann man es auf 
einem normalen Webspace nicht mehr verwenden...

Das Ersetzen mit dem MySQL Befehl "REPLACE()" habe ich grad getestet, 
funktioniert zumindest bei meiner fehlerhaften Datenbank super. Ist 
sicher nicht sehr elegant, aber allemal besser als gar nichts 
unternehmen ;-)

von Dirk B. (garag)


Lesenswert?

Hallo,

ich hab da ein Problem mit part-db beim Webhoster Strato. Anscheinend 
stimmen die Links nicht. Beim Aufruf der Startseite bekomme ich folgende 
Meldungen:

The requested URL /mnt/webj/c0/03/5587203/htdocs/part-db/navigation.php 
was not found on this server.

Nach meinem Verständnis ist der Teil "/mnt/webj/c0/03/5587203/htdocs" 
der Pfad auf dem Server, jedoch nicht die richtige URL von außen. 
Versuchsweise habe ich in "start_session.php" folgende Zeile angepasst:

define('BASE_RELATIVE', './');

Danach konnte ich auf part-db zugreifen. Allerdings denke ich mal das 
dass nicht so ganz der richtige Weg ist. Hat da einer von euch einen 
Tipp ?

Gruß
Dirk

von Gelöscht (kami89)


Lesenswert?

Hallo Dirk,

Kannst du mal hinter den drei Pfad-Defines diese Zeilen einfügen
1
print 'BASE = "'.BASE.'"<br>';
2
print 'DOCUMENT_ROOT = "'.DOCUMENT_ROOT.'"<br>';
3
print 'BASE_RELATIVE = "'.BASE_RELATIVE.'"<br>';
4
print 'DIRECTORY_SEPARATOR = "'.DIRECTORY_SEPARATOR.'"<br>';
und die Ausgabe hier posten?

mfg

von Gelöscht (kami89)


Lesenswert?

So, habe grad nochmal ein Update hochgeladen (r619), da sind noch ein 
paar wichtige Änderungen drin. Unter anderem auch eine Migration der 
alten config.php in das neue Format, damit man die Einstellungen nicht 
nochmal tätigen muss.

Übrigens war bisher ja der PayPal-Link tot, weil Jacobs PayPal-Konto 
nicht mehr erreichbar ist. Nach Absprache mit K.J. geht der Link nun 
(zumindest vorläufig) auf mein PayPal Konto. Falls tatsächlich Spenden 
getätigt werden, werde ich es sammeln und bei Erreichen eines 
nennenswertes Betrages hier bekanntgeben um das weitere Vorgehen 
abzuklären.

Vermutlich werde ich schon bald den aktuellen Entwickler-Branch in den 
Trunk mergen, und dann ein Paket für die 0.3.0 RC1 zum Download 
anbieten.

mfg

von K. J. (Gast)


Lesenswert?

Urban B. schrieb:
> Übrigens war bisher ja der PayPal-Link tot, weil Jacobs PayPal-Konto
> nicht mehr erreichbar ist. Nach Absprache mit K.J. geht der Link nun
> (zumindest vorläufig) auf mein PayPal Konto. Falls tatsächlich Spenden
> getätigt werden, werde ich es sammeln und bei Erreichen eines
> nennenswertes Betrages hier bekanntgeben um das weitere Vorgehen
> abzuklären.

Jup passt, Paypal ist manchmal recht kompliziert wen das Konto aus 
Sicherheitsgründe dicht ist, da kein Geld drauf war tue ich mir das 
nicht an.

Will ungerne deren Datenbank mit den geforderten Sachen füttern, die 
haben echt komische Forderungen.

>
> Vermutlich werde ich schon bald den aktuellen Entwickler-Branch in den
> Trunk mergen, und dann ein Paket für die 0.3.0 RC1 zum Download
> anbieten.
>
> mfg

Das Paket muss ich glaube ich erstellen b.z.w. Uploaden, glaub das kann 
ich nur als einziger.

p.s. Hab die Doku für die GPL Geschichte angefangen, leider ist das 
ganze recht kompliziert die GPLv2 ist nicht wirklich einfach zu 
verstehen.

von Dirk B. (garag)


Lesenswert?

So hab jetzt mal die print Anweisungen eingefügt und bekomme folgende 
Ausgabe:

BASE = "/mnt/webj/c0/03/5587203/htdocs/part-db"
DOCUMENT_ROOT = "/home/strato/http/premium/rid/72/03/5587203/htdocs"
BASE_RELATIVE = "/mnt/webj/c0/03/5587203/htdocs/part-db/"
DIRECTORY_SEPARATOR = "/"

von K. J. (Gast)


Lesenswert?

Dirk B. schrieb:
> So hab jetzt mal die print Anweisungen eingefügt und bekomme folgende
> Ausgabe:
>
> BASE = "/mnt/webj/c0/03/5587203/htdocs/part-db"
> DOCUMENT_ROOT = "/home/strato/http/premium/rid/72/03/5587203/htdocs"
> BASE_RELATIVE = "/mnt/webj/c0/03/5587203/htdocs/part-db/"
> DIRECTORY_SEPARATOR = "/"

Du hast da zwei unterschiedliche angaben des Pfades, das kann nicht 
sein.

Base_relative müsste auch anders sein nämlich der Relative Pfad der URL 
also wahrscheinlich "part-db/"

von Dirk B. (garag)


Lesenswert?

Ich habe keine Ahnung was Strato da hinter den Kulissen macht, aber die 
Ausgaben stammen direkt von meinem Webspace bei Strato :-(

Naja, zur Not kann ich immer noch den Pfad manuell im Source anpassen.

von Gelöscht (kami89)


Lesenswert?

> Das Paket muss ich glaube ich erstellen b.z.w. Uploaden, glaub das kann
> ich nur als einziger.

OK wenn es dann soweit ist melde ich mich einfach bei dir.

> p.s. Hab die Doku für die GPL Geschichte angefangen, leider ist das
> ganze recht kompliziert die GPLv2 ist nicht wirklich einfach zu
> verstehen.

Hehe ja das glaube ich ;-) Ich kenne mich da leider auch zu wenig aus, 
müsste mich auch erst genauer informieren was da alles geregelt wird...

Dirk B. schrieb:
> BASE = "/mnt/webj/c0/03/5587203/htdocs/part-db"
> DOCUMENT_ROOT = "/home/strato/http/premium/rid/72/03/5587203/htdocs"
> BASE_RELATIVE = "/mnt/webj/c0/03/5587203/htdocs/part-db/"
> DIRECTORY_SEPARATOR = "/"

Das ist ja wirklich eine komische Sache, mit solch unterschiedlichen 
Pfaden vom Server kommt Part-DB nicht zurecht. Ich habe mal ein bisschen 
im Internet nachgeschaut und bin auf das hier gekommen: 
http://www.strato-faq.de/artikel.html?sessionID=4ca68360450406176b63d8a14b819b56&id=10

Aber selbst diese Beschreibung passt nicht zu deinen Pfaden, da dort 
deine Domain ja nicht enthalten ist. Weiss der Geier, was Strato hier 
für Spielchen treibt ;-)
Ich denke mal das ist für uns Entwickler unmöglich, die korrekten Pfade 
zu bekommen, vermutlich wirds also auf das hier rauslaufen:

Dirk B. schrieb:
> Naja, zur Not kann ich immer noch den Pfad manuell im Source anpassen.

Ja das geht natürlich, wird dann aber bei jedem Update wieder 
überschrieben. Ansonsten könnte ich noch eine Funktion einbauen, die es 
explizit erlaubt, die Pfade manuell zu setzen, und die dann auch bei 
einem Update nicht überschrieben werden. Werde mal schauen was man da 
machen kann.

Rein für die Webseite sind die Pfade nicht so kritisch, also wenn die 
Seite richtig angezeigt wird passt das schon. Allerdings kann es 
Probleme geben bei den Pfaden zu Footprint-Bilder oder Dateianhängen. 
Denn bevor ein Pfad zu einer Datei in der Datenbank abgelegt wird, wird 
ein Replace druchgeführt, der den BASE Pfad durch "%BASE%" ersetzt. So 
gibt es keine Probleme wenn man Part-DB auf einem anderen Server (mit 
anderem BASE Pfad) installiert, alle Pfade in der Datenbank 
funktionieren dann immernoch weil eben der absolute Pfad dort nicht 
abgelegt wird. Wenn du jetzt bei der manuellen Definition der Pfade was 
falsches eingibst, könnte es unter Umständen sein dass diese 
Textersetzung nicht mehr funktioniert.

Allerdings wäre auch dieses Problem schnell wieder lösbar, du müsstest 
dann bei einem Server-Umzug halt manuell in der Datenbank alle 
Basis-Pfade noch durch "%BASE%" ersetzten, dann läufts wieder. Wichtig 
ist einfach dass du das weisst, sonst ärgerst du dich nach einem Umzug 
über die nicht mehr funktionierenden Dateipfade...

mfg

von Dirk B. (garag)


Lesenswert?

Eine Möglichkeit zum manuellen Setzen wäre natürlich sehr gut.

Zu den Footprints hätte ich sowieso noch eine Frage. Wenn ich z.B. ein 
TQFP64 Gehäuse anlegen möchte, wie muss ich das mit den neuen Footprint 
Bildern denn machen ?

von Udo N. (weinbauer73)


Lesenswert?

Wie wäre es mit folgenden Code? Wenn BASE und BASE_RELATIVE auf das 
gleiche Verzeichnis zeigen, dann wird "./" als Pfad zurückgegeben, 
ansonsten einen aus DOCUMENT_ROOT zusammengebauten (altes Verhalten).
1
define ('BASE_RELATIVE', ((BASE == str_replace(DOCUMENT_ROOT, '', str_replace(DIRECTORY_SEPARATOR, '/', BASE))) ? '.'.DIRECTORY_SEPARATOR : str_replace(DOCUMENT_ROOT, '', str_replace(DIRECTORY_SEPARATOR, '/', BASE)).DIRECTORY_SEPARATOR));
Ob es auf allen Strato-Hosts funktionieren wird, bezweifel ich. 
Vielleicht setzt Strato ein BIND oder nen Link auf das Verzeichnis und 
schiebt dem Apachen was anderes unter? Ziemlich merkwürdiges Setup.

von Demo Tester (Gast)


Lesenswert?

b.r schrieb
> Zum Ausprobieren gibt es momentan zwei Demo-Seiten:
> http://partdb.grautier.com/    ("offiziell")

leider funktioniert die Demo zur Zeit nicht

von Gelöscht (kami89)


Lesenswert?

Dirk B. schrieb:
> Zu den Footprints hätte ich sowieso noch eine Frage. Wenn ich z.B. ein
> TQFP64 Gehäuse anlegen möchte, wie muss ich das mit den neuen Footprint
> Bildern denn machen ?

Nun, das ist momentan ein bisschen blöd...Eigentlich war dafür der neue 
Filemanager gedacht. Also man hätte dann den neuen Footprint angelegt 
und mit dem Filemanager das passende Bild dazu ausgewählt. Da der 
Filemanager aber noch fehlt, müsste man theoretisch den Dateipfad des 
entsprechenden Bildes in das Textfeld "Bild:" eintippen (bzw. per 
Copy&Paste aus der Footprintbilder-Übersicht).
Es gibt momentan nur einen Workaround der das etwas einfacher macht. Man 
kann statt dem Dateipfad einfach z.B. "DIP28" eintippen und so 
übernehmen. Weil das Bild dann aber nicht gefunden wird, taucht der 
Eintrag dann unter "Footprints mit fehlerhaften Dateinamen" auf, inkl. 
Vorschlägen für Dateipfade die ein "DIP28" beinhalten. Dort kann man das 
passende dann anwählen und übernehmen.

In der Version 0.2.2 läuft es momentan ja auch nicht anders...
Sobald der neue Filemanager kommt, ist das Problem dann aber auch 
beseitigt. Man könnte ja z.B. auch mit dem Zuweisen der Bilder noch 
warten und das dann erst später machen wenn der Filemanager fertig ist.

Demo Tester schrieb:
> leider funktioniert die Demo zur Zeit nicht

Huch, @K.J. hat mein Update von gestern vielleicht die config.php 
zerschossen?

von K. J. (Gast)


Lesenswert?

Ja ist halt die SVN-Version normal das die hin und wieder nicht geht, 
allerdings weis ich grade nicht was umgestellt wurde.

von K. J. (Gast)


Lesenswert?

Urban B. schrieb:
> Huch, @K.J. hat mein Update von gestern vielleicht die config.php
> zerschossen?

Jup scheinbar ;-)

von Gelöscht (kami89)


Lesenswert?

K. J. schrieb:
> Urban B. schrieb:
>> Huch, @K.J. hat mein Update von gestern vielleicht die config.php
>> zerschossen?
>
> Jup scheinbar ;-)

Hmm ja jetzt habe ich den Fehler gesehen ;-)
Passiert dann wohl bei allen, die schon die 0.3.0 verwendeten.
Macht aber nix, beim Upgrade von der 0.2.2 auf die 0.3.0 oder wenn noch 
gar keine config.php vorhanden ist sollte alles funktionieren.

Ich habe jetzt eben noch eine Versionsnummer für die config.php 
eingeführt. So kann man im Falle eines Formatwechsels (wie von 0.2.2 auf 
0.3.0) die alte config.php aufs neue Format updaten. Steht in der 
config.php noch keine Version drin, geht das System davon aus dass es 
sich um Part-DB 0.2.2 handelt, was jetzt natürlich nicht stimmt wenn man 
bereits Version 0.3.0 benutzt hat weils bisher diese Versionsnummer noch 
nicht gab.

von Gelöscht (kami89)


Lesenswert?

Also ich habe mal einen STRATO workaround in start_session.php eingebaut 
(r620). Zusätzlich gibt es jetzt auch die Möglichkeit die Pfade ganz 
manuell zu setzen in der config.php, falls es noch andere so komische 
Server gibt.

@Dirk B.
kannst du mal schauen ob der workaround so funktioniert?

von Dirk B. (garag)


Lesenswert?

Habs gerade mal ausprobiert, geht jetzt wunderbar.

Vielen Dank für die schnelle Hilfe!

von Dirk B. (garag)


Lesenswert?

Eine Sache war mir noch bei den Lieferanten aufgefallen. Wenn man dort 
eine Webseite angibt ist der Link über dem Eingabefeld zusammengesetzt 
aus der Part-db URL und der Lieferanten URL. Das funktioniert natürlich 
nicht.

Aus "www.digikey.de" wird z.B. "http:/www.xyz.de/part-db/www.digikey.de

Gruß
Dirk

von K. J. (Gast)


Lesenswert?

So heute nen Barcode Scanner bestellt, das einzige was mir für mein 
Lager fehlt, also werde ich mich mal dran machen das Sinnvoll 
umzusetzen.

Hab extra einen Bestellt der CDC kann, so kann man den einfach als 
Tastatur nutzen und man spart sich den ganzen API Krams.

von Demo Tester (Gast)


Lesenswert?

Demo Tester schrieb:
> leider funktioniert die Demo zur Zeit nicht

Funktionert wieder. Hab aber einen kleinen Fehler gefunden. Preise 
müssen mit einem Punkt eingegeben werden. Ein Komma wird nicht 
akzeptiert.

Respekt für die Arbeit

von Udo N. (weinbauer73)


Lesenswert?

Ich habe auf der Arbeit auch einen Laserbarcodescanner, der über die 
alte DIN-Tastaturbuchse bzw. PS/2 läuft. Auch einige neuere USB-Scanner 
kann man als USB-HID direkt nutzen.

von Gelöscht (kami89)


Lesenswert?

Dirk B. schrieb:
> Eine Sache war mir noch bei den Lieferanten aufgefallen. Wenn man dort
> eine Webseite angibt ist der Link über dem Eingabefeld zusammengesetzt
> aus der Part-db URL und der Lieferanten URL. Das funktioniert natürlich
> nicht.

Ah ja, liegt nur am fehlenden http://, werde das noch einbauen dass es 
automatisch vor das www gesetzt wird wenn der Benutzer es weglässt. Ist 
dann im nächsten Commit von mir drin.

K. J. schrieb:
> So heute nen Barcode Scanner bestellt, das einzige was mir für mein
> Lager fehlt, also werde ich mich mal dran machen das Sinnvoll
> umzusetzen.

Daran habe ich auch schon lange gedacht dass wir das mal noch einbauen 
müssen, super dass du dich da grad drum kümmerst :-)

von K. J. (Gast)


Lesenswert?

Jo mich nervt das schon länger, vor alledem ist es wesentlich einfacher 
bei der Teile Entnahme und co. ;-)

Meine Private ToDo liste sagt grade:

- Barcodescanner
- Labeldrucker

von K. J. (Gast)


Lesenswert?

Hab mir mal etwas Gedanken gemacht, ich hätte gerne den Namen mit auf 
dem Barcode, am besten hört sich bis jetzt CODE128 an als Barcode.

Der Aufbau wehre dann <Bauteielnamen>-<PartID><ENT> so weit ich das 
jetzt raus gelesen habe ist der auch problemlos per Termoverfahren in 
kleinen Dimensionen Druckbar, das kleinste bei mir wehre 66x12mm, da 
passen einige Zeichen drauf.

wobei ich grade nicht weis ob der Barcode Scanner sowas wie ENTER 
selbständig ausführen kann soll wohl gehen ansonsten müste mann das dem 
Barcode mitgeben bei CODE128 geht das.

von Gelöscht (kami89)


Lesenswert?

Schön wäre auch wenn man für jede Einkaufsinformation auch noch einen 
Barcode abspeichern könnte, und zwar den vom Lieferanten. So könnte man 
z.B. beim Einbuchen von bestellten Teilen den Barcode auf der Verpackung 
kurz scannen und dann noch die Stückzahl eingeben. Das würde das Suchen 
des Bauteiles ersparen.

Wobei es natürlich auch andere Varianten gäbe für diese Aufgabe, z.B. 
ist ja noch ein "pending orders" geplant, damit könnte man eine 
Bestellung mit einem Klick einbuchen. Das setzt aber natürlich voraus 
dass man auch jede getätigte Bestellung in Part-DB eingibt...

von K. J. (Gast)


Lesenswert?

Das würde gehen wen die Strichcodes der Hersteller die Bestellnummern 
sind bei Reichelt z.b. ist das nicht so, da ist es wahrscheinlich 
irgendeine Lagernummer.

von Udo N. (weinbauer73)


Lesenswert?

Es gibt eine PDF-Klasse mit Barcode-Support. Mit dem passenden Drucker 
hat man direkt entsprechende Etiketten. Ich habe sowas für einen Dymo 
Labelwriter 320 bzw. 400 mal umgesetzt (allerdings nur unter Linux und 
Cups als Printerserver).

von K. J. (Gast)


Lesenswert?

Ja an sowas dachte ich mit PHP eine Print-bare PDF erstellen und dann 
direkt drucken, es gibt zwar Barcode Tools für Server aber das sind 
externe Programme und dadrauf würde ich gerne verzichten.

Das grobe PHP-Script hab ich fast fertig, ist recht einfach warte jetzt 
auf den Scanner hinzukommt das ich das auch gerne am Tablett nutzen 
möchte so brauche ich im Lager keinen PC, leider breuchten wir dazu 
endlich mal ein Mobile Template.

Und diese ganzen Templates krams verstehe ich momentan nicht 
ansatzweise.

von Gelöscht (kami89)


Lesenswert?

K. J. schrieb:
> Das würde gehen wen die Strichcodes der Hersteller die Bestellnummern
> sind bei Reichelt z.b. ist das nicht so, da ist es wahrscheinlich
> irgendeine Lagernummer.

Jo, man müsste den Barcode auf der Verpackung erstmal in Part-DB 
registrieren, also einer Einkaufsinformation zuordnen...

von K. J. (Gast)


Lesenswert?

Ganz einfach um nur mal den Scanner zu testen.
http://grautier.com/partdb/barcode.php


Der Barcode bei mir besteht aus <Bauteielname><Trenzeichen><pid>,

z.b. <MAX1181><-><84>

Die pid-0 die in der DB ja nicht vorkommen kann, nehme ich für Options:

Ausbuchen-0
Einbuchen-0
Loeschen-0
...

So kann ich über Barcodes die Options aufrufen um mit dem zweiten Scan 
dann das Bauteile der PartDB Hinzuzufügen, Entfernen, Löschen...

Die Überlegung wehre noch ein Dritter Scan, z.b. für die Anzahl, oder 
Löschbestätigung die frage wehre ob es nicht zuviel Overhead wehre 
dreimal Scannen ist schon recht viel was Sagt ihr ?

von Gelöscht (kami89)


Lesenswert?

K. J. schrieb:
> Die Überlegung wehre noch ein Dritter Scan, z.b. für die Anzahl, oder
> Löschbestätigung die frage wehre ob es nicht zuviel Overhead wehre
> dreimal Scannen ist schon recht viel was Sagt ihr ?

Also wenn man es so macht, dass einmal gescannte Optionen und 
Stückzahlen gespeichert werden, entsteht ja kein unnötiger Overhead.

Also z.B. so:
- Option "Ausbuchen" scannen
- Stückzahl "3" scannen
- Bauteil 1 scannen --> 3 Stück werden abgebucht
- Bauteil 2 scannen --> 3 Stück werden abgebucht
- Stückzahl "1" scannen
- Bauteil 3 scannen --> 1 Stück wird abgebucht
- Bauteil 4 scannen --> 1 Stück wird abgebucht
- Option "Einbuchen" scannen
- Bauteil 5 scannen --> 1 Stück wird eingebucht
- Bauteil 6 scannen --> 1 Stück wird eingebucht
- usw.

von Gelöscht (kami89)


Lesenswert?

Ich habe gerade eben (r625) den aktuellen Trunk von Part-DB 0.2.2 nach 
"tags" kopiert. Nun ist mein SVN Client grad dran, den Branch 
"uneist_kami89" in den Trunk zu mergen. Ich hoffe das klappt, das 
Programm scheint ein bisschen Mühe zu haben^^

Das heisst dann also, dass von jetzt an die ganze Entwicklung wieder im 
Trunk stattfindet.

Ich würde vorschlagen, dass mal ein paar Leute das Update auf die 
Version 0.3.0 RC1 machen (aus dem Trunk) und hier berichten ob alles 
geklappt hat. Überschreibt man eine Part-DB 0.2.2 Installation mit der 
0.3.0 RC1, sollte die alte config.php auf das neue Format aktualisiert 
werden und dann noch ein Installer erscheinen um ein paar weitere 
Angaben zu erfassen. Dann muss man noch das Datenbankupdate durchlaufen 
lassen, und Part-DB 0.3.0 RC1 sollte einsatzbereit sein.

Wenn die ersten Rückmeldungen dann positiv sind, schnüre ich ein Paket 
für die Version 0.3.0 RC1, das wir dann zum Download anbieten. (Für das 
Updatepaket müssen dann z.B. das Verzeichnis "development" und den 
Menüeintrag zu den noch nicht vorhandenen System-Updates entfernt 
werden)

...und mein SVN Client ist immernoch am mergen...der braucht wohl noch 
eine Weile ;-)

von Udo N. (weinbauer73)


Lesenswert?

Ich kann es ja am WE auf meine Demoseite hochladen und austesten :-)

von Gelöscht (kami89)


Lesenswert?

Verdammt jetzt habe ich fast eine Stunde (!!) gewartet und jetzt bricht 
der SVN Client mit einer Fehlermeldung ab...das läuft ja super...

So ein Merge ist wohl eine Wissenschaft für sich. Erst wollte ich es mit 
dem Merge-Befehl machen, hat aber nicht geklappt. So wie ich das 
verstanden habe, müsste ich erst alle Änderungen vom Trunk, die seit dem 
Erstellen des Branches "uneist_kami89" commited wurden, in den Branch 
mergen, damit ich den Branch wieder in den Trunk mergen kann. Da all 
diese commits aber sinnlos sind (weil im Branch eh alles neu ist) habe 
ich nun versucht einfach die Dateien aus dem Branch in den Trunk zu 
commiten. Jetzt reklamiert er irgendwas wegen Verzeichnissen die Dateien 
beinhalten blabla...

Es kann sich also nur noch um Stunden handeln ;-)

von Udo N. (weinbauer73)


Lesenswert?

Lass dir Zeit :-) Vor morgen Nachmittag werde ich eh nicht dran gehen.

von Gelöscht (kami89)


Lesenswert?

So, jetzt scheint es geklappt zu haben (r626) :-)
Hat wieder fast eine Stunde gedauert zum hochladen...

@Udo
Naja, es gibt ja schon die Online Demo von K.J., die müsste sich morgen 
ja wieder automatisch aktualisieren. Wenn das Update korrekt 
funktioniert, erscheint dann zwar leider der Installer um noch ein 
Administratorkennwort zu erstellen. Ist zwar blöd in der Online Demo, 
sollte aber sicherheitstechnisch eigentlich unproblematisch sein (man 
kann zwar die config vermurksen, aber die ist ja schnell wieder 
hergestellt).

@K.J.
Falls jemand in der Online Demo ein Administratorkennwort eingibt, 
kannst du in der config.php die Variable 
"$config['installation_complete']['admin_password']" auf "false" 
stellen, dann erscheint der Installer nochmals um ein neues Kennwort 
einzugeben. Ausserdem musst du noch die Variable 
"$config['is_online_demo']" auf "true" stellen.

Dann hoffen wir mal dass alles rund läuft ;-)

von Gelöscht (kami89)


Lesenswert?

Urban B. schrieb:
> Dann hoffen wir mal dass alles rund läuft ;-)

Schade, war wohl nichts, die Demo ist ziemlich tot :-(

@K.J.
Vielleicht bekommst du gescheite Fehlermeldungen wenn du in der 
config.php das Debugging aktivierst (das setzt automatisch das error 
reporting level runter damit man alle Fehlermeldungen und Warnungen zu 
sehen bekommt). Oder mal die config.php ganz löschen und schauen ob dann 
was kommt...

Und danke fürs ändern meiner Mailadresse, hat geklappt :-)

von Gelöscht (kami89)


Lesenswert?

na, noch niemand die 0.3.0 RC1 ausprobiert? ;-)
Ich warte noch auf Fehlerberichte :-D

Wie gesagt, wenn hier die ersten Berichte positiv sind, werde ich 
offiziell ein Archiv von der 0.3.0 RC1 stricken und dann zum Download 
anbieten.

@K.J. Interessant wäre für mich noch, was bei der Online Demo vom Trunk 
passiert ist, da funktioniert momentan ja gar nichts mehr...

von K. J. (Gast)


Lesenswert?

Jup dadurch das du den Trunk geändert hast hat die sich zerlegt kümmer 
mich Morgen drum.

Aso die neue Version läuft im Produktiv betrieb bei mir gut.

Und ich hab mal ein Testfile in das SVN gelegt für die Barcode 
Geschichte ich muss mich aber erstmal mit dem Template System 
auseinandersetzen, deswegen ist es grade nur nen Testfile.

von M. K. (avr-frickler) Benutzerseite


Lesenswert?

Gibt es irgendwo eine kleine Installations-Anleitung?
Ich hatte mal einen Test-Server mit Version 0.2.0 (?) aufgesetzt, aber 
nicht viel damit gemacht, kann ich die 0.3.0 da einfach drüber bügeln?

von Gelöscht (kami89)


Lesenswert?

@K.J. OK alles klar.


M. K. schrieb:
> Gibt es irgendwo eine kleine Installations-Anleitung?

Naja, so halbwegs gibts eine (mittlerweile veraltete) Anleitung im 
DokuWiki: 
http://partdb.grautier.com/uneistkami89/documentation/dokuwiki/index.php

Aber die bringt für die Version 0.3.0 eigentlich nicht mehr viel, die 
müsste mal überarbeitet werden.

> Ich hatte mal einen Test-Server mit Version 0.2.0 (?) aufgesetzt, aber
> nicht viel damit gemacht, kann ich die 0.3.0 da einfach drüber bügeln?

Ja, eigentlich muss man einfach die alten Dateien mit den Neuen 
überschreiben. Da aber viele alte Dateien nicht mehr gebraucht werden, 
ist es sauberer wenn man alle alten Dateien erst löscht und dann die 
Neuen reinkopiert. Nur (falls vorhanden) die hochgeladenen Bilder im 
Verzeichnis "img" sollten nicht gelöscht, sondern ins neue Verzeichnis 
"media" verschoben werden, und die config.php sollte ebenfalls nicht 
gelöscht werden. Alles andere kann man einfach löschen.

Dann sollte beim ersten Aufrufen noch der Installer erscheinen um ein 
paar Eingaben zu erfassen. Dann noch das Datenbankupdate (auf das man 
hingewiesen wird) durchlaufen lassen und fertig. Datenbank-Backup vor 
dem Update machen falls man bereits Datensätze in der Datenbank hat!

von Gelöscht (kami89)


Lesenswert?

Ich habe grad noch ein paar Änderungen hochgeladen (r631). Das 
Administratorpasswort wird jetzt nicht mehr einfach als MD5-Hash in der 
config.php abgelegt, sondern zuerst versalzen und dann als SHA256-Hash 
abgelegt. Für den Fall, dass ein Unberechtigter Lesezugriff auf die 
config.php bekommen würde, ist dies eine enorme Verbesserung der 
Sicherheit weil so Rainbow Tables nichts mehr bringen.

Ich dachte, diese Änderung mache ich besser jetzt, noch bevor die 0.3.0 
offiziell herausgegeben wurde. Bei denjenigen, die die 0.3.0 bereits 
verwenden, wird nach dem nächsten Update einfach der 
Installationsassistent nochmal aufgerufen, um das Administratorpasswort 
neu einzugeben.

Bitte führt das Update auf Revision 631 durch, nachher nehme ich diese 
Übergangslösung wieder raus!

Ausserdem habe ich die Dokumentation noch ein bisschen erweitert. Jetzt 
ist auch erklärt, wie man Apache, PHP, MySQL und phpMyAdmin installiert. 
Getestet habe ich es selbst schnell unter Ubuntu 13.04.

mfg

von Gelöscht (kami89)


Lesenswert?

hmm ich beschäftige mich grad ein bisschen mit dem Thema Sicherheit um 
die Doku in diesem Punkt noch zu ergänzen, und eventuell auch noch ein 
paar Überprüfungen der Sicherheitseinstellungen in den Sourcecode 
einzubauen.

Grundsätzlich gibt es ja zwei Varianten, Part-DB zu installieren. 
Entweder installiert man es im Home-Verzeichnis und erstellt eine 
Verknüpfung in /var/www, oder man installiert Part-DB direkt in 
/var/www/.

Die erste Variante hat den Vorteil, dass man Part-DB ohne root-Rechte 
installieren und aktualisieren kann. Allerdings müssten die Dateirechte 
für die config.php und das Verzeichnis "media" dann jedoch auf 666 bzw. 
777 stehen, weil der Benutzer "www-data" in diesem Fall nicht der 
Besitzer der Dateien ist. Nur so kann Apache die config.php beschreiben 
und Dateien nach media hochladen. Unschön ist dann allerdings, dass 
die von Apache erstellten Dateien dem Benutzer "www-data" gehören, alles 
andere aber dem angemeldeten Systembenutzer. Irgendwie ein bisschen ein 
Durcheinander wie ich finde...

Daher frage ich mich ein bisschen, ob wir in der Doku besser nur die 
zweite Variante erklären, also dass man Part-DB mir root-Rechten in 
/var/www/ installiert, den Besitzer auf "www-data" und die Rechte auf 
644 bzw. 755 setzt. Das Updaten wird so zwar mühsamer weil es nur mit 
Root-Rechten durchgeführt werden kann, insgesamt empfinde ich diese 
Variante aber als "sauberer" und auch sicherer (weil die Dateirechte so 
eingeschränkter sein können, z.B. 755 statt 777).

Installiert man Part-DB auf dem Webspace eines Hosters, reichen ja auch 
644/755 aus um die Dateien beschreiben zu können.

Wobei man noch berücksichtigen sollte, dass das "Update-Root-Problem" 
nicht mehr vorhanden ist, sobald wir einen Updater in Part-DB 
integrieren. Dann wird das Update nämlich automatisch unter dem Benutzer 
"www-data" durchgeführt...

Jetzt wollte ich mal fragen, wie ihr das seht?

Ausserdem kam mir noch eine andere Idee in den Sinn. Irgendwie wäre es 
doch schön, wenn alle "individuellen" Dateien in einem separaten 
Verzeichnis liegen würden, sauber getrennt von den Part-DB 
Systemdateien. Konkret denke ich da an ein Verzeichnis "data", in dem 
dann die config.php und das Verzeichnis "media" liegt. Vielleicht 
bräuchte man dieses Verzeichnis später auch mal noch für andere Sachen. 
So ein data-Verzeichnis würde verschiedene Vorteile bieten:
- Möchte man regelmässige Backups von Part-DB machen, muss so neben der 
MySQL Datenbank nur dieses eine Verzeichnis "data" mitgesichert werden. 
Alle zu sichernden Dateien befinden sich in diesem Verzeichnis, und 
sonst nirgendwo.
- Schreibrechte für den Webserver sind nur in diesem data-Verzeichnis 
notwendig, überall sonst sind nur Leserechte nötig. So können die 
Dateirechte sehr restriktiv vergeben werden, was sicherheitstechnisch 
sicher keine schlechte Sache ist.
- (Man könnte sogar das data-Verzeichnis ausserhalb des Part-DB 
Hauptverzeichnisses betreiben, indem man ein Symbolischer Link erzeugt. 
So könnte das data-Verzeichnis z.B. auch auf einer Netzwerkfreigabe 
liegen, falls das jemand brauchen kann...)

Was meint ihr dazu?
Der einzige Nachteil dieser Umstellung ist eigentlich die Umstellung an 
sich^^ Solange die 0.3.0 aber noch nicht offiziell freigegeben wurde, 
sollte das aber nicht so tragisch sein...

Ich wäre froh um Rückmeldungen.

mfg

von Uhu U. (uhu)


Lesenswert?

Urban B. schrieb:
> Jetzt wollte ich mal fragen, wie ihr das seht?

Ich bin unbedingt für die Installation unter root-Rechten. Diese 
Frickeleien mit Benutzerrechten sind einfach nur Murks.

Die Trennung von Code und Konfiguratiosdaten etc. ist auch 
wünschenswert.

von Gerald *. (pyromane)


Angehängte Dateien:

Lesenswert?

Urban B. schrieb:
> Was meint ihr dazu?

Eine Trennung von Code und Benutzerdaten würde ich auch sehr begrüßen, 
vor allem in Hinsicht auf Backups.

Ich würde es durchaus nützlich finden wenn der "Durchschnittspreis für 1 
Stk.: *,* €" gleich direkt bei der Bauteileübersicht als Spalte 
angezeigt werden würde.


Wie legt man eig in der 0.2.2 Version Footprints an?
Die Footprints habe ich hochgeladen, werden auch unter Tools > 
Footprints angezeigt, unter Bearbeiten > Footprints habe ich mir bereits 
eine kleine Struktur angelegt, aber ich kann nirgends ein "Bild" 
auswählen wie hier im Forum einige Beiträge weiter oben beschrieben 
wurde.

von Gelöscht (kami89)


Lesenswert?

Okay ich habe schonmal damit begonnen ein data-Verzeichnis zu erstellen, 
und die Doku ist jetzt umgeschrieben für die Installation als root, 
direkt in /var/www. Werde das Update bald hochladen.


Gerald *. schrieb:
> Ich würde es durchaus nützlich finden wenn der "Durchschnittspreis für 1
> Stk.: *,* €" gleich direkt bei der Bauteileübersicht als Spalte
> angezeigt werden würde.
Gute Idee, habe das gleich in die v0.3.0 mit eingebaut. Ist aber 
standardmässig nicht aktiviert, man muss diese Spalte in der config.php 
selber aktivieren. Konkret muss man die Zeile mit dem Arrayelement 
"$config['table']['category_parts']['columns']" aus der 
config_defaults.php in die config.php kopieren und dort noch die Spalte 
"average_single_price" einfügen. Ist halt bis jetzt noch nirgens 
dokumentiert welche Spalten zur Verfügung stehen, das muss dann auch mal 
noch in die Doku eingebaut werden...

> Wie legt man eig in der 0.2.2 Version Footprints an?
> Die Footprints habe ich hochgeladen, werden auch unter Tools >
> Footprints angezeigt, unter Bearbeiten > Footprints habe ich mir bereits
> eine kleine Struktur angelegt, aber ich kann nirgends ein "Bild"
> auswählen wie hier im Forum einige Beiträge weiter oben beschrieben
> wurde.

Ich vermute mal, diese Option ist erst nach der Veröffentlichung von 
0.2.2 hinzugefügt worden, steht also nur zur Verfügung wenn man Part-DB 
direkt per SVN runtergeladen hat. Am besten wartest du auf die Version 
0.3.0 :-)

von Gelöscht (kami89)


Lesenswert?

lol, mir ist grad noch was merkwürdiges aufgefallen^^
In der Spalte "Datenblätter" fehlt bei mir im Firefox plötzlich das Icon 
für alldatasheet.com. Dateipfad habe ich überprüft, der passt. Cache 
geleert, im privaten Modus vom FF probiert, bringt alles nichts. Die 
anderen zwei Icons werden richtig angezeigt. Dann habe ich mal die 
Bilddatei umbenannt, dann funktionierts wieder. Wieder den alten 
Dateinamen gegeben, funktioniert nicht mehr.

Lustigerweise heisst die Bilddatei "ads.png". Da ich es mir nicht anders 
erklären konnte, vermutete ich mal dass Firefox aufgrund des Dateinamens 
meint, dass es sich bei dem Bild um Werbung handelt. Dann kam mir in den 
Sinn, dass es dann aber auch am AdBlock liegen könnte. Und tatsächlich: 
Adblock deaktiviert --> Bild wird angezeigt. AdBlock aktiviert --> Bild 
wird nicht angezeigt xD

Ich werde dann die Datei von "ads.png" wohl besser mal nach 
"alldatasheet.png" umbenennen... ;-)

von Gerald *. (pyromane)


Lesenswert?

Urban B. schrieb:
> Gute Idee, habe das gleich in die v0.3.0 mit eingebaut. Ist aber
> standardmässig nicht aktiviert, man muss diese Spalte in der config.php
> selber aktivieren.

Schon mal ein dickes Danke im voraus.

Urban B. schrieb:
> Am besten wartest du auf die Version 0.3.0 :-)

Die Umsetzung in der Demoversion gefällt mir schon gut.
Ich bin schon auf das Release gespannt :)

von Gelöscht (kami89)


Lesenswert?

Es ist soweit! Part-DB 0.3.0 RC1 steht ab sofort zum Download bereit! 
:-)

https://code.google.com/p/part-db/downloads/detail?name=Part-DB_0.3.0.RC1.tar.gz

In Part-DB 0.3.0 sind jetzt übrigens auch .htaccess Dateien enthalten, 
um die Verzeichnisse vor unbefugtem Zugriff zu schützen. Nähere Infos 
dazu gibts in der Dokumentation.

Leider ist die Doku momentan aber nicht online verfügbar. Für diesen 
Fall habe ich im Verzeichnis "readme" die Datei "INSTALL.txt" noch 
ergänzt, ist halt nicht so schön zu lesen weils in Wiki-Syntax 
geschrieben ist, aber besser als nichts :-)

@K.J. wäre super wenn du die Online-Demo noch aktualisieren könntest, 
damit die Installationsanleitung aufgerufen werden kann.

mfg

von Gelöscht (kami89)


Lesenswert?

Bin grad noch auf eine Idee gekommen. Wir haben ja noch den Webspace von 
Christian (holle), da habe ich kurzerhand mal die Doku hochgeladen um 
die Zeit zu überbrücken bis die offizielle Demo wieder aktuell ist:

http://kami89.myparts.info/dokuwiki/doku.php

Ist sonst etwas mühsam wenn man sich mit der INSTALL.txt begnügen 
muss...

Danke an dieser Stelle nochmal an Christian, und sorry dass es so lange 
dauert bis die Benutzerverwaltung umgesetzt wird ;-)

von K. J. (Gast)


Lesenswert?

Hi die doku würde auch in der DEMO sein und zwar in der SVN Version ;-)

OK grade gesehen irgend was hat sich da zerlegt mal wieder.

von Gelöscht (kami89)


Lesenswert?

Ach so, ich dachte dass die Demo "Part-DB - 0.2.2 SVN (Aktuell)" auch 
täglich ein Update aus dem Trunk holt, und die Demo "Part-DB - 0.3.0 SVN 
Testversion" halt aus dem Branch ;-)

Daher ging ich davon aus, dass die Demo "Part-DB - 0.2.2 SVN (Aktuell)" 
auch auf die Version 0.3.0 updaten müsste, da die 0.3.0 ja nun im Trunk 
liegt.

Dass die Demo "Part-DB - 0.3.0 SVN Testversion" nicht mehr aktualisiert 
wird, liegt daran, dass ich den Branch "uneist_kami89" gelöscht habe, 
weil die Entwicklung nun ja wieder im Trunk stattfindet und der Branch 
daher nicht mehr benötigt wird.

Das Beste wäre dann wohl vermutlich, wenn du die Demo "Part-DB - 0.3.0 
SVN Testversion" einfach vom Branch "uneist_kami89" auf den Trunk 
umstellst, dann wird die wieder korrekt aktualisiert.

von Christian (Gast)


Lesenswert?

Hab noch einen Wunsch. Beim CSV oder XML export wird der Hersteller und 
die Part-ID (pid) nicht in einer Spalte aufgeführt.
Wäre für diese Änderung dankbar.

von Gelöscht (kami89)


Lesenswert?

Christian schrieb:
> Hab noch einen Wunsch. Beim CSV oder XML export wird der Hersteller und
> die Part-ID (pid) nicht in einer Spalte aufgeführt.
> Wäre für diese Änderung dankbar.

Kein Problem, habs gleich eingebaut und hochgeladen 
(lib/lib.export.php): 
https://code.google.com/p/part-db/source/browse/trunk/lib/lib.export.php?spec=svn640&r=640

Um es zu verwenden musst du in der config.php die entsprechende 
$config['export']... Zeile neu definieren (aus config_defaults.php in 
die config.php kopieren und dort anpassen). Für die ID-Spalte musst du 
"id", für den Hersteller "manufacturer" im String ergänzen.

von Christopher K. (djmaster_d)


Lesenswert?

Hi, nachdem ich nun ebenfalls umgestiegen bin auf die partdb hab ich 
gleich mal ne Frage dazu. ;)

Ich würde mir gerne statt dem Lagerort die Bestellnummern ausgeben 
lassen.(Ich meine übrigens die Listenanzeige "showparts.php?xx")

Ich weiß nicht genau wieviel Aufwand das ist aber ich würd es mir auch 
selbst zutrauen. Kann ja nicht so schwer sein.. Denk ich mir.(Haha)
Leider durchblicke ich den Code noch nicht wirklich. Wäre für ein paar 
Tips sehr dankbar.

Grüße CK

von Gelöscht (kami89)


Lesenswert?

Hallo Christopher,

> Ich würde mir gerne statt dem Lagerort die Bestellnummern ausgeben
> lassen.(Ich meine übrigens die Listenanzeige "showparts.php?xx")

mmh "showparts.php" klingt nach der Part-DB Version 0.2.2, wenn du den 
Release Kandidat der Version 0.3.0 benutzt oder noch auf die finale 
Version wartest, ist dein gewünschtes Feature bereits drin :-)
Da müsstest du dir mal die Dateien "config_defaults.php" und die 
"config.php" anschauen, speziell die Variable 
"$config['table']['category_parts']['columns']"

mfg

von Christopher K. (djmaster_d)


Lesenswert?

Das war ja fast zu einfach um wahr zu sein. Danke ich habs geschafft. 
Hab gleich auf RC1 geupdated.

Zeile in der config_defaults.php lautet in meinem Fall nun
1
 $config['table']['category_parts']['columns']           = 'hover_picture;name;description;instock_mininstock;footprint;storelocation;datasheets;attachements;button_decrement;button_increment;suppliers;supplier_partnrs';

Geniales Script... netten Abend wünsche ich noch.

PS: Beim update meldete der Server "File does not exist: 
/usr/share/javascript/toggle.js".

Lösung war: In der Datei "/etc/apache2/conf.d/javascript-common.conf" 
die Zeile "Alias /javascript /usr/share/javascript/" 
Kommentieren/Löschen und Apache neu starten.

von Gelöscht (kami89)


Lesenswert?

Christopher K. schrieb:
> Zeile in der config_defaults.php lautet in meinem Fall nun [...]

Jup das funktioniert so zwar, allerdings wird die config_defaults.php 
beim nächsten Update wieder überschrieben und deine Einstellung geht 
verloren. Daher musst du folgendes machen:
- Diese Zeile in die "config.php" (im Verzeichnis "data") einfügen
- Dort dann "$config" durch "$manual_config" ersetzen (in dieser Zeile)
- Die "config_defaults.php" wieder in Originalzustand bringen (optional)

So ist diese Einstellung dauerhaft in deiner persönlichen Konfiguration 
gespeichert, die beim nächsten Update nicht überschrieben wird.

Ist halt leider noch nirgens dokumentiert dass man das so machen muss...

> PS: Beim update meldete der Server "File does not exist:
> /usr/share/javascript/toggle.js".
>
> Lösung war: In der Datei "/etc/apache2/conf.d/javascript-common.conf"
> die Zeile "Alias /javascript /usr/share/javascript/"
> Kommentieren/Löschen und Apache neu starten.

hmm das scheint wohl ein Problem bei deiner Installation zu sein... Ist 
mir jedenfalls bei Ubuntu 12.10 und 13.04 nicht aufgefallen wo ich 
Part-DB jeweils teste.

> netten Abend wünsche ich noch.
ebenfalls :-)

von Christopher K. (djmaster_d)


Lesenswert?

Ahh, Das hat super funktioniert mit dem "$manual_config" in der 
config.php. Ist natürlich die bessere Lösung.

Das "File does not exist: /usr/share/javascript/toggle.js" Problem hatte 
ich bei 2 debian6 Rechnern mit froxxlor. Hatte alles via apt-get 
installiert. Merken tut man es wenn man kein Menü sieht in der partdb. 
;)

Vielen Dank...

von Gerald *. (pyromane)


Lesenswert?

Bin gerade dabei Part-DB 0.3.0 RC1 zu testen.
Gefällt mir grundsätzlich sehr gut :-)

Dazu habe ich vom bestehenden Part-DB 0.2.2 die Datenbank kopiert und 
die frische Installation von 0.3.0 RC1 eingefügt => funktioniert alles 
keine Probleme.

Jetzt habe ich noch die ganzen Bilder von img nach data/media kopiert => 
um jetzt wieder Vorschaubilder (thumbnails) zu erhalten müsste ich jetzt 
jeden Artikel öffnen und das Häkchen "Als Hauptbild verwenden" setzen.
Lösungsvorschlag:
Sollte nur ein Bild vorhanden sein, so wird das automatisch als 
"Hauptbild" verwendet oder man übernimmt zumindest die Zuordnung aus der 
alten DB Version.

von Gelöscht (kami89)


Lesenswert?

Gerald *. schrieb:
> Jetzt habe ich noch die ganzen Bilder von img nach data/media kopiert =>
> um jetzt wieder Vorschaubilder (thumbnails) zu erhalten müsste ich jetzt
> jeden Artikel öffnen und das Häkchen "Als Hauptbild verwenden" setzen.

Stimmt, das habe ich übersehen. Ich baue gleich ein Datenbankupdate ein, 
das dieses Problem im Nachhinein noch korrigiert, du musst nicht überall 
das Hauptbild manuell setzen.

Danke fürs Feedback!

von Gelöscht (kami89)


Lesenswert?

Urban B. schrieb:
> Ich baue gleich ein Datenbankupdate ein

Ist drin --> Revision 641

Ausserdem habe ich unser DokuWiki noch um einen Read-Only Modus 
erweitert, welcher standardmässig aktiviert ist, also die Bearbeitung 
von Seiten verhindert. Schreibrechte erhält man, wenn man im 
DokuWiki-Verzeichnis eine Datei mit dem Namen 
"PART-DB_ENABLE-DOKUWIKI-WRITE-PERMS.txt" anlegt. Dies kann aber auch 
bequem in der Part-DB Konfigurationsseite durchgeführt werden, aber nur, 
wenn in Part-DB der Ordner "development" existiert (für Nicht-Entwickler 
soll diese Option nicht sichtbar sein, so wie die Entwickler-Werkzeuge).

Der Grund für den Read-Only Modus ist einfach: In der Online Demo kann 
sonst jedermann irgend einen Schrott da reinschreiben ;-) Insbesondere 
bei den Bash-Befehlen stellt dies auch ein Sicherheitsrisiko dar.

In der Online-Demo ist natürlich das Deaktivieren des Read-Only Modus 
über die Konfigurationsseite nicht möglich.

von Gerald *. (pyromane)


Lesenswert?

Urban B. schrieb:
> Urban B. schrieb:
>> Ich baue gleich ein Datenbankupdate ein
>
> Ist drin --> Revision 641

Vielen Dank für die rasche Reaktion!

Wie hast du es den umgesetzt? (kann es erst Sonntag testen)

von Gelöscht (kami89)


Lesenswert?

Gerald *. schrieb:
> Vielen Dank für die rasche Reaktion!

Kein Problem, betrifft ja nicht nur dich, sondern auch alle anderen 
Benutzer die in Part-DB 0.2.2 Bilder hochgeladen haben.
Und um genau solche Fehler zu finden gibt es ja die Release Kandidaten 
:-)

> Wie hast du es den umgesetzt? (kann es erst Sonntag testen)

https://code.google.com/p/part-db/source/browse/trunk/updates/db_update_steps.php

Im "case 14" ist jetzt ein Datenbankupdate, das allen Bauteilen, die 
noch kein Hauptbild definiert haben, jedoch mindestens ein Bild 
besitzen, eines dieser Bilder als Hauptbild definiert.

Um es zu testen müsstest du also einfach die Datei db_update_steps.php 
mit der neuen Version überschreiben.

von Gerald *. (pyromane)


Lesenswert?

Noch ein kleiner Vorschlag meinerseits:
Um die Übersichtlichkeit zu erhöhen könnte/sollte man "obsolete 
Bauteile" bei denen der Lagerstand auf null gesunken ist aus der 
Bauteileübersicht ausblenden und nur mehr unter
Verwaltung / Tools > Zeige > Nicht mehr erhältliche Teile
auflisten. Dadurch wären evtl. verknüpfte Datenblätter im Falle des 
Falles weiter verfügbar, nur man stolpert nicht ständig über "Leichen".


Gibt es eigentlich einen besonderen Grund warum die Standardfootprints 
nicht bereits in der DB eingetragen sind?
Die Struktur könnte man ja von den Footprint Bildern übernehmen.
Würde aus meiner Sicht den Einrichtungsaufwand deutlich minimieren und 
die Struktur sollte auch für 95% der Benutzer zutreffend sein (für den 
Rest ist verschieben einfacher als neu anlegen).

von Gelöscht (kami89)


Lesenswert?

Gerald *. schrieb:
> Um die Übersichtlichkeit zu erhöhen könnte/sollte man "obsolete
> Bauteile" bei denen der Lagerstand auf null gesunken ist aus der
> Bauteileübersicht ausblenden und nur mehr unter
> Verwaltung / Tools > Zeige > Nicht mehr erhältliche Teile
> auflisten.

Keine schlechte Idee, ich nehme das mal in unsere ToDo Liste auf (wäre 
zwar keine sehr grosse Sache, zwischen der Veröffentlichung der 
Release-Kandidaten und dem finalen Release ist aber kein guter Zeitpunkt 
um solche neuen Funktionen einzubauen).

Gerald *. schrieb:
> Gibt es eigentlich einen besonderen Grund warum die Standardfootprints
> nicht bereits in der DB eingetragen sind?

Diese Frage kam hier schon mehrfach :-)
Also standardmässig eingetragen würde ich nicht so gut finden, weil es 
sicher viele Leute gibt die entweder gar keine, oder nur wenige 
Footprints eintragen (wegen der Übersichtlichkeit). Allerdings fände ich 
es auch gut, wenn es eine Option gäbe, mit der man automatisch die 
wichtigsten Footprints mit einem Klick hinzufügen könnte. Ich schreib 
das auch gleich in die ToDo-Liste.

von Dirk B. (garag)


Lesenswert?

Moin moin,

bei mir wird der Preis mit DM angegeben. Wie kann ich das auf Euro 
umstellen ?

Gruß
Dirk

von Gerald *. (pyromane)


Lesenswert?

Dirk B. schrieb:
> bei mir wird der Preis mit DM angegeben. Wie kann ich das auf Euro
> umstellen ?

In der 0.2.2 Version findest du es in der config.php unter:
$currency      = "&euro;";

In der 0.3.0.RC1 Version unter data/config.php müsste es folgender 
Punkt sein:
$manual_config['money_format']['de_DE']                = '%!n Euro';


@kami89
Wenn ich über die config.php zusätzliche Spalten einblenden lasse und 
danach unter Verwaltung / Tools > System > Konfiguration die Sprache 
ändere, fehlen in der config.php meine Einträge für die zusätzlichen 
Spalten.

von Gelöscht (kami89)


Lesenswert?

Gerald *. schrieb:
> @kami89
> Wenn ich über die config.php zusätzliche Spalten einblenden lasse und
> danach unter Verwaltung / Tools > System > Konfiguration die Sprache
> ändere, fehlen in der config.php meine Einträge für die zusätzlichen
> Spalten.

Hast du in der config.php die entsprechenden Einträge mit 
$manual_config[] statt $config[] gemacht? Mit $manual_config[] sollte es 
dauerhaft gespeichert werden.

Kurze Erklärung
$config[] muss für alle Einstellungen verwendet werden, die in der 
config_defaults.php vor dem Kommentar-Block
1
Below, there are attributes which we don't want to save in the user's "config.php". 
2
[...]

stehen. Dies sind diejenigen Einstellungen, die bei Updates nicht 
überschrieben werden, die bleiben für immer so erhalten wie sie mal 
definiert wurden. Alle Einstellungen nach dem Kommentarblock werden 
nicht in der config.php gespeichert. z.B. die verfügbaren Sprachen 
oder Währungen haben in der config.php grundsätzlich nichts zu suchen. 
Diese können bei Updates auch überschrieben werden, z.B. wenn wir eine 
neue Sprache oder eine neue Spalte in den Tabellen hinzufügen sollen die 
ja dem Benutzer dann auch zur Verfügung stehen, und nicht durch die 
config.php wieder mit den alten Werten überschrieben werden. Möchte man 
aber trotzdem aus irgend einem Grund an diesen Variablen was verändern, 
können sie in der config.php als $manual_config[] überschrieben werden.

von Peter M. (pc-baerli)


Lesenswert?

Hallo Zusammen,
Erstmal Respekt vor Eurer Arbeit ...

Ich wollte gestern die V 0.3.0.RC1 installieren , aber der Installer 
kommt immer nur bis zu der Einstellung " Zeitzone und Sprache" und egal 
was ich versuche es endet mit einer Meldung , wie:
Die gewählte Sprache "de_CH" wird vom Server nicht unterstützt!
Bitte installieren Sie diese Sprache oder wählen Sie eine andere.

Was mache ich falsch ?
Wie und wo könnte ich diese Sprachen installieren ?

Installieren wollte ich die Applikation ich auf einem "Schweizer" 
WebHost  --> andere Webapplikationen machten bisher keine Probleme

von Gerald *. (pyromane)


Lesenswert?

Peter Müller schrieb:
> Was mache ich falsch ?

Hast du evtl. schon mal versucht "de_CH (UTF-8)" auszuwählen?
Nicht UTF-8 Versionen bringen bei mir auch die genannte Fehlermeldung.


@kami89
Danke für die ausführliche Antwort!
Ich hatte sogar deine Erklärung vom 23.5 gelesen, nur irgendwie...

von Peter M. (pc-baerli)


Lesenswert?

Egal, mit welcher Auswahl ich es versuche, ich bekomme immer dieselbe 
Fehlermeldung ...

Auf dem Server sind folgende Versione aktuell:
PHP-Version:     5.3.10
MySQL-Version:   5.5.29
Perl-Version     5.12.4

von Udo N. (weinbauer73)


Lesenswert?

Ich habe mich mal an einer Installation versucht. Revision 642 geladen, 
Aufruf der Seite:
1
Die Datei "config.php" konnte nicht beschrieben werden. Überprüfen Sie, ob genügend Rechte vorhanden sind.

Kopiere ich die config_defaults.php nach config.php kommt die nächste 
Fehlermeldung, wobei diese Meldung noch nicht mal im Part-DB-Design 
kommt, sondern nur als Plaintext.
1
Bitte verschieben Sie die folgenden Dateien und Ordner ins Verzeichnis "data":

Warum ist dann die config_defaults.php dann nicht schon im 
data-Verzeichnis? Verschiebe ich die zuvor kopierte config.php nach 
data, so gibts die nächste Fehlermeldung:
1
Es gab ein Fehler bei der Aktualisierung ihrer config.php:
2
Fehler beim Updaten der config.php: Unbekannte Version!

Einerseits muss die config_defaults.php direkt im Zielverzeichnis liegen 
und falls die config.php weder im Hauptverzeichnis noch in data 
vorliegt, die config_defaults.php nach config.php kopiert werden. Dazu 
sollte die config_defaults.php auch die richtige Versionsnummer tragen. 
Für den Anwender wäre eine manuelle Bearbeitung der Konfiguration für 
eine Erstinstallation wenig bis gar nicht zumutbar. Wäre doch nett, wenn 
wir das nicht benutzerfreundlicher hinbekämen :-)

von Gelöscht (kami89)


Lesenswert?

Peter Müller schrieb:
> Egal, mit welcher Auswahl ich es versuche, ich bekomme immer dieselbe
> Fehlermeldung ...

Bei welchem Webhoster bist du?

Füge bitte mal am Anfang der start_session.php die folgenden Zeilen ein:
1
print 'LC_ALL      = '.var_export(setlocale(LC_ALL,         'de_CH.utf8', 'de_CH'), true).'<br>';
2
print 'LC_COLLATE  = '.var_export(setlocale(LC_COLLATE,     'de_CH.utf8', 'de_CH'), true).'<br>';
3
print 'LC_CTYPE    = '.var_export(setlocale(LC_CTYPE,       'de_CH.utf8', 'de_CH'), true).'<br>';
4
print 'LC_MONETARY = '.var_export(setlocale(LC_MONETARY,    'de_CH.utf8', 'de_CH'), true).'<br>';
5
print 'LC_NUMERIC  = '.var_export(setlocale(LC_NUMERIC,     'de_CH.utf8', 'de_CH'), true).'<br>';
6
print 'LC_TIME     = '.var_export(setlocale(LC_TIME,        'de_CH.utf8', 'de_CH'), true).'<br>';
7
print 'LC_MESSAGES = '.var_export(setlocale(LC_MESSAGES,    'de_CH.utf8', 'de_CH'), true).'<br>';
8
die();

Und stelle hier die Ausgabe rein, vielleicht sieht man da was 
auffälliges.

@Udo
1
Die Datei "config.php" konnte nicht beschrieben werden. Überprüfen Sie, ob genügend Rechte vorhanden sind.

Das heisst, dass Apache keine Schreibrechte im Verzeichnis "data" hat, 
wo er die config.php anlegen möchte. In der Doku ist beschrieben wie die 
Rechte gesetzt werden sollen: 
http://kami89.myparts.info/dokuwiki/doku.php?id=installation

Udo Neist schrieb:
> Kopiere ich die config_defaults.php nach config.php kommt die nächste
> Fehlermeldung, wobei diese Meldung noch nicht mal im Part-DB-Design
> kommt, sondern nur als Plaintext.
> Bitte verschieben Sie die folgenden Dateien und Ordner ins Verzeichnis "data":

Man darf die config_defaults.php NICHT nach config.php kopieren, das 
gibt ein Durcheinander. Die config_defaults.php ist nicht mehr wie bei 
Part-DB 0.2.2 die config.php.template nur eine Vorlage für die 
config.php, sondern die hat jetzt auch eine "richtige" Aufgabe im 
System. Dort sind nämlich alle verfügbaren Sprachen, die installierte 
Part-DB Version uvm. gespeichert, das hat in der config.php alles nichts 
zu suchen.

Dass die Fehlermeldung nicht im Part-DB Design daherkommt ist natürlich 
schade, liegt aber daran dass bereits ganz am Anfang der 
start_session.php geprüft werden muss, ob sich die genannten Dateien und 
Ordner am "falschen" Ort befinden, also noch dort wo sie in Part-DB 
0.2.2 abgelegt wurden. Solange diese Dateien (vor allem die config.php) 
nicht am richtigen Ort liegen, sollte das Skript nicht weiter ausgeführt 
werden damit es nicht zu anderen Problemen kommt. Und weil es zu diesem 
Zeitpunkt noch keine Klasse "HTML" und damit Templates gibt, kann nicht 
das Design von Part-DB benutzt werden.

Ich kann aber mal versuchen ohne Templates der Fehlermeldung ein Design 
zu verpassen, an dem man eindeutig erkennt dass es sich um eine 
Fehlermeldung von Part-DB handelt.

Udo Neist schrieb:
> Warum ist dann die config_defaults.php dann nicht schon im
> data-Verzeichnis?

Weil im data-Verzeichnis nur Dateien sind, die nicht von Part-DB 
stammen (bis auf die index.html und .htaccess). Dort sind nur 
Benutzerdaten, oder mit anderen Worten, alles was der Benutzer kopieren 
müsste um ein Backup anzulegen. Die config_defaults.php hingegen ist 
eine Systemdatei von Part-DB, dort dran darf der Benutzer auf keinen 
Fall dran rumfummeln. Alles ausserhalb des data-Verzeichnis ist tabu für 
den Benutzer, weil es sonst beim nächsten Update gleich wieder 
überschrieben werden würde. Das passiert mit den Dateien im 
data-Verzeichnis nicht.

Udo Neist schrieb:
> Verschiebe ich die zuvor kopierte config.php nach
> data, so gibts die nächste Fehlermeldung:
> Es gab ein Fehler bei der Aktualisierung ihrer config.php:
> Fehler beim Updaten der config.php: Unbekannte Version!

Das war die config.php, die du von der config_defaults.php kopiert hast? 
Dann ist klar dass er die nicht updaten kann, weil es keine config.php 
von der Part-DB 0.2.2 ist. Der Updater erwartet hier entweder eine 
config.php von Part-DB 0.2.2 die er dann aktualisiert, oder aber eine 
config.php die mit dem Installer erzeugt wurde und somit eine korrekte 
Versionsnummer enthält.

Udo Neist schrieb:
> Für den Anwender wäre eine manuelle Bearbeitung der Konfiguration für
> eine Erstinstallation wenig bis gar nicht zumutbar. Wäre doch nett, wenn
> wir das nicht benutzerfreundlicher hinbekämen :-)

Wozu willst du denn die config.php vor der ersten Benutzung manuell 
erstellen wenn es doch einen grafischen Installer gibt, der dann die 
config.php korrekt erzeugt? :-)

Es ist eigentlich ganz einfach:

Szenario 1: Neuinstallation, es existiert keine config.php
Part-DB das erste mal aufrufen -> Installer durchlaufen lassen -> fertig
Mächte man zusätzlich noch die Konfuguration manuell verändern kann man 
das jetzt tun, weil die config.php jetzt ja existiert.

Szenario 2: Part-DB 0.2.2 auf 0.3.0 updaten
Part-DB 0.3.0 ins Installationsverzeichnis entpacken, alte Dateien 
überschreiben. Part-DB aufrufen, Meldung "Dateien nach data verschieben" 
befolgen (nichts rumfummeln, nur verschieben). Part-DB nochmals 
aufrufen, config.php wird automatisch auf das neue Format aktualisiert, 
Installer durchlaufen lassen, fertig.

Und wenn Part-DB motzt dass nicht genügend Rechte zum Schreiben der 
config.php vorhanden sind: Korrekte Rechte (nach Doku) vergeben --> 
nochmals versuchen --> fertig

:-)

von Udo N. (weinbauer73)


Lesenswert?

Dann wäre es doch viel sinnvoller, die Fehlermeldung zu korrigieren. Ein 
Verweis auf das Wiki wäre hier auch hilfreich. Ein grafischer Installer 
sollte mit klaren Meldungen kommen und nicht nur irgendwelche 
Fehlermeldungen. In dieser Form würde ich keinesfalls einem Release 
zustimmen.

Wenn die Rechte der Verzeichnisse nicht stimmen, sollte das gemeldet 
werden. Natürlich könnte eine Routine first_install() ja auch versuchen, 
die Rechte zu korrigieren. So verwirrt das ganze. In meinem Filemanager 
gibt es eine Klasse class.fileio.php, deren Funktion aboutFile() zeigt, 
wie man die Rechte eines Files/Verzeichnisses unter PHP auswertet.

Die config_defaults.php führt in die Irre. Viele PHP-Projekte schleppen 
eine solche Datei mit, die dann oft vom Anwender umkopiert werden soll, 
damit die Installation klappt. Einfach die Datei gleich schon im 
data-Verzeichnis unterbringen und eventuell auch defaults.php nennen 
oder eine leere config.php mitliefern? Die config.php aus 0.2.2 würde ja 
entsprechend umgeschrieben.

Grüße
Udo

PS: SVN speichert die Datei/Verzeichnisrechte, da sollte man diese von 
Anfang an auch richtig einstellen :-)

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Dann wäre es doch viel sinnvoller, die Fehlermeldung zu korrigieren.
Klar könnte man sie noch etwas genauer formulieren, ich wollte aber 
nicht überall im Skript bei jedem Schreibzugriff noch eine Überprüfung 
auf korrekte Dateirechte und ein Versuch dies automatisch zu korrigieren 
einbauen, weil sowieso geplant ist eine zentrale Überprüfung auf 
korrekte Dateirechte einzubauen. Die hats jetzt halt nur noch nicht in 
die 0.3.0 geschafft...

Ich gebe dir schon Recht, ich finde auch eine Überprüfung der 
Dateirechte (und ein Versuch, diese automatisch zu korrigieren) muss 
eingebaut werden. Aber ich dachte halt, bei der 0.2.2 ging das ja auch 
ohne, und es gibt ja eine gute Dokumentation in der beschrieben ist wie 
man die Rechte setzt muss, da kann diese Funktion noch aufs nächste 
Release warten (wir können ja nicht alle Punkte unserer ToDo-Liste in 
die 0.3.0 einbauen, sonst wird die nie fertig...).

Aber von mir aus kann ich das noch einbauen, damit das dann in der 0.3.0 
RC2 drin ist.

> Die config_defaults.php führt in die Irre. Viele PHP-Projekte schleppen
> eine solche Datei mit, die dann oft vom Anwender umkopiert werden soll,
> damit die Installation klappt.

Ja das stimmt, aber trotzdem sollte man einen kurzen Blick in die 
Installationsanleitung werfen :-)
Ich habe hier halt ein etwas anderes Konzept gewählt weil ich der 
Meinung bin, dass solche Aufgaben ein grafischer Installer übernehmen 
soll (wenn sowieso eine grafische Oberfläche vorhanden ist) und nicht 
ein händisches Rumkopieren von Dateien. Wozu von Hand Dateien 
rumkopieren, wenn es im Installer viel einfacher und schneller geht und 
man so auch noch nichts falsch machen kann?

Den Dateinamen "config_defaults.php" könnte ich natürlich in 
"DontToucheMe.php" umbenennen, das würde das Problem beheben, ist aber 
nicht gerade Entwicklerfreundlich ;-)In dieser Datei werden halt 
Standardwerte für die Konfiguration geladen, für den Fall dass diese in 
der config.php nicht definiert sind. Da fand ich halt "config_defaults" 
passend ;-)

Ich hätte aber zwei Vorschläge, diesem Problem entgegenzuwirken:
- Eine fette Warnung in die config_defaults.php einbauen "do not 
copy...read manual at http://......!";
- Mal schauen ob das Skript feststellen kann, ob der Benutzer die 
config_defaults.php als Vorlage verwendet hat, um dann eine 
Fehlermeldung ausgeben zu können.

> Einfach die Datei gleich schon im
> data-Verzeichnis unterbringen und eventuell auch defaults.php nennen
> oder eine leere config.php mitliefern? Die config.php aus 0.2.2 würde ja
> entsprechend umgeschrieben.

Eine leere config.php mitliefern ist schlecht, dann wird die config.php 
des Benutzers bei jedem Systemupdate mit dieser config.php 
überschrieben.

Eine defaults.php mitzuliefern dient irgendwie nicht der Bekämpfung der 
Ursache, sondern des Symptoms. Die Ursache ist: Der Benutzer meint 
fälschlicherweise, er müsse seine config von Hand anlegen. Mit einer 
defaults.php lässt man ihn auch noch glauben, das sei richtig so. Die 
wirklich richtige Lösung wäre aber, ihm klarzumachen dass er keine 
config anzulgenen braucht, sondern einfach http://localhost/part-db/ 
aufrufen muss und der Installer dann alles für ihn erledigt.

...meine Meinung! :-)

> PS: SVN speichert die Datei/Verzeichnisrechte, da sollte man diese von
> Anfang an auch richtig einstellen :-)

Oh das wusste ich gar nicht, danke :-D

mfg

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
> Ich gebe dir schon Recht, ich finde auch eine Überprüfung der
> Dateirechte (und ein Versuch, diese automatisch zu korrigieren) muss
> eingebaut werden. Aber ich dachte halt, bei der 0.2.2 ging das ja auch
> ohne, und es gibt ja eine gute Dokumentation in der beschrieben ist wie
> man die Rechte setzt muss, da kann diese Funktion noch aufs nächste
> Release warten (wir können ja nicht alle Punkte unserer ToDo-Liste in
> die 0.3.0 einbauen, sonst wird die nie fertig...).
>
> Aber von mir aus kann ich das noch einbauen, damit das dann in der 0.3.0
> RC2 drin ist.

Schwerwiegend ist das ja nicht, könnte man ja mit einfachen Mitteln 
erreichen. Einfach eine kleine Liste von Dateien/Verzeichnisse und deren 
Rechte mitliefern, die dann bei der Installation geprüft werden können. 
Könnte man aber auch in eine 0.3.1 rein nehmen.

> Den Dateinamen "config_defaults.php" könnte ich natürlich in
> "DontToucheMe.php" umbenennen, das würde das Problem beheben, ist aber
> nicht gerade Entwicklerfreundlich ;-)In dieser Datei werden halt
> Standardwerte für die Konfiguration geladen, für den Fall dass diese in
> der config.php nicht definiert sind. Da fand ich halt "config_defaults"
> passend ;-)
>
> Ich hätte aber zwei Vorschläge, diesem Problem entgegenzuwirken:
> - Eine fette Warnung in die config_defaults.php einbauen "do not
> copy...read manual at http://......!";
> - Mal schauen ob das Skript feststellen kann, ob der Benutzer die
> config_defaults.php als Vorlage verwendet hat, um dann eine
> Fehlermeldung ausgeben zu können.

Letzteres wäre wohl das sinnvollste.

>> Einfach die Datei gleich schon im
>> data-Verzeichnis unterbringen und eventuell auch defaults.php nennen
>> oder eine leere config.php mitliefern? Die config.php aus 0.2.2 würde ja
>> entsprechend umgeschrieben.
>
> Eine leere config.php mitliefern ist schlecht, dann wird die config.php
> des Benutzers bei jedem Systemupdate mit dieser config.php
> überschrieben.

Kommt auf das Systemupdate drauf an. Ich weiß jetzt nicht auswendig, ob 
bei SVN eine Datei als Tabu zum Update markiert werden kann. Ich glaube 
aber sowas mal gelesen zu haben. Für ein internes Systemupdate ist die 
config.php sowieso für ein Überschreiben zu schützen, am besten immer 
eine Kopie vor dem Update machen.

> Eine defaults.php mitzuliefern dient irgendwie nicht der Bekämpfung der
> Ursache, sondern des Symptoms. Die Ursache ist: Der Benutzer meint
> fälschlicherweise, er müsse seine config von Hand anlegen. Mit einer
> defaults.php lässt man ihn auch noch glauben, das sei richtig so. Die
> wirklich richtige Lösung wäre aber, ihm klarzumachen dass er keine
> config anzulgenen braucht, sondern einfach http://localhost/part-db/
> aufrufen muss und der Installer dann alles für ihn erledigt.
>
> ...meine Meinung! :-)

Könnte man auch irgendwo tief im System verstecken. Wichtig ist nur, 
dass der User nicht direkt mit der config-defaults.php bzw. config.php 
in Berührung kommt. Leider gibt es keinen Standard für solche Zwecke :(

>> PS: SVN speichert die Datei/Verzeichnisrechte, da sollte man diese von
>> Anfang an auch richtig einstellen :-)
>
> Oh das wusste ich gar nicht, danke :-D

:-D Wäre ja doof, wenn es nicht so wäre.

von Peter M. (pc-baerli)


Lesenswert?

Urban B. schrieb:
> Peter Müller schrieb:
>> Egal, mit welcher Auswahl ich es versuche, ich bekomme immer dieselbe
>> Fehlermeldung ...
>
> Bei welchem Webhoster bist du?
>
> Füge bitte mal am Anfang der start_session.php die folgenden Zeilen ein:
>
1
> print 'LC_ALL      = '.var_export(setlocale(LC_ALL,
2
> 'de_CH.utf8', 'de_CH'), true).'<br>';
3
> print 'LC_COLLATE  = '.var_export(setlocale(LC_COLLATE,
4
> 'de_CH.utf8', 'de_CH'), true).'<br>';
5
> print 'LC_CTYPE    = '.var_export(setlocale(LC_CTYPE,
6
> 'de_CH.utf8', 'de_CH'), true).'<br>';
7
> print 'LC_MONETARY = '.var_export(setlocale(LC_MONETARY,
8
> 'de_CH.utf8', 'de_CH'), true).'<br>';
9
> print 'LC_NUMERIC  = '.var_export(setlocale(LC_NUMERIC,
10
> 'de_CH.utf8', 'de_CH'), true).'<br>';
11
> print 'LC_TIME     = '.var_export(setlocale(LC_TIME,
12
> 'de_CH.utf8', 'de_CH'), true).'<br>';
13
> print 'LC_MESSAGES = '.var_export(setlocale(LC_MESSAGES,
14
> 'de_CH.utf8', 'de_CH'), true).'<br>';
15
> die();
16
>
>
> Und stelle hier die Ausgabe rein, vielleicht sieht man da was
> auffälliges.
>
Mein Webhoster ist hostpoint.ch

Also ich hab den Code reinkopiert und folgende Meldungen bekommen ...
LC_ALL = false
LC_COLLATE = false
LC_CTYPE = false
LC_MONETARY = false
LC_NUMERIC = false
LC_TIME = false
LC_MESSAGES = false

Gruss Peter

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Kommt auf das Systemupdate drauf an. Ich weiß jetzt nicht auswendig, ob
> bei SVN eine Datei als Tabu zum Update markiert werden kann.

Du darfst nicht vergessen, dass SVN NICHT der Update-Mechanismus von 
Part-DB darstellt. Das einzige "offizielle" Verfahren, seine Part-DB 
aktuell zu halten, ist immernoch über den manuellen Download des 
*.tar.gz Archives mit anschliessendem Überschreiben der alten Dateien. 
Part-DB über SVN aktuell zu halten kann sogar auch mal richtig 
schiefgehen, wenn z.B. ein Datenbankupdate in den Trunk geladen wird, 
das sich als fehlerhaft herausstellt. Solange dieses Update noch nicht 
offiziell rausgegeben wurde, können wir es nochmal verändern. Wer zu 
diesem Zeitpunkt aber bereits seine Part-DB über SVN aktualisiert hat, 
hat Pech gehabt...

Daher kann man nur davon abzuraten, Part-DB im produktiven Einsatz über 
SVN zu aktualisieren, dies sollten wirklich nur Entwickler mit ihren 
Testinstallationen von Part-DB machen.

Udo Neist schrieb:
>>> PS: SVN speichert die Datei/Verzeichnisrechte, da sollte man diese von
>>> Anfang an auch richtig einstellen :-)
>>
>> Oh das wusste ich gar nicht, danke :-D
>
> :-D Wäre ja doof, wenn es nicht so wäre.

Hmm bist du dir wirklich sicher dass das so funktioniert? Im Internet 
konnte ich dazu nichts finden, in Google Code sieht man die Dateirechte 
nirgens und wenn ich die Rechte einer Datei verändere wird sie von SVN 
nicht als "verändert" markiert...
Ausserdem, was nützen die UNIX Dateirechte wenn jemand unter Windows auf 
einer NTFS Partition arbeitet?

von Gelöscht (kami89)


Lesenswert?

Peter Müller schrieb:
> Mein Webhoster ist hostpoint.ch
>
> Also ich hab den Code reinkopiert und folgende Meldungen bekommen ...
> LC_ALL = false
> LC_COLLATE = false
> LC_CTYPE = false
> LC_MONETARY = false
> LC_NUMERIC = false
> LC_TIME = false
> LC_MESSAGES = false

Ahh, ich glaube ich habe das Problem gefunden. Hostpoint erwartet 
vermutlich "de_CH.UTF-8" statt "de_CH.utf8": 
http://support.hostpoint.ch/index.php?page=ArticleDetailPage&navigation=7&category=29&article=57

Ich bau das noch in Part-DB ein, habe da sowieso grad noch 
Optimierungspotential entdeckt :-)

von Udo N. (weinbauer73)


Lesenswert?

Ich stimme dir da schon zu, nur will ich darauf hinaus, dass wir mit dem 
Installer auch ohne Eingriffe ins System direkt starten können. 
Existiert keine config.php wird eine angelegt. Stimmen die Rechte nicht, 
wird das angezeigt. Alles andere ist Blödsinn.

Mit den Rechten unter Windows müssen wir eh schauen. Das ist eine eigene 
Geschichte und sollte später auch berücksichtigt werden. Man kann ja 
eine Umfrage starten, wer Part-DB auf welchem OS nutzt :-)

von Gelöscht (kami89)


Lesenswert?

Also ich habe mal angefangen zumindest eine rudimentäre Überprüfung der 
Dateirechte einzubauen, die "data" auf Schreibrechte überprüft. Nur habe 
ich da gewisse Schwierigkeiten...

In der Doku habe ich ja z.B. für das Verzeichnis "data" die Rechte auf 
755 zu stellen. Das gilt allerdings nur, wenn der Besitzer des Ordners 
dem Webserver (www-data) entspricht. Das ist aber nicht immer der Fall, 
das kommt auf die Infrastruktur drauf an. Bei einem Hoster kann es ja 
durchaus sein, dass die Dateien, die über FTP hochgeladen wurden, dem 
FTP-Benutzer gehören und nicht dem Webserver.

Das heisst also, es bringt nichts wenn ich "data" auf 755 prüfe, das 
einzig Sinnvolle ist, mit is_writable() auf Schreibrechte zu prüfen. 
Gibt diese Funktion "false" zurück, kann ich versuchen mit chmod() die 
Rechte auf 755 zu setzen. Geht das nicht, kann ich die Meldung ausgeben 
dass man die Rechte von Hand ändern muss (mit Verweis auf die Doku). 
Wurden die Rechte erfolgreich geändert, aber die Datei ist immernoch 
nicht beschreibbar, kann man es mit 775 und schlussendlich mit 777 
versuchen.

Das ist irgendwie ein ziemliches Gebastel. Eine andere Idee habe ich 
aber nicht, die dann auch auf jedem System funktioniert.

Gibts bessere Vorschläge? :-)

von Udo N. (weinbauer73)


Lesenswert?

Ich würde es so machen, damit hätten wir ein Problem weniger. Eine 
elegantere Methode können wir ja immer noch in spätere Releases einbauen 
:-)

von Gelöscht (kami89)


Lesenswert?

Okay, habe die Änderungen mal hochgeladen (r643).
Falls es Probleme gibt, bitte melden :-)

von Peter M. (pc-baerli)


Lesenswert?

Urban B. schrieb:
> Ahh, ich glaube ich habe das Problem gefunden. Hostpoint erwartet
> vermutlich "de_CH.UTF-8" statt "de_CH.utf8":
> http://support.hostpoint.ch/index.php?page=Article...
>
> Ich bau das noch in Part-DB ein, habe da sowieso grad noch
> Optimierungspotential entdeckt :-)


Hallo,
Habs leider nicht hinbekommen , weil ich weiss nicht, wie das mit den 
SVN geht ...
nun gut ich habe jetzt mal die Version 2.1 heruntergeladen und 
installiert ...

stehe leider aber schon wieder an ...
Bei der Navigation in "Kategorien","Baugruppen" oder "Verwaltung / 
Tools" passiert nichts, wenn ich entweder "alle Anzeigen" oder "alle 
Schliessen" klicke ...

Sollte aber für ein DB-Update in die Verwaltung kommen ;-)

Die Navigation in den Online "Test-Datenbanken" gehen ....

Habe die  Datenbank jetzt etwa 3 Mal neu installiert inkl. Datenbank 
... immer mit demselben Ergebnis -> Navigation funktioniert nicht , auch 
eine bereits eingegebene Kategorie ist nicht sichtbar
Was mache ich falsch ?

von Christian (Gast)


Lesenswert?

Christopher K. schrieb:
> Das war ja fast zu einfach um wahr zu sein. Danke ich habs geschafft.
> Hab gleich auf RC1 geupdated.
>
> Zeile in der config_defaults.php lautet in meinem Fall nun 
$config['table']['category_parts']['columns']           = 
'hover_picture;name;description;instock_mininstock;footprint;storelocati 
on;datasheets;attachements;button_decrement;button_increment;suppliers;s 
upplier_partnrs';
> Geniales Script... netten Abend wünsche ich noch.
>
> PS: Beim update meldete der Server "File does not exist:
> /usr/share/javascript/toggle.js".
>
> Lösung war: In der Datei "/etc/apache2/conf.d/javascript-common.conf"
> die Zeile "Alias /javascript /usr/share/javascript/"
> Kommentieren/Löschen und Apache neu starten.

Der String 'id' bei der 
configzeile:$config['table']['category_parts']['columns']       läuft in 
ein leeres case.
https://code.google.com/p/part-db/source/browse/trunk/lib/class.Part.php
ZEile 1141

Möchte diese Nummer auch auflistenlassen. Benutze für die Sortierung in 
der Schublade gleich die ID Nummer. Was muss da geändert werden?

von K. J. (Gast)


Lesenswert?

Hm bei mir bleibt beim SVN Update die Part-DB nach dem Dateirechte 
setzen hängen.

http://www.partdb.grautier.com/svn/

Die RC1 bin ich grade noch am uploaden, sollte heute Abend auch wieder 
Funktionieren.

Zum Dateirechte setzen oben steht da ja was zu, ich würde das nicht vom 
Script setzen lassen sondern einfach nur mit dem jeweiligen PHP User 
schauen ob es beschreibbar ist oder nicht, so wie es auch bei CMS 
Systemen gemacht wird, und dan nur ausgeben was der Benutzer noch ändern 
muss, das ist am Problemlosesten.

von Thorsten O. (Firma: mechapro GmbH) (ostermann) Benutzerseite


Lesenswert?

Gibt es irgendwo eine Übersicht über die Funktionen der Part-DB? Ist das 
nur eine Datenbank, oder gibt es auch ein Frontend mit GUI? Ich müsste 
meine Lagerhaltung (bei den Bauteilen) nämlich auch mal endlich auf eine 
solidere Basis stellen...

Edit: Ich hab gerade den zugehörigen Artikel gefunden: 
http://www.mikrocontroller.net/articles/Part-DB_RW_-_Lagerverwaltung
Wenn noch Fragen offen bleiben sollten, melde ich mich nochmal.

Mit freundlichen Grüßen
Thorsten Ostermann

von Gelöscht (kami89)


Lesenswert?

Peter Müller schrieb:
> Urban B. schrieb:
>> Ahh, ich glaube ich habe das Problem gefunden. Hostpoint erwartet
>> vermutlich "de_CH.UTF-8" statt "de_CH.utf8":
>> http://support.hostpoint.ch/index.php?page=Article...
>>
>> Ich bau das noch in Part-DB ein, habe da sowieso grad noch
>> Optimierungspotential entdeckt :-)
>
>
> Hallo,
> Habs leider nicht hinbekommen , weil ich weiss nicht, wie das mit den
> SVN geht ...

Wenn du die 0.3.0 RC1 installiert hast, kannst du vorübergehend 
folgendes machen: In der config_defaults.php die Zeile
1
$config['languages']['de_CH.utf8']                      = 'de_CH (UTF-8)';
durch diese hier ersetzen:
1
$config['languages']['de_CH.UTF-8']                      = 'de_CH (UTF-8)';
und dann unter System -> Konfiguration die Sprache auf "de_CH (UTF-8)" 
einstellen.
An der config_defaults.php darf man eigentlich NICHTS verändern wie ich 
schonmal erwähnt habe. Da diese Änderung aber in der RC2 gleich 
standardmässig mit eingebaut ist, kann man hier mal eine Ausnahme 
machen.

> stehe leider aber schon wieder an ...
> Bei der Navigation in "Kategorien","Baugruppen" oder "Verwaltung /
> Tools" passiert nichts, wenn ich entweder "alle Anzeigen" oder "alle
> Schliessen" klicke ...

Hast du mal überprüft ob die Dateirechte für die Javascript-Dateien 
korrekt sind?

Christian schrieb:
> Der String 'id' bei der
> configzeile:$config['table']['category_parts']['columns']       läuft in
> ein leeres case.

Ja, weil dies in der 0.3.0 RC1 noch nicht möglich war. Du musst die 
Datei lib/lib.export.php mit dieser hier ersetzen, dann sollte es gehen: 
https://code.google.com/p/part-db/source/browse/trunk/lib/lib.export.php

K. J. schrieb:
> Hm bei mir bleibt beim SVN Update die Part-DB nach dem Dateirechte
> setzen hängen.

mmh ok schade, aber irgendwie habe ich das schon fast vermutet dass es 
da Probleme geben wird ;-)

> Zum Dateirechte setzen oben steht da ja was zu, ich würde das nicht vom
> Script setzen lassen sondern einfach nur mit dem jeweiligen PHP User
> schauen ob es beschreibbar ist oder nicht, so wie es auch bei CMS
> Systemen gemacht wird, und dan nur ausgeben was der Benutzer noch ändern
> muss, das ist am Problemlosesten.

Jup, werde ich dann wohl noch so ändern.

mfg

von Christian (Gast)


Lesenswert?

Urban B. schrieb:
> Christian schrieb:
>> Der String 'id' bei der
>> configzeile:$config['table']['category_parts']['columns']       läuft in
>> ein leeres case.
>
> Ja, weil dies in der 0.3.0 RC1 noch nicht möglich war. Du musst die
> Datei lib/lib.export.php mit dieser hier ersetzen, dann sollte es gehen:
> https://code.google.com/p/part-db/source/browse/tr...

Betreffend dem export der datei hab ichs soweit verstanden. Ich schreibe 
von der Auflistung der Treffern bei der Suche oder der 
Kategorieauflistung der Bauteilen. Die Parameter die angezeit werden, 
können via configzeile:
configzeile:$config['table']['category_parts']['columns']
bearbetet werden. Kann da jetzt einfach den String  'id' angewendent 
werden für die Auflistung?

von Gelöscht (kami89)


Lesenswert?

Ups, nicht richtig gelesen, sorry ;-)
Das mit dem String "id" hatte ich in der RC1 noch vergessen, ist 
mittlerweile aber schon eingebaut in dieser Datei: 
https://code.google.com/p/part-db/source/browse/trunk/lib/class.Part.php

Ist dann also ab der 0.3.0 RC2 mit drin.

von Peter M. (pc-baerli)


Lesenswert?

Urban B. schrieb:
> Hast du mal überprüft ob die Dateirechte für die Javascript-Dateien
> korrekt sind?

Es hat funktioniert ... hatte da etwas vile Probleme mit den 
"Datei-Rechten"

Nun funktioniert die Navigation , wie sie sollte :-)

2 Fragen hätte ich noch:
1. das Administatoren Passwort wird trotz korrekter Eingabe nicht wieder
   erkannt und akzeptiert
2. kann eine Vorgänger-Datenbank vom Rel 1.04 RC in die neue Datenbank
   übernommen werden - oder irgendwie zumindestens die Artikel , 
Lagerorte
   usw

Danke für Eure Hilfe
Peter

von Gelöscht (kami89)


Lesenswert?

Peter Müller schrieb:
> 1. das Administatoren Passwort wird trotz korrekter Eingabe nicht wieder
>    erkannt und akzeptiert

Hoppla, da ist was vergessen gegangen ;-) werde ich sofort korrigieren. 
Vorübergehend muss man dann halt die Datenbankeinstellungen direkt in 
der config.php ändern.

> 2. kann eine Vorgänger-Datenbank vom Rel 1.04 RC in die neue Datenbank
>    übernommen werden - oder irgendwie zumindestens die Artikel ,
> Lagerorte
>    usw

Das ist zwar schon eine relativ alte Version, sollte aber eigentlich 
möglich sein. Einfach unbedingt ein Backup der Datenbank anlegen. Wenns 
nicht klappt, könnte man versuchen zuerst mit Part-DB 0.2.2 die 
Datenbank auf eine neuere Version zu aktualisieren, und erst dann 0.3.0 
zu verwenden.

von Peter M. (pc-baerli)


Lesenswert?

Urban B. schrieb:
> Das ist zwar schon eine relativ alte Version, sollte aber eigentlich
> möglich sein. Einfach unbedingt ein Backup der Datenbank anlegen. Wenns
> nicht klappt, könnte man versuchen zuerst mit Part-DB 0.2.2 die
> Datenbank auf eine neuere Version zu aktualisieren, und erst dann 0.3.0
> zu verwenden.

Hat geklappt mit dem update der Datenbank auf 0.3.0 ....
Musste allerdings den Umweg über die Version 2.2 (2.1) machen ...

Das mit den Dateirechten hat sich jetzt auch geklärt ...
Irgendwie hat mir Filezilla diese Datei-Rechte "vermurkst" ...
... mit dem guten alten WS-FTP95 hats sofort auf Anhieb geklappt.

Besten Dank für die gute Unterstützung
Gruss Peter

von Peter M. (pc-baerli)


Lesenswert?

Funktionieren Ihr bei Euch die Links auf der Startseite (unten) ?
Könnt Ihr den "Titel der Seite:" in der Konfiguration ändern ?

Danke für Feedbacks
Peter

von Gelöscht (kami89)


Lesenswert?

Peter Müller schrieb:
> Funktionieren Ihr bei Euch die Links auf der Startseite (unten) ?
Nope, die URLs, die der Google Feed ausliefert sind ja gar keine gültige 
Adressen (bzw. die gültige Adresse ist in einem anderen XML-Eintrag). 
Ich schreibs mal in unsere ToDo Liste.

> Könnt Ihr den "Titel der Seite:" in der Konfiguration ändern ?
Nein, auch das geht nicht :-) Liegt daran, dass die entsprechende 
Einstellung in der zweiten Hälfte der config_defaults.php liegt, und 
damit nicht automatisch in der config.php abgelegt wird, das kann man 
nur manuell machen.

Allerdings frage ich mich, ob das überhaupt jemand braucht? Wenn man den 
Eintrag in der Konfigurationsseite entfernen würde, ginge es einfach 
nicht mehr übers Webinterface. Manuell ist es aber nach wie vor mäglich, 
den Titel per $manual_config in der config.php zu ändern:
1
$manual_config['page_title'] = 'Irgendwas';

von Dirk B. (garag)


Lesenswert?

Zum Testen habe ich mal part-db auf meinem Win7 Rechner zusammen mit 
einem WAMP System (UniServer) ausprobiert. Leider schlägt schon die 
Funktion zum Testen der Dateirechte an und meckert. Schnell hat sich 
gezeigt, dass anscheinend unter Windows die Verzeichnisse (z.B. data) 
keine "execute" Rechte haben. Nachdem ich einfach mal die "x" Flags bei 
den Verzeichnissen aus der Abfrage entfernt hatte, lief alles.

Gibt es dafür eine bessere Lösung ?

von Udo N. (weinbauer73)


Lesenswert?

Welche Version hast du installiert? Die Frage ist deshalb wichtig, weil 
wir ja weiter oben schon die Problematik der Rechtevergabe unter Windows 
für die Entwicklerversion angesprochen haben. Man müsste im Installer 
wohl noch das Betriebssystem berücksichtigen.

von Gelöscht (kami89)


Lesenswert?

Okay dann baue ich noch eine Konstante in start_session.php ein:
1
define('SERVER_OS_IS_WINDOWS', (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN'));

Wenn diese "true" ist, dann wird halt das executable Bit einfach 
ignoriert in der Überprüfung der Rechte.

Ausserdem gibts noch einen anderen Bug bei Windows, wegen den mühsamen 
Dateipfaden die aus Slashes und Backslashes bestehen. Es gibt ein paar 
str_replace() im Code, die nur mit Unix Pfaden zurechtkommen. Da muss 
ich mir noch was einfallen lassen...

von Udo N. (weinbauer73)


Lesenswert?

Nimm doch einfach DIRECTORY_SEPARATOR. Ist zwar eigentlich nicht 
wirklich sinnvoll nutzbar, da PHP mit dem "/" auch unter Windows zurecht 
kommt, aber bei einigen Funktionen muss das wohl genutzt werden.

http://stackoverflow.com/questions/6654157/how-to-get-a-platform-independent-directory-separator-in-php

von Dirk B. (garag)


Lesenswert?

Udo Neist schrieb:
> Welche Version hast du installiert?

Die letzte von gestern Abend aus SVN. Sollte also die r645 sein.

von Udo N. (weinbauer73)


Lesenswert?

Dirk B. schrieb:
> Die letzte von gestern Abend aus SVN. Sollte also die r645 sein.

Da haste gerade ne Version erwischt, die die Überprüfung von 
Datei-/Verzeichnisrechten enthält, aber auf Windows noch nicht getestet 
wurde. Aber Urban ist wohl dran, diese Probleme zu beheben.

von Gelöscht (kami89)


Lesenswert?

Also ich sehe momentan zwei Lösungswege, um das Pfad-Problem zu beheben:

1. Variante
Für alle Pfade immer direkt das korrekte Pfad-Trennzeichen (je nach 
Betriebssystem) verwenden. Damit dürften wir aber in unserem gesamten 
Code NIRGENDWO ein "/" oder "\" verwenden, sondern immer nur 
DIRECTORY_SEPARATOR! Ist mühsam, aber verhindert so komische Pfade, in 
denen Slashes und Backslashes gleichzeitig vorkommen. Für die Dateipfade 
in der Datenbank (z.B. für Footprint Bilder) könnten wir uns vielleicht 
darauf einigen, dass IMMER Slashes verwendet werden, also auch unter 
Windows. Wird Windows benutzt, müssten dann halt beim Abspeichern und 
beim Auslesen aus der Datenbank die Pfade entsprechend umgewandelt 
werden. Das stellt sicher, dass die Datenbank komplett 
Betriebssystemunabhängig ist, was natürlich anzustreben ist.
in den HTML bzw. TMPL Dateien könnte man dies mit einer 
Template-Variable für DIRECTORY_SEPARATOR machen, damit auch im HTML 
Code die richtigen Pfad-Trennzeichen verwendet werden können.

2. Variante
in unserem Code immer mit Slashes arbeiten (so wie bisher). Dadurch 
können bei Windows dann aber Pfade entstehen, die Slashes wie auch 
Backslashes enthalten. Sieht nicht schön aus, funktioniert aber weil 
Windows (bzw. Apache) das toleriert. Allerdings müsste man dann bei 
allen str_replace() Operationen immer aufpassen, dass es 
betriebssystemunabhängig funktioniert, was relativ mühsam sein kann.

von Udo N. (weinbauer73)


Lesenswert?

Ne Idee wäre, eine Funktion zu schreiben, die einen Pfad entsprechend 
korrigiert. Also Slash/Backslash-Kombinationen per RegEx umschreibt und 
auch die Pfade richtig setzt. Kann ja auch gleich auf is_dir() oder 
is_file() prüfen. Wenn das Ergebnis halt nicht existent ist, wird false 
zurückgeliefert, ansonsten den zum Betriebssystem passenden Pfad.

von Gelöscht (kami89)


Lesenswert?

Eigentlich könnten wir ja auch gleich alle Pfade IMMER mt Slashes 
schreiben und keine Backslashes mehr zulassen. Auch bei der Konstante 
"BASE".

Aufpassen muss man dann nur noch bei Pfaden, die vom System geliefert 
werden (z.B. realpath(), scandir(), ...). Die muss man dann sofort in 
Unix Pfade umschreiben.

von Gelöscht (kami89)


Lesenswert?

Urban B. schrieb:
> Eigentlich könnten wir ja auch gleich alle Pfade IMMER mt Slashes
> schreiben und keine Backslashes mehr zulassen. Auch bei der Konstante
> "BASE".

Ich habe das jetzt mal so eingebaut (r646). Ich hoffe, damit sind die 
Probleme mit Windows-Pfaden behoben. Mit XAMPP 1.8.1 auf Win7 konnte ich 
auf den ersten Blick jedenfalls keine Probleme mehr feststellen.

Übrigens habe ich die nächsten 3 Wochen sehr wahrscheinlich nur an den 
Wochenenden Internetzugang, also nicht wundern wenn ich nicht erreichbar 
bin ;-)

von Christian (Gast)


Lesenswert?

Beim RC1 wurden bei mir anfänglich die Kategorien links nicht 
aufgelistet die ich engetragen habe. Konnte es im File 
class.StructuralDBElement.php Zeile 379ff. zum Anzeigen bringen.
1
$javascript[] = $tree_name.'.add('. strval($element->get_id()+1) .','.
2
                                strval($element->get_parent_id()+1) .",'". str_replace('\'', '\\\'', $element->get_name() ) . "','".
3
                                $page .'?'. $parameter .'='. $element->get_id() . "','','". $target ."');";

Wieso Funktioniert es auf der Testdatenbank ohne str_replace?
1
$element->get_name()
ersetzt mit
1
str_replace('\'', '\\\'', $element->get_name() )

Danke für eine kleine Rückmeldung.

von Christian (Gast)


Lesenswert?

Hab in den Kategorien eine Kategorie MOSFET's gennant. Dieses Zeichen ' 
darf nicht geschrieben werden. Dann läufts wenn der Name MOSFET 
gebraucht wird.

von Gelöscht (kami89)


Lesenswert?

@Christian
Jup da fehlte noch was, hab ein htmlentities() und ein addslashes() 
eingebaut (r650), damit sollten jetzt alle Sonderzeichen korrekt 
dargestellt werden. Ist dann in der RC2 mit drin.

mfg

von Juergen F (Gast)


Lesenswert?

Ich habe die ganze Zeit Version 0.2.2 verwendet. Jetzt wollte ich mal 
die neue Version 3 testen, aber ich bekomme das mit der Datenbank nicht 
hin. Das Autoupdate der Datenbank scheitert immer von V12 nach V13.

Von V11 auf V12 scheint es problemlos zu klappen.

Beim Update von V12 --> V13 bekomme ich den folgenden Fehler

Fehlermeldung: SQLSTATE[01000]: Warning: 1265 Data truncated for column 
'description' at row 1

Manchmal bleibt er auch schon hier hängen:

Schritt: UPDATE `footprints` SET filename = REPLACE(filename, 'ä', 
'ä')...FEHLER!
Fehlermeldung: SQLSTATE[42S22]: Column not found: 1054 Unknown column 
'filename' in 'field list'

Ich spiele dann immer den SQL Dump der Version 0.2.2 ein.

Die Version 0.2.2 funktioniert auch problemlos.

Die Dateien aus dem Archiv habe ich in einen komplett lehren Ordner des 
Webservers entpackt, nur die alte config.php habe ich eingefügt.

Hat jemand eine Idee?

Danke

von Gelöscht (kami89)


Lesenswert?

OK also ich habe mal eine kleine Änderung in der class.Database.php 
eingefügt, ersetze diese Datei mal mit dieser hier: 
https://part-db.googlecode.com/svn/trunk/lib/class.Database.php

Es gibt wohl noch ein Problem wenn man nach einem Update-Fehler manuell 
wieder eine ältere Datenbank einspielt. Denn das neu einspielen kriegt 
Part-DB grundsätzlich ja nicht mit und macht dann beim nächsten 
Update-Versuch wieder dort weiter, wo beim letzten Mal der Fehler 
auftrat. Das ist natürlich falsch, das Update müsste dann wieder von 
Vorne beginnen.

Vermutlich kommt daher dann das Problem mit der Spalte 
footprints.filename.

Wenn du die Datenbank wieder auf den älteren Stand zurücksetzt, müsstest 
du in der config.php die folgenden zwei Werte auf "0" zurücksetzen:
1
$config['db']['update_error']['version'] = 0;
2
$config['db']['update_error']['next_step'] = 0;

Ich muss mal schauen ob man das noch irgendwie verbessern kann, so dass 
Part-DB merkt dass ein Backup eingespielt wurde und dann entsprechend 
das Update wieder von Vorne beginnt. Ich denke das sollte möglich 
sein...

von Juergen F (Gast)


Lesenswert?

Ich fürchte fast dass ich da noch mehr Probleme bekommen werde.

Nach der Aufforderung eine Zeitzone/Sprache erhalte ich die Meldung:

Die gewählte Sprache "de_DE.UTF-8" wird vom Server nicht unterstützt!
Bitte installieren Sie diese Sprache oder wählen Sie eine andere.

Möglicherweiße liegt das daran dass es auf einem Windowssystem 
installiert ist?

Danke

von Gelöscht (kami89)


Lesenswert?

Juergen F schrieb:
> Die gewählte Sprache "de_DE.UTF-8" wird vom Server nicht unterstützt!
> Bitte installieren Sie diese Sprache oder wählen Sie eine andere.

Dieses Problem (bei Windows Servern) wurde bereits gemeldet und sollte 
inzwischen behoben sein. Am besten wartest du noch auf die RC2, da ist 
dieser Bugfix dann drin.

mfg

von Gerald *. (pyromane)


Lesenswert?

Kleiner Verbesserungsvorschlag:
Die Vorschaubilder der Artikel werden derzeit teilweise sehr stark 
verzogen, da immer nur in eine Richtung runter skaliert wird.
Könnte man nicht Höhe und Breite zusammen so lange verringern bis es die 
entsprechenden Größe haben?


Ich hätte noch eine Idee für die zukünftigen Versionen:
Die Artikel noch um eine Gewichtsfeld zu erweitern. Sowie bei den 
Lagerorten ein max. zulässiges Gesamtgewicht definieren. Dabei lässt 
sich pro Fach ein Gewicht definieren, sowie den übergeordneten Regal bzw 
Sortimentkasten ein Gesamtgewicht eingeben.

Grüße Gerald

von Udo N. (weinbauer73)


Lesenswert?

Dazu müsste ein max-width oder max-height im entsprechenden Thema schon 
reichen. Bei großen Bildern macht man das jedoch nicht, da skaliert man 
die Bilder schon vorher, um die Datenmenge zu verringern. Besser wäre es 
aber, wenn die Bilder im Vektor(SVG)-Format wären, aber leider können 
nur wenige Browser sowas direkt verarbeiten.

Wenn das gewünscht wird, kann ich eine passende Funktion besteuern.

von Gelöscht (kami89)


Lesenswert?

Gerald *. schrieb:
> Die Vorschaubilder der Artikel werden derzeit teilweise sehr stark
> verzogen, da immer nur in eine Richtung runter skaliert wird.

Stimmt, das wollte ich eigentlich auch schon lange mal verbessern. Ich 
habe jetzt die CSS-Datei entsprechend angepasst, wird nachher noch ins 
SVN hochgeladen ist dann in der RC2 drin.

Für grosse Bilder sollen später mal automatisch Thumbnails verwendet 
werden, da sonst die Performance stark leiden kann. Aber das muss noch 
ein bisschen warten...

> Die Artikel noch um eine Gewichtsfeld zu erweitern.

Ich füge das mal unserer ToDo-Liste hinzu.

von Peter M. (pc-baerli)


Lesenswert?

Hallo Zusammen,

Ich bin echt begeistert von der Lager-Verwaltung Datenbank und habe 
schon fleissig -> Artikel in die Datenbank abgelegt.

Da ich teils ein bisschen grössere Artikel einlagere, wie Kompressoren, 
habe ich nun das Problem , dass sich zum Beispiel einer in der 
Lagerhalle, einer auf der Baustelle und einer in Reparatur befindet ...

Aktuell habe ich mir denselben Artikel 3x erstellt um ihn an 3 
verschiedenen Orten "lagern" zu können ... Die Lagerbewegungen habe ich 
in die Notizen geschrieben. Was natürlich nicht so tolle ist.

Frage: Habt Ihr mir eine Idee wie ich das besser handhaben könnte ...

Oder gibt es die Möglichkeit mehrere Lagerorte für ein und denselben 
Artikel in dieses Programm zu implementieren ?

Gruss Peter

von Gelöscht (kami89)


Lesenswert?

Hallo Peter,

Momentan gibt es keine "saubere" Variante, um den selben Artikel an 
mehreren Orten gleichzeitig zu lagern. In unserer ToDo-Liste ist aber 
schon ein Punkt aufgeführt, der diese Thematik anspricht. Das kann aber 
noch dauern bis das eingebaut wird.

So eine Funktion ist aber auch nicht ganz trivial. Es gibt mehrere 
Probleme, die mit dem Einbauen dieser Funktion auftreten werden. Diese 
beginnen schon bei den "+" und "-" Buttons in den Artikellisten. Aus 
welchem Lagerort sollen die Artikel nun abgebucht/eingebucht werden wenn 
so ein Button geklickt wird? Dasselbe beim Abfassen einer ganzen 
Baugruppe, welche Artikel sollen von welchem Lagerort abgebucht werden? 
Fragen über Fragen... ;-)

Momentan muss man halt irgendwie improvisieren wenn man den selben 
Artikel an verschiedenen Orten lagert. Sei es mit Kommentaren, oder mit 
dem Erstellen von mehreren, gleichnamigen Artikeln (für jeden Lagerort 
einen).

mfg

von Christian R. (holle)


Lesenswert?

Bei der "Version 0.3.0 RC1 (unstable)" hat sich ein Vertipper 
eingeschlichen. Bei "Bearbeiten - Footprints" steht im Hinweis-Text:

"Dateinaben" statt "Dateinamen".

Bitte nicht gleich steinigen, dass ich hier solche Banalitäten poste, 
aber ich weiß nicht wo ich das sonst "melden" könnte.

von Gelöscht (kami89)


Lesenswert?

Christian R. schrieb:
> "Dateinaben" statt "Dateinamen".

Danke, wird korrigiert.

Christian R. schrieb:
> Bitte nicht gleich steinigen, dass ich hier solche Banalitäten poste,
> aber ich weiß nicht wo ich das sonst "melden" könnte.

Passt schon :-)

von Christian R. (holle)


Lesenswert?

Hmmm, irgendwie bekomme ich es nicht hin den Link zu meinem Datenblatt 
anzugeben.
Ich kann nur eine Datei auswählen, welche ich hochladen will, aber ich 
kann kein Link eintragen.

Und dann ist mir noch aufgefallen dass der Titel ("Part-DB 0.3.0") nicht 
geändert werden kann. Man kann zwar einen Titel eingeben, dieser wird 
jedoch ignoriert.

von Gelöscht (kami89)


Lesenswert?

Christian R. schrieb:
> Ich kann nur eine Datei auswählen, welche ich hochladen will, aber ich
> kann kein Link eintragen.

Stimmt...Wird korrigiert.

Christian R. schrieb:
> Und dann ist mir noch aufgefallen dass der Titel ("Part-DB 0.3.0") nicht
> geändert werden kann. Man kann zwar einen Titel eingeben, dieser wird
> jedoch ignoriert.

Ist bereits behoben, kommt dann in die 0.3.0 RC2.

von Peter K. (peterka2000)


Lesenswert?

Ich habe gerade PartDB installiert, jetzt zeigt der mir an
"Datenbank-Update notwendig!"
Was will der von mir bzw. was muss ich machen?

von Christian R. (holle)


Lesenswert?

Bei "Verwaltung/Tools" sollte unter "Konfiguration - Datenbank" ein 
Button "Jetzt Datenbank Updaten" vorhanden sein. Da drauf klicken ;-)

Mal was anderes...
Wenn ich eine Datei (Datenblatt) hoch laden möchte bekomme ich die 
Fehlermeldung "Es gab ein Fehler beim Hochladen der Datei!". Ich nehme 
an dass der Ordner nicht genügend Rechte hat. Welchen Ordner muss ich 
denn welche Rechte (CHMOD) geben?

von Gelöscht (kami89)


Lesenswert?

Christian R. schrieb:
> Wenn ich eine Datei (Datenblatt) hoch laden möchte bekomme ich die
> Fehlermeldung "Es gab ein Fehler beim Hochladen der Datei!". Ich nehme
> an dass der Ordner nicht genügend Rechte hat. Welchen Ordner muss ich
> denn welche Rechte (CHMOD) geben?

Da muss ich noch eine gescheitere Fehlermeldung einbauen. Es gibt 
grundsätzlich zwei mögliche Fehlerquellen:
- fehlende Schreibrechte im Ordner data/media/
- maximale Dateigrösse für Uploads überschritten (php.ini)

Für letzteren Punkt siehe auch "PHP konfigurieren": 
http://www.partdb.grautier.com/svn/documentation/dokuwiki/doku.php?id=anforderungen

von Peter K. (peterka2000)


Lesenswert?

Christian R. schrieb:
> Bei "Verwaltung/Tools" sollte unter "Konfiguration - Datenbank" ein
> Button "Jetzt Datenbank Updaten" vorhanden sein. Da drauf klicken ;-)
Bei Verwaltunng/Tools ist garnichts. Wer noch mal gucken möchte: 
http://peter-partdb.comze.com , Benutzer: gast, Passwort: gast

von Gelöscht (kami89)


Lesenswert?

Peter K. schrieb:
> Bei Verwaltunng/Tools ist garnichts. Wer noch mal gucken möchte:
> http://peter-partdb.comze.com , Benutzer: gast, Passwort: gast

Auf deinem Server läuft PHP 5.2.17, benötigt wird aber mindestens 5.3.0. 
Du musst also entweder erstmal deine PHP Version aktualisieren oder 
einen anderen Host suchen.

Bist du sicher dass du Part-DB auf einem öffentlichen Server 
installieren möchtest? In den meisten Fällen reicht ein Server im 
eigenen LAN. Siehe Doku: 
http://www.partdb.grautier.com/svn/documentation/dokuwiki/index.php

von Peter K. (Gast)


Lesenswert?

Das ganze ist eigentlich Passwortgeschützt durch htaccess, ich habs 
gerade nur mal rausgehauen. Kann man das mit den PHP nicht irgendwie 
umgehen, mein Hoster will nicht updaten. Villeicht versuch ichs mal bei 
Kilu.
Ich will das auf einen Hoster packen, weil mein Server-PC nicht immer an 
ist. Ich könnte den Server zwar auf den Werkstatt-PC laufen lassen, aber 
wenn ich dann nur mal schnell auf den Laptop gucken will, ob ich 
genügend xxx hab ist es blöd, ihn jedesmall anzuschalten

PS: Hab gerade vergessen mich anzumelden

von Christian R. (holle)


Lesenswert?

Für genau diese Fälle habe ich ja myparts.info registriert. Leider ist 
das bisher noch nicht nutzbar.

Nochmal zur Erinnerung, wie das gedacht ist (wer das noch weiß kann den 
folgenden Text einfach überspringen) :

-Eine Große Datenbank, in der die Bauteile angelegt sind (samt Preise 
diverser Verkäufer, Links zu Datenblättern, Footprints, usw.)
-Jeder User bekommt eigene Lagerplätze

Nun hätte jeder User die Möglichkeit kostenlos (ohne extra einen eigenen 
Webspace mieten zu müssen) seine eigenen Lagerplätze anzulegen und 
braucht nur noch die Bauteile auswählen und die Stückzahl eintragen.
Man braucht keine Footprints raus suchen (sind schon beim Bauteil 
verknüpft), keine Datenblätter raus suchen (sind ebenfalls schon 
Verknüpft), die Preise sind auch schon eingetragen, usw.
Man kann also sehr schnell sein eigenes Lager eintragen.

Wenn ein User nun ein Bauteil hat, welches noch nicht existiert müsste 
er es zwar genauso anlegen wie derzeit auch, aber das muss er halt nur 
für dieses eine Bauteil und nicht für alle.
Wenn ich z.B. ein 74ALS30 anlege, dann muss ich alle Daten (Footprints, 
Datenblatt, Preise) damit verknüpfen. Wenn nun ein anderer User das 
gleiche Bauteil benötigt, dann erspart er sich die Arbeit, da das 
Bauteil schon vorhanden ist. Einfach auswählen, einem (eigenen) 
Lagerplatz zuordnen und die Stückzahl eintragen. Fertig.

Die Vorteile:
-Viel weniger Arbeit beim Anlegen des eigenen Lagers
-Aktuelle Daten (wenn sich der Preis bei Reichelt ändert profitieren 
andere User direkt von der Aktualisierung des anderen Users)
-Relativ kleine Datenmengen auf dem Server. Ein 
Datenblatt/Footprint/usw. muss nur einmal vorhanden sein, wodurch die 
Datenmenge von 1000 User nur unerheblich größer ist als von einem User 
(sofern der eine User über ein riesiges Bauteilspektrum verfügt).

Der Nachteil:
-Ein User kann Daten zerstören, welche von einem anderen User mit 
genutzt werden (z.B. den Preis bei Conrad & Co. verfälschen).

Der Nachteil ist gravierend und muss unbedingt vermieden werden.
Dazu fällt mir die folgende Möglichkeit ein:

Wenn ein User ein neues Bauteil anlegt oder einen Preis ändert dann 
müsste das "lokal" sein, also nur für ihn selber. Gleichzeitig müsste 
der Eintrag in einer Liste auftauchen, welche von Moderatoren "geprüft" 
wird. Sobald die Daten geprüft wurden müssten diese von lokal auf global 
geändert werden.
Beispiel: Ich ändere den Preis eines Bauteils. Dieser neue Preis 
erscheint nun sofort bei mir, aber alle anderen sehen noch den alten 
Preis. Meine Preisänderung taucht nun in einer Liste auf. Sobald ein 
Moderator diese Änderung bestätigt wird der Preis in die "normale große 
Datenbank" übernommen und ist ab nun für alle User sichtbar.
Diese Methode benötigt freiwillige Moderatoren.

Um das zu realisieren fehlt Part-DB folgendes:
-Eine Benutzerverwaltung (nötig, da viele User eine gemeinsame Datenbank 
nutzen)
-Eine Funktion welche neben den globalen Daten auch lokale Daten nutzt, 
welche dann nach einer Prüfung global werden


Was irgendwann vielleicht auch mal interessant sein könnte 
(Zukunftsmusik):
Wenn man ein Bauteil braucht welches bei normalen Händlern nicht mehr zu 
bekommen ist, dann wäre "Suche Bauteil"-Funktion nützlich. Dies könnte 
man so realisieren dass man dieses Bauteil als "gesucht" markiert (am 
besten mit einem Preis dem man dafür bietet) und andere User (welches 
dieses Bauteil besitzen) eine Benachrichtigung bekommen. Die 
Benachrichtigung kann entweder per Mail/PN erfolgen, oder ganz dezent 
indem irgendwo ein Symbol erscheint wenn jemand ein Bauteil sucht was 
man selber im Bestand hat. Per Klick auf das Symbol könnte man dann im 
PopUp-Fenster genaueres erfahren. Auf dieser Weise könnte so mancher 
noch zu einem Bauteil kommen, welches er sonst nirgendwo anders bekommen 
kann und dementsprechend kann so mancher User alte Restbestände die 
irgendwann in der Tonne landen würden sogar noch verkaufen/verschenken.

So, genug gespamt ;-)

von Gelöscht (kami89)


Lesenswert?

Peter K. schrieb:
> Kann man das mit den PHP nicht irgendwie umgehen

Ich weiss jetzt grad nicht auswendig welche für Part-DB relevanten 
Neuerungen nach PHP 5.2.17 kamen, aber ich glaube es sind schon einige. 
Es hat schon einen Grund, warum wir PHP 5.3 voraussetzen ;-)

Um herauszufinden, was genau die Probleme verursacht bei PHP 5.2.17 
könntest du mal das Debugging aktivieren 
(http://peter-partdb.comze.com/partdb/system_debug.php) und schauen ob 
irgendwelche gescheiten Fehlermeldungen auftreten beim Aufrufen der 
Startseite.

> mein Hoster will nicht updaten.

Das kann man von einem free Hoster ja auch nicht erwarten ;-) Ich 
persönlich bin der Meinung, wer Webspace braucht soll ihn auch bezahlen. 
Man bekommt für sehr wenig Geld gescheite Server mit aktueller Software 
(PHP, MySQL, ...). Die sind dann auch zuverlässiger (nur so nebenbei: 
dein Server meldete vorher mal "Server überlastet") und es gibt einen 
kompetenten Support, häufig sogar Sonntags (eigene Erfahrung) :-)

mfg

von Peter K. (peterka2000)


Lesenswert?

Auf der Hauptseite kommt jetzt:
Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM, expecting 
T_VARIABLE in /home/aXXXXXXX/public_html/partdb/lib/class.DBElement.php 
on line 250

von Christoph (Gast)


Lesenswert?

Es gibt im Grunde mehrere Wege um den Multiuser Support ins naechste 
DB-Layout einzubauen:

. Man aendert das Schema fuer 'part' und fuegt ein zusaetzliches Feld 
owner hinzu. Ist fuer Workgroups nicht geeignet
. Fuer ein modernes Usermanagement mit ACLs braucht es einfach fuer die 
'parts' eine zusaetzliche Table 'acl_parts'. Dort traegt man den 
Fremdschluessel fuer das Part auf das sich der ACL-Eintrag bezieht, den 
User sowie Rechte (Lesen,Schreiben etc.) ein. Fertig!

Loesung Zwei hat den Vorteil, dass man das parts Layout nicht antasten 
muss. Wenn man mittels SELECT eine Kategorie listet, dann kann man den 
Rechtecheck z.B. mittels Join an die ACL Tabelle loesen.

Das ganze koennte man ja auch als vorbereitende Massnahme machen, ohne 
den Code dafuer schon haben. Die Felder sind dann auf jeden Fall da.

von Christian R. (holle)


Lesenswert?

Klingt als wenn sich der Aufwand in Grenzen halten würde.
Die Daten für myparts.info habe ich ja schon an manche Entwickler weiter 
gegeben. Wenn die "untergegangen" sind kann ich die gerne noch mal 
zusenden.

von Christoph (Gast)


Lesenswert?

@Christian R.:
Vor allem wuerde Multiuser-Support dem Projekt einen gewaltigen Schub 
geben. Schliesslich hat nicht jeder potentielle User das Know How 
und/oder die Resourcen, die Installation vorzunehmen.

Wichtig waere auch weitere Sprachversion 'English'. Das Aufwand bei 
part-db ist aesserst niedrig verglichen mit vielen anderen Programmen. 
Oft sind es nur einzelne Woerter, die man in mehreren Sprachen vorhalten 
muss.

Diese zwei Schritte wuerden den Nutzerkreis potenzieren! Und damit auch 
neue Entwickler auf dieses Projekt aufmerksam machen.

von Gelöscht (kami89)


Lesenswert?

Peter K. schrieb:
> Auf der Hauptseite kommt jetzt:
> Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM, expecting
> T_VARIABLE in /home/aXXXXXXX/public_html/partdb/lib/class.DBElement.php
> on line 250

Genau das habe ich befürchtet. Vergiss deinen aktuellen Hoster, mit PHP 
5.2 läuft Part-DB nicht.

@Christoph & Christian
In der Softwareentwicklung hört sich eine Änderung schnell mal "einfach" 
an. Geht es dann an die Umsetzung, merkt man dann aber meistens dass es 
eben doch "etwas" umfangreicher ist ;-)

Seit Part-DB 0.2.2 haben wir ja auch "nur" auf Templates und OOP 
umgestellt. Hat aber trotzdem über ein halbes Jahr und rund 10'000 
Codezeilen gedauert ;-)

Eine Benutzerverwaltung, die schlussendlich für Firmen, aber auch für 
myparts.info geeignet ist, wird sehr aufwändig. Für Firmen ist wichtig, 
dass man jedem Benutzer verschiedene Rechte zuweisen kann, damit z.B. 
der Monteur die Preise nicht sehen kann. Ausserdem greifen dort alle 
Benutzer auf den selben Lagerbestand zu. Für myparts.info sind ganz 
andere Sachen wichtig. Jeder Benutzer braucht seinen eigenen 
Lagerbestand und es braucht ein Moderatoren-Feature. Dafür braucht man 
keine Möglichkeit, einem Benutzer das Leserecht für Preise zu entziehen.

von Christoph (Gast)


Lesenswert?

Urban B. schrieb:
> @Christoph & Christian
> In der Softwareentwicklung hört sich eine Änderung schnell mal "einfach"
> an. Geht es dann an die Umsetzung, merkt man dann aber meistens dass es
> eben doch "etwas" umfangreicher ist ;-)
Ist schon klar, dass das etliche Aenderungen am Code erfordert und nicht 
mal so schnell gecoded ist. Hab auch Erfahrung mit Softwareentwicklung 
und den Requests der User :-)

Zum Thema Rechtevergabe:
IMHO sollte auch es nicht der Zweck der part-db sein, mit 
professionellen ERP Systemen zu konkurrieren ;-) Also Spalten ausblenden 
waere wohl mit Sicherheit Overkill.

Die Lokalisierung ist aber wohl einfacher als die Rechtevergabe. Und 
aktiviert mit Sicherheit neues Entwicklerpotential!
Es gibt ja nicht so viele Strings, die der User im Browser am Ende 
sieht. Und statt "Neues Teil in dieser Kategorie" koennte man im Sinne 
von

i18n("catview_invoke_newpart")

eine Funktion aufrufen. Dann braucht es noch eine Tabelle fuer die 
jeweilige Sprache und fertich.

Kinds regards

von Peter K. (peterka2000)


Lesenswert?

Ich habs jetzt bei Kilu installiert. Es zeigt mir aber nichts an, auch 
nicht bei Verwaltung/Tools
http://peter-partdb.kilu.de/partdb/

von Gelöscht (kami89)


Lesenswert?

Christoph schrieb:
> IMHO sollte auch es nicht der Zweck der part-db sein, mit
> professionellen ERP Systemen zu konkurrieren ;-)

Also ich habe selbst auch schon ein paar ERP Systeme angeschaut, und 
musste feststellen, dass diese für einen kleinen Betrieb einfach masslos 
überdimensioniert und dadurch viel zu kompliziert sind. Ich konnte kein 
(günstiges oder freies) einfaches Lagerverwaltungssystem finden, das für 
kleinere Betriebe wirklich geeignet ist. Ich finde, hier könnte Part-DB 
eine Lücke schliessen. Mit den professionellen ERP-Systemen soll Part-DB 
natürlich nicht konkurrenzieren.

Aber erstens ist die Benutzerverwaltung derzeit grad noch kein Thema, 
und zweitens sollten wir uns dazu auch mal die Meinung von K.J. anhören, 
er ist schliesslich der Chef hier :-)

Bezüglich Lokalisierung: Das sehe ich ähnlich. Früher oder später 
sollten zusätzliche Sprachen verfügbar sein. Aber momentan haben andere 
Sachen eine höhere Priorität...

Peter K. schrieb:
> Ich habs jetzt bei Kilu installiert. Es zeigt mir aber nichts an, auch
> nicht bei Verwaltung/Tools
> http://peter-partdb.kilu.de/partdb/

Da scheint JavaScript einfach nicht zu laufen. Sind die Dateirechte für 
alle Dateien im "javascript" Ordner korrekt?

Irgendwas stimmt aber sowieso nicht bei deiner Installation, weil die 
Umlaute nicht korrekt dargestellt werden. Wie lädst du die Dateien auf 
den Webserver hoch? Es scheint als würden die PHP Dateien nicht als 
UTF-8 interpretiert werden.

mfg

von Udo N. (weinbauer73)


Lesenswert?

Normalerweise erkennt ein FTP-Client automatisch ob Text- oder 
Binarytransfermode genutzt werden soll. Wenn man unsicher ist, dann 
nimmt man Binary für den gesamten Upload.

Grüße
Udo

von Christian R. (holle)


Lesenswert?

Bei der Version "0.3.0 RC1 (unstable)" ist die Sortierung etwas 
"merkwürdig"

Hier ist mal ein Screenshot:
http://abload.de/img/sortierungtsain.png

Hier ist ein Screenshot von meiner alten Version:
http://abload.de/img/sortierung6xxsh.png

Ich erkenne nicht nach was da sortiert wird.


Edit: Ich hatte aus Versehen den Screenshot meiner alten Version statt 
der 0.3.0 hochgeladen ...habe ich hiermit korrigiert

von Peter K. (Gast)


Lesenswert?

das Javascript Verzeichnis ist jetzt auf 777

von Peter M. (pc-baerli)


Lesenswert?

Peter K. schrieb:
> Ich habs jetzt bei Kilu installiert. Es zeigt mir aber nichts an, auch
> nicht bei Verwaltung/Tools
> http://peter-partdb.kilu.de/partdb/

Ja, so hat es bei mir auch ausgesehen wie ich es mit Filezilla auf 
meinen Webserver hochgeladen hatte ... mit dem ws-ftp95 hat es dann auf 
Anhieb geklappt...

Versuch's mal einem anderen File-uploader

von Christoph (Gast)


Lesenswert?

Peter K. schrieb:
> das Javascript Verzeichnis ist jetzt auf 777
das ist unklug. da koennen schlimme dinge passieren.

ausserdem hast Du ein Problem mit den Umlauten, da ist wahrscheinlich 
der falsche Zeichensatz eingestellt.

von Peter K. (peterka2000)


Lesenswert?

Auf was soll ich dann Stellen? Kann man den Zeichensatz Nachher noch 
ändern

von Christoph (Gast)


Lesenswert?

Peter K. schrieb:
> Auf was soll ich dann Stellen? Kann man den Zeichensatz Nachher
> noch
> ändern
Der Webserver liefert als Encoding iso-8859-1 aus, aber die Part-DB ist 
in utf-8. Dann wird aus den Umlauten, dass was man auf der Startseite 
sieht.

Wie man das jetzt umstellt, das koennen die Experten besser beantworten. 
Ist unter Umstaenden eine Sache der Webserver-Konfig, hatte ich mal nach 
einer Neuinstallation mit Apache.

von Christian R. (holle)


Lesenswert?

Noch eine Sache zur Version "0.3.0 RC1 (unstable)".

Wenn ich einen Preis eingebe wird nur der Punkt akzeptiert, aber ich 
kann kein Komma eingeben (obwohl der Preis nachher per Komma angezeigt 
wird).

von Christian R. (holle)


Lesenswert?

Noch eine Frage:
Was muss ich nochmal machen um den Bestand ohne Mindestbestand angezeigt 
zu bekommen (siehe Vergleich der beiden Screenshots ein paar Beiträge 
weiter oben)?

von Gelöscht (kami89)


Lesenswert?

Christian R. schrieb:
> Bei der Version "0.3.0 RC1 (unstable)" ist die Sortierung etwas
> "merkwürdig"

Uups, ich dachte das hätte ich behoben (habe nämlich vor langer Zeit 
auch schon bemerkt dass falsch sortiert wird) schäm

Peter K. schrieb:
> Auf was soll ich dann Stellen?

Beim Verzeichnis "javascript" sollte 555 für das Verzeichnis, und 444 
für die Dateien passen. Steht alles in der Doku: 
http://www.partdb.grautier.com/svn/documentation/dokuwiki/doku.php?id=installation

> Kann man den Zeichensatz Nachher noch ändern

Der Zeichensatz der PHP Dateien muss man nicht ändern. Alle Dateien von 
uns sind UTF-8 codiert und sollen auch genau so verwendet werden. Man 
muss einfach beim Hochladen aufpassen, dass die Dateien nicht mit einem 
falschen Zeichensatz interpretiert und dann irgendwie umgewandelt 
werden. Wie Udo schon erwähnte, sollte man hier einfach "binary" 
verwenden wenn man sich nicht sicher ist. In Filezilla gibts dazu die 
Einstellung "Standard-Transfertyp: Binär" unter "Übertragungen -> 
Dateitypen".

Christian R. schrieb:
> Wenn ich einen Preis eingebe wird nur der Punkt akzeptiert, aber ich
> kann kein Komma eingeben (obwohl der Preis nachher per Komma angezeigt
> wird).

Das Komma wird halt nicht immer gerne als Dezimalpunkt gesehen, weil es 
im englischsprachingen Raum als Tausendertrenner verwendet wird wenn ich 
micht jetzt nicht irre. Der Punkt hingegen wird eigentlich immer als 
Dezimalpunkt interpretiert, was zu keinen Verwechslungen führen kann. 
Deshalb wird halt in Part-DB das Komma nicht angenommen...

Christian R. schrieb:
> Was muss ich nochmal machen um den Bestand ohne Mindestbestand angezeigt
> zu bekommen

In der config.php diese Zeile einfügen:
1
$manual_config['table']['category_parts']['columns'] = 'hover_picture;name;description;instock;footprint;storelocation;datasheets;attachements;button_decrement;button_increment';

von Christoph (Gast)


Lesenswert?

Urban B. schrieb:
>> Kann man den Zeichensatz Nachher noch ändern
>
> Der Zeichensatz der PHP Dateien muss man nicht ändern. Alle Dateien von
> uns sind UTF-8 codiert und sollen auch genau so verwendet werden. Man
> muss einfach beim Hochladen aufpassen, dass die Dateien nicht mit einem
> falschen Zeichensatz interpretiert und dann irgendwie umgewandelt
> werden. Wie Udo schon erwähnte, sollte man hier einfach "binary"
> verwenden wenn man sich nicht sicher ist. In Filezilla gibts dazu die
> Einstellung "Standard-Transfertyp: Binär" unter "Übertragungen ->
> Dateitypen".

Das ist so nicht ganz korrekt. Sein Webserver (Apache) liefert als 
Content Type
"Content-Type: text/html; charset=iso-8859-1"

das sorgt fuer die defekten Zeichen. Selbst dann wenn die Dateien 
korrekt hochgeladen wurden. Unicode Zeichen sind schließlich Multibyte 
und iso-8859 sind SingleByte

Kann man aber umstellen, z.B. mit AddDefaultCharset und Co., manches 
geht auch in .htaccess Dateien.

von Gelöscht (kami89)


Lesenswert?

Christoph schrieb:
> Das ist so nicht ganz korrekt. Sein Webserver (Apache) liefert als
> Content Type
> "Content-Type: text/html; charset=iso-8859-1"

Ach so, das habe ich gar nicht gesehen. Aber dazu steht doch die Zeile
1
<meta http-equiv="content-type" content="text/html; charset=utf-8">
im Header jeder (durch PHP generierten) HTML-Datei, die dann dem Client 
gesendet wird? Oder habe ich da etwas falsch verstanden?

Christoph schrieb:
> Kann man aber umstellen, z.B. mit AddDefaultCharset und Co., manches
> geht auch in .htaccess Dateien.

Das habe ich grad unseren .htaccess Dateien noch hinzugefügt. Nach etwas 
Recherche im Internet bin ich aber verwirrt was das "AddDefaultCharset" 
genau bewirkt. Grundsätzlich teilt es doch dem Client mit, wie eine 
Datei codiert ist, die dem Benutzer geschickt wird. Bei HTML ist das 
aber doch irgendwie nicht relevant wenn im Header der Zeichensatz 
angegeben ist?!

Was ich auch noch nicht in Erfahrung bringen konnte:
Wie interpretiert Apache bzw. der PHP Interpreter eigentlich eine *.php 
Datei, also welcher Zeichensatz wird verwendet? Der Interpreter muss ja 
wissen, wie die Datei codiert ist, und in der Datei ist dies nicht 
direkt ersichtlich. Ermittelt der Interpreter den Zeichensatz einfach 
anhand des Inhaltes, also z.B. am Vorhandensein von gängigen 
Multibyte-Zeichen?

von Christoph (Gast)


Lesenswert?

Urban B. schrieb:
>> Das ist so nicht ganz korrekt. Sein Webserver (Apache) liefert als
>> Content Type
>> "Content-Type: text/html; charset=iso-8859-1"
>
> Ach so, das habe ich gar nicht gesehen. Aber dazu steht doch die
> Zeile<meta http-equiv="content-type" content="text/html; charset=utf-8">
> im Header jeder (durch PHP generierten) HTML-Datei, die dann dem Client
> gesendet wird? Oder habe ich da etwas falsch verstanden?
Aber das was der Webserver von sich aus sendet, kommt zuerst. Dannach 
erst die Ausgabe des Skriptes. Mein Firefox hatte bei der Seite von 
Peter K. iso-8859-1 aktiv. Kann man unter "Page Info" ansehen. 
Vielleicht gilt einfach das erste, was der Browser sieht. Oder noch 
schlimmer, jeder Browser macht es anders ==> Chaos.

>
> Christoph schrieb:
>> Kann man aber umstellen, z.B. mit AddDefaultCharset und Co., manches
>> geht auch in .htaccess Dateien.
>
> Das habe ich grad unseren .htaccess Dateien noch hinzugefügt. Nach etwas
> Recherche im Internet bin ich aber verwirrt was das "AddDefaultCharset"
> genau bewirkt.
In die .htaccess wuerde ich das nicht von Haus aus reinschreiben. Denn 
bei manchen Direktiven kommt es zu einem 500 Internal Server Error, wenn 
man diese in der zentralen Apache Config (global oder fuer den Virtual 
Hosts) fuer die Verwendung in .htaccess geblockt hat.

> Grundsätzlich teilt es doch dem Client mit, wie eine
> Datei codiert ist, die dem Benutzer geschickt wird. Bei HTML ist das
> aber doch irgendwie nicht relevant wenn im Header der Zeichensatz
> angegeben ist?!
s.o.

>
> Was ich auch noch nicht in Erfahrung bringen konnte:
> Wie interpretiert Apache bzw. der PHP Interpreter eigentlich eine *.php
> Datei, also welcher Zeichensatz wird verwendet? Der Interpreter muss ja
> wissen, wie die Datei codiert ist, und in der Datei ist dies nicht
> direkt ersichtlich. Ermittelt der Interpreter den Zeichensatz einfach
> anhand des Inhaltes, also z.B. am Vorhandensein von gängigen
> Multibyte-Zeichen?
Gute Frage. In Variablennamen duerfen diese Zeichen ja nicht vorkommen, 
nur in Strings. Und die interpretiert ja erst der Browser. Unklar ist 
was bei Stringbearbeitung bearbeitung, da muss php dann doch wissen dass 
es UTF-8 ist.....

von Gelöscht (kami89)


Lesenswert?

mmh jedesmal wenn ich denke, jetzt habe ich das mit den Zeichensätzen 
richtig begriffen, werde ich wieder eines besseren belehrt, das fängt 
langsam an zu nerven ;-)

OK nach einem kurzen Test scheint die Zeichensatz-Angabe im HTML-Header 
tatsächlich wirkungslos, wenn ich im PHP Skript ganz am Anfang den 
Zeichensatz per header() auf was anderes als UTF-8 setze.

Spontan würde ich dann also einfach sagen, wir bauen in 
start_session.php ganz am Anfang diese Zeile ein:
1
header('Content-type: text/html; charset=utf-8');

Damit sollte dann der HTTP Header ja bei jeder Seite von Part-DB auf 
UTF-8 gesetzt werden.

Christoph schrieb:
> In die .htaccess wuerde ich das nicht von Haus aus reinschreiben. Denn
> bei manchen Direktiven kommt es zu einem 500 Internal Server Error, wenn
> man diese in der zentralen Apache Config (global oder fuer den Virtual
> Hosts) fuer die Verwendung in .htaccess geblockt hat.

Das ist blöd...dann kommt das halt wieder raus.

Christoph schrieb:
> Gute Frage. In Variablennamen duerfen diese Zeichen ja nicht vorkommen,
> nur in Strings. Und die interpretiert ja erst der Browser. Unklar ist
> was bei Stringbearbeitung bearbeitung, da muss php dann doch wissen dass
> es UTF-8 ist.....

Stimmt... Dazu habe ich grad folgendes gefunden: 
http://www.gerd-riesselmann.de/softwareentwicklung/php-und-utf-8-eine-anleitung-teil-3-php-string-funktionen

Das wird ja immer besser... Dann ersetze ich jetzt halt alle strlen() 
noch durch mb_strlen() usw. ;-)

mfg

von Christian R. (holle)


Lesenswert?

Erstmal vielen Dank für die schnelle Hilfe, der mit dem Mindestbestand 
ausblenden hat geklappt.

Nun habe ich aber immer noch das Problem dass ich kein Datenblatt 
hochladen kann (das mit der URL ist ja ein anderes Thema). Es kommt 
immer noch die Fehlermeldung "Es gab ein Fehler beim Hochladen der 
Datei!".

Nun habe ich mir nochmal die Installationanleitung angesehen. Alle 
Dateien haben nun die Rechte 444, alle Ordner haben die Rechte 555.
Der Ordner "Data" hat die Rechte 755 (sowie alle Unterorder) und die 
Dateien da drin (und in den Unterordnern) haben die Rechte 644.
Nun komme ich aber mit folgendem Satz nicht klar:

"Ausserdem sollten alle Dateien dem Besitzer „www-data“ gehören: "

Wie kann ich das denn einstellen? Ich verwende FireFTP, aber ich habe 
kein Plan wie ich die Benutzerrechte damit ändern kann :-/
Außerdem bin ich mir nicht sicher ob sich das auf "alle" Dateien bezieht 
oder nur auf die Dateien im "Data"-Ordner.

von Gelöscht (kami89)


Lesenswert?

Christian R. schrieb:
> Nun habe ich aber immer noch das Problem dass ich kein Datenblatt
> hochladen kann (das mit der URL ist ja ein anderes Thema). Es kommt
> immer noch die Fehlermeldung "Es gab ein Fehler beim Hochladen der
> Datei!".

Also die Fehlermeldung habe ich mittlerweile aussagekräftiger gestaltet, 
du kannst es mal probieren mit der aktuellsten Version der lib/lib.php: 
https://part-db.googlecode.com/svn/trunk/lib/lib.php

Ausserdem gibts jetzt in der Doku einen Hinweis auf mögliche Probleme 
beim Upload. Das Problem ist nämlich hauptsächlich, dass in der 
Standardeinstellung von PHP nur Dateien bis 2MB hochgeladen werden 
können.

Ab morgen sollte der entsprechende Abschnitt in der Doku der Online Demo 
verfügbar sein, aber es ist nicht viel, daher kann ichs gleich hier 
posten:

> Die Standardeinstellungen von PHP sind in der Regel ganz in Ordnung.
> Möchte man aber auch etwas grössere Dateien hochladen können (z.B.
> Dateianhänge in Part-DB), muss man eventuell das Dateigrössen-Limit für
> Uploads anpassen. Dies macht man in der Datei "php.ini", welche sich bei
> Debian-basierten Betriebssystemen im Verzeichnis "/etc/php5/apache2/"
> befindet.
>
> sudo gedit /etc/php5/apache2/php.ini
>
> In dieser Datei nach dem Stickwort "upload_max_filesize" suchen und den
> Wert entsprechend anpassen. Ausserdem müssen die Werte "post_max_size"
> und "memory_limit" mindestens gleich gross sein wie
> "upload_max_filesize".

Christian R. schrieb:
> "Ausserdem sollten alle Dateien dem Besitzer „www-data“ gehören: "

Auch diesbezüglich habe ich die Doku um einen Kommentar erweitert:

> Bei gemieteten Webservern, bei denen man die Dateien per FTP hochlädt,
> ist der Besitzer der Dateien häufig ein FTP-Benutzer, und nicht der
> Benutzer von Apache. In diesem Fall müssen die Rechte für „data“ 775
> bzw. 664, oder sogar 777 bzw. 666 lauten, damit Apache auch
> Schreibrechte in diesem Verzeichnis erhält.

von Christian R. (holle)


Lesenswert?

Vielen Dank für deine Hilfe.
An der Dateigröße kann es in dem Fall nicht liegen, da die Datei gerade 
mal 129kb klein ist. Dank deiner verbesserten lib.php bekomme ich nun 
folgende Fehlermeldung:

Sie haben keine Schreibrechte im Verzeichnis 
"/www/htdocs/xxxxxxxx/xxxxxxxx/holle/data/media/"!

Das war schon ein Kampf die lib.php hochzuladen (ich hatte keine 
Schreibrechte mehr, weil ich ja alle Ordner auf 555 gestellt hatte) ;-)

Nun habe ich dem Ordner "Data" und alle Unterordner CHMOD 775 gegeben 
...gleiches Ergebnis.
Mit CHMOD 777 klappt es nun, aber ist das nicht etwas gefährlich?
Gibt es da keine andere Möglichkeit, z.B. dass PHP sich als Benutzer 
ausgibt und somit 755 reicht?

Nun gibt es da noch ein Problem:
Ich habe das Datenblatt nun hoch laden können (mit CHMOD 777). Wenn ich 
es nun lösche und wieder neu hoch laden möchte bekomme ich folgende 
Fehlermeldung:

Die Datei "/www/htdocs/xxxxxxxx/xxxxxxxx/holle/data/media/24C08.pdf" 
existiert bereits!

Das Problem wird sein dass die Datei nur aus der Datenbank gelöscht wird 
(also der Link), aber die Datei auf dem Server verbleibt, weil die 
Rechte zum löschen der Datei nicht ausreichen, denn diese wird mit 644 
angelegt.

von Christoph (Gast)


Lesenswert?

Christian R. schrieb:
> Mit CHMOD 777 klappt es nun, aber ist das nicht etwas gefährlich?
> Gibt es da keine andere Möglichkeit, z.B. dass PHP sich als Benutzer
> ausgibt und somit 755 reicht?
777 ist natuerlich nicht ideal. JEDER auf diesem System (also 
insbesondere andere Hosting-Kunden), kann in das Verzeichnis 
reinschreiben.

Christian R. schrieb:
> Das Problem wird sein dass die Datei nur aus der Datenbank gelöscht wird
> (also der Link), aber die Datei auf dem Server verbleibt, weil die
> Rechte zum löschen der Datei nicht ausreichen, denn diese wird mit 644
> angelegt.
Um eine Datei zu loeschen, sind auf Unix die Zugriffsrechte am 
Verzeichnis relevant. D.h. solange Du Files im Verzeichnis ablegen 
kannst, kannst Du sie auch loeschen.

Ideal waere es, wenn das Datenverzeichnis vom part-db Installer erzeugt 
wuerde (z.B. in einem Skript). Dann gehoert das Verzeichnis dem 
Webserver-Nutzer und man kann 755 einstellen. Waehrend der Installation 
muesste das uebergeordnete Verzeichnis per FTP auf 777 gestellt werden 
und nachher wieder auf 755 zurueck.

von Christian R. (holle)


Lesenswert?

Ich hatte ja den Installer benutzt, aber irgendwas ist da falsch 
gelaufen. Ich erinnere mich noch daran dass ich einige Ordner von Hand 
anlegen musste, da das automatische Anlegen fehlgeschlagen ist.

Muss mich da mal durchwuseln, vielleicht finde ich ja noch einen Weg um 
per FireFTP (FTP-Programm vom Firefox) den Owner zu ändern.

von Christoph (Gast)


Lesenswert?

Christian R. schrieb:
> Ich hatte ja den Installer benutzt, aber irgendwas ist da falsch
> gelaufen. Ich erinnere mich noch daran dass ich einige Ordner von Hand
> anlegen musste, da das automatische Anlegen fehlgeschlagen ist.
Ah, wusste nicht, dass der Installer die Ordner anlegen kann.

Vielleicht sollte ich mal eine neue Version der part-db installieren ;-)

> Muss mich da mal durchwuseln, vielleicht finde ich ja noch einen Weg um
> per FireFTP (FTP-Programm vom Firefox) den Owner zu ändern.
Aendern des Eigentuemers: nur root darf das :-(

von Christian R. (holle)


Lesenswert?

Ich weiß nicht mehr genau ob der Installer auch Ordner angelegt hat, ich 
weiß nur noch dass ich selber Ordner anlegen musste.

So, habe nun über das eingebettete FTP-Programm meines Hosters den Owner 
ändern können (hatte die Auswahl zwischen meinem Benutzeraccount und 
PHP-User. Nun hat der Ordner "Data" und alles da drin (Unterordner, 
Dateien) den neuen Benutzer www-data.
Der Ordner Data/Media hat immer noch 777 und als Owner www-data und 
trotzdem klappt das mit dem Löschen nicht (aus der Datenbank wird die 
Verknüpfung gelöscht, aber auf dem Server bleibt die Datei vorhanden).

Edit: Habe die Rechte von Data/Media nun auf 755 gesetzt, das hochladen 
des Datenblatts klappt nun auch mit 775.
Warum das mit dem löschen nicht klappt ist mir ein Rätsel.
Ich werde nun erst einmal alles wieder auf 755 setzen, da das mit dem 
neuen Owner ja ausreichend ist.

von Gelöscht (kami89)


Lesenswert?

Christian R. schrieb:
> Das Problem wird sein dass die Datei nur aus der Datenbank gelöscht wird
> (also der Link), aber die Datei auf dem Server verbleibt, weil die
> Rechte zum löschen der Datei nicht ausreichen, denn diese wird mit 644
> angelegt.

Das Problem ist eher, dass Part-DB gar nicht erst versucht, die Datei zu 
löschen ;-) Werde ich noch korrigieren...

Christoph schrieb:
> Ideal waere es, wenn das Datenverzeichnis vom part-db Installer erzeugt
> wuerde (z.B. in einem Skript). Dann gehoert das Verzeichnis dem
> Webserver-Nutzer und man kann 755 einstellen.

Das ist aber auch irgendwie blöd, weil das funktioniert dann ja nur wenn 
man eine Neuinstallation macht. Hat man bereits ein Data-Verzeichnis mit 
Daten aus einer bestehenden Installation, muss man das ja z.B. per FTP 
hochladen und man hat wieder das gleiche Problem wie vorher...

Um dies zu umgehen müsste man z.B. eine Import/Export Funktion anbieten, 
damit man die Daten aus einer bestehenden Installation exportieren, und 
dann bei einer Neuinstallation wieder Importieren (per Dateiupload) 
kann. Wäre sicher eine elegante Lösung, aber nicht mehr für die Version 
0.3.0 :-)

Christoph schrieb:
> Ah, wusste nicht, dass der Installer die Ordner anlegen kann.

Der Installer legt auch keine Ordner an, der "data" Ordner ist bereits 
im Archiv enthalten (inkl. ein paar Dateien, z.B. .htaccess). Nur die 
config.php wird vom Installer angelegt.

von Christian R. (holle)


Lesenswert?

Urban B. schrieb:
> Der Installer legt auch keine Ordner an, der "data" Ordner ist bereits
> im Archiv enthalten (inkl. ein paar Dateien, z.B. .htaccess). Nur die
> config.php wird vom Installer angelegt.

Hmmm, dann verwechsle ich da anscheinend was mit mysqldumper.


Zum Thema Installer:
Wäre es nicht machbar eine PHP-Datei in den Ordner zu legen, dieser die 
Rechte 777 zu geben und die benennt dann die Ordner um, erstellt diese 
neu (somit ist www-data der Owner) und kopiert dann die Dateien und 
Order aus den umbenannten Ordnern in die neu erstellen Ordner. Danach 
einfach die umbenannten Ordner löschen.
...nicht gleich steinigen, ist nur so ein Gedanke (habe keinen Plan von 
PHP und Unix) ;-)

von Christian R. (holle)


Lesenswert?

Gibt es schon etwas neues bezüglich "URL für Datenblatt eintragen" 
(Version 0.3.0) ?

von Gelöscht (kami89)


Lesenswert?

Christian R. schrieb:
> Gibt es schon etwas neues bezüglich "URL für Datenblatt eintragen"
> (Version 0.3.0) ?

Ist bereits im SVN, kommt dann in die 0.3.0 RC2 die ich wahrscheinlich 
bald veröffentlichen werde. Alle wichtigen Bugfixes und sonstige 
Verbesserungen, die seit der RC1 gemeldet wurden, sind dann in der RC2 
drin.

Testen kann man die RC2 in dieser Demo: 
http://www.partdb.grautier.com/svn/

von Gelöscht (kami89)


Lesenswert?

So, ich denke es ist an der Zeit, die RC2 zu veröffentlichen. Ich warte 
aber noch bis morgen, damit die Doku in der Online-Demo noch 
aktualisiert wird (habe heute noch Änderungen ins SVN hochgeladen).

Das Archiv kann man jetzt übrigens per tools.sh, oder noch einfacher 
direkt in Part-DB mit den Entwickler-Tools erstellen lassen. Das 
garantiert korrekte Dateirechte, Besitzer und Gruppen aller Dateien und 
Verzeichnisse. Auch werden benutzerspezifische Dateien wie die 
config.php automatisch ausgeschlossen usw.

Ich würde mich übrigens freuen wenn sich jemand am Erweitern der Doku 
beteiligen würde, hier gibts noch viel zu tun :-)
Einerseits ist die FAQ-Seite noch ziemlich leer, andererseits könnte man 
vielleicht die Installationsanleitung zweiteilen. Einmal für die 
Installation auf einem Server mit "direktem Zugang" (auch SSH), und 
einmal für die Installation auf einem Webspace per FTP. Da könnte man ja 
auch Screenshots von FileZilla o.ä. mit einbauen usw.

Damit man Schreibrechte im DokuWiki erhält, muss man im Part-DB Ordner 
"data" einfach eine (leere) Datei mit dem Namen 
"ENABLE-DOKUWIKI-WRITE-PERMS.txt" erstellen.

mfg

von Gelöscht (kami89)


Lesenswert?

So, die 0.3.0 RC2 ist jetzt online: 
https://code.google.com/p/part-db/downloads/detail?name=Part-DB_0.3.0.RC2.tar.gz

Installationsanleitung: 
http://www.partdb.grautier.com/svn/documentation/dokuwiki/doku.php

Nebst vielen anderen Bugfixes ist jetzt insbesondere auch die 
Kompatibilität mit Windows einiges besser geworden. Also diejenigen, die 
mit der RC1 Probleme unter Windows hatten, sollten es doch bitte mit 
dieser Version nochmal versuchen.

Viel Spass beim testen :-)

von Maximilian M. (haligali)


Lesenswert?

Hallo Leute,

ist das Preissuchscript von 2010 mit der 0.3RC1 kompatibel ?

Gruß

von Gelöscht (kami89)


Lesenswert?

Hallo Maximilian,

Es hat sich vieles an der Datenbank verändert und damit ist dieses 
Skript leider nicht mehr kompatibel.

Vielleicht gibt es ja einen Freiwilligen, der es aktualisiert? :-)

mfg

von thirdgotti (Gast)


Lesenswert?

Hallo an die Experten,
ich nutze die part-db seit Jahren in der Ursprungsversion von C. Lechner 
mit einigen selbstgemachten Änderungen.
Kann ich problemlos die bisher aufgebaute Datenbank in der aktuellen 
Version nutzen?

Grüße

von Gelöscht (kami89)


Lesenswert?

Hallo thirdgotti,

Das sollte prinzipiell möglich sein. Wichtig ist einfach, dass du zuerst 
ein Backup der Datenbank anlegst damit nichts kaputtgehen kann.

Es kann allerdings sein, dass das Update auf die Version 0.3.0 Probleme 
verursacht, dann solltest du mal versuchen zuerst auf die 0.2.2, und 
danach auf die 0.3.0 zu aktualisieren. So stehen die Changen sehr gut 
dass alles klappt.

mfg

von thirdgotti (Gast)


Lesenswert?

Habe es hinbekommen.
Allderdings muss man da etwas tiefer in die Datenbank. Es haben sich 
seit meiner "Uralt-Version" einige Tabellennamen und Spaltennamen 
geändert. Diese muss man von dem Import ändern. PHPMyAdmin machts 
möglich...
Aber sonst scheint das jetzt zu laufen.

von Gelöscht (kami89)


Lesenswert?

thirdgotti schrieb:
> Allderdings muss man da etwas tiefer in die Datenbank. Es haben sich
> seit meiner "Uralt-Version" einige Tabellennamen und Spaltennamen
> geändert. Diese muss man von dem Import ändern.

Das Ändern der Tabellennamen usw. sollte Part-DB selbst übernehmen. Es 
sei denn, in deiner alten Version gibts noch keine Tabelle "internal" 
mit dem Eintrag keyName="dbVersion". War der bei dir noch nicht 
vorhanden?

Wenn du unsicher bist, kannst du mir deine uralt-DB auch per Mail 
schicken, dann kann ich mir das mal anschauen und ggf. das Update auf 
die neuste Version durchführen.

von Gerald *. (pyromane)


Lesenswert?

Urban B. schrieb:
> Gerald *. schrieb:
>> Die Vorschaubilder der Artikel werden derzeit teilweise sehr stark
>> verzogen, da immer nur in eine Richtung runter skaliert wird.
>
> Stimmt, das wollte ich eigentlich auch schon lange mal verbessern. Ich
> habe jetzt die CSS-Datei entsprechend angepasst, wird nachher noch ins
> SVN hochgeladen ist dann in der RC2 drin.

Die Lösung gefällt mir. Danke!

von Waldemar (Gast)


Angehängte Dateien:

Lesenswert?

Hi,
ich würde gerne die Lagerverwaltung starten, aber es wird mir verwehrt.
Es kommt immer die Fehlermeldung:

Die gewählte Sprache "de_DE" wird vom Server nicht unterstützt!
Bitte installieren Sie diese Sprache oder wählen Sie eine andere.

Ich habe sämtliche Vorgaben ausprobiert, aber bei jeder gibts die 
Fehlermeldung.
Ich habe als Server den  XAMPP  installiert.
Wie kann ich Sprache "de_DE" installieren?

Mit besten Grüßen
Waldemar

von Gelöscht (kami89)


Lesenswert?

Hallo,

Waldemar schrieb:
> Die gewählte Sprache "de_DE" wird vom Server nicht unterstützt!
> Bitte installieren Sie diese Sprache oder wählen Sie eine andere.

Nimm mal die neuste Version (0.3.0 RC2), dann sollte das klappen:
https://code.google.com/p/part-db/downloads/detail?name=Part-DB_0.3.0.RC2.tar.gz

mfg

von Waldemar (Gast)


Lesenswert?

Hallo,

vielen Dank, hat wirklich geklappt.
Nur schlage ich mich jetzt ersteinmal damit rum, eine Datenbank 
anzulegen, da die ja vorausgesetzt wird. Darauf war ich nicht 
vorbereitet.

Beste Grüße
Waldemar

von Waldemar (Gast)


Lesenswert?

Hi,

aber auch DAS hat geklappt. Alles im grünen Bereich.

Danke schön.

Gruß
Waldemar

von kirkdis (Gast)


Lesenswert?

Hallo,

habe mich heute mal rüber gemacht meine 0.2.2 SVN 512 mit der neuen RC2 
upzudaten.

allerdings habe ich jetzt auch das Problem mit der fehlenden Sprache.

Geht es da um die Sprache von der Datenbank?

Gruß

von kirkdis (Gast)


Lesenswert?

Urban B. schrieb:
> So, ich denke es ist an der Zeit, die RC2 zu veröffentlichen. Ich
> warte
> aber noch bis morgen, damit die Doku in der Online-Demo noch
> aktualisiert wird (habe heute noch Änderungen ins SVN hochgeladen).
>
> Das Archiv kann man jetzt übrigens per tools.sh, oder noch einfacher
> direkt in Part-DB mit den Entwickler-Tools erstellen lassen. Das
> garantiert korrekte Dateirechte, Besitzer und Gruppen aller Dateien und
> Verzeichnisse. Auch werden benutzerspezifische Dateien wie die
> config.php automatisch ausgeschlossen usw.
>
> Ich würde mich übrigens freuen wenn sich jemand am Erweitern der Doku
> beteiligen würde, hier gibts noch viel zu tun :-)
> Einerseits ist die FAQ-Seite noch ziemlich leer, andererseits könnte man
> vielleicht die Installationsanleitung zweiteilen. Einmal für die
> Installation auf einem Server mit "direktem Zugang" (auch SSH), und
> einmal für die Installation auf einem Webspace per FTP. Da könnte man ja
> auch Screenshots von FileZilla o.ä. mit einbauen usw.
>
> Damit man Schreibrechte im DokuWiki erhält, muss man im Part-DB Ordner
> "data" einfach eine (leere) Datei mit dem Namen
> "ENABLE-DOKUWIKI-WRITE-PERMS.txt" erstellen.
>
> mfg

Hallo Kami,

ich würde mich bereit erklären die Grundfunktionen unserer Part-DB zu 
Beschreiben für alle Neulinge. Habe die alte Version schon auf Herz und 
Nieren getestet und seit fast 1,5Jahren im täglichen 
Produktionseinsatz...

Jetzt muss ich meine 0.3.0 erstmal fertig updaten. kann mir keiner 
weiterhelfen? ich hänge aktuell immernoch im Installscript fest bei der 
Sprach- und Ländereinstellung. Ich denke die Datenbank ist bei diesem 
Schritt schon geupdatet und ich habe die Befürchtung wenn ich die alte 
Version wieder zurückspiele mir da noch mehr Probleme entstehen.

von abcdef (Gast)


Lesenswert?

@kirkdis:
Ich glaube, Du musst auf Deinem Webserver das Locale de_DE installieren.

von kirk d. (kirkdis)


Lesenswert?

abcdef schrieb:
> @kirkdis:
> Ich glaube, Du musst auf Deinem Webserver das Locale de_DE installieren.

das ist ne Synology DS107. Ich vermute jetzt auf der Kommandozeile von 
dem Linux. Wobei das dann etwas frickelig wird. Kann man das nicht 
umgehen? Bei den alten Versionen gabs das Problem nicht.

von kirk d. (kirkdis)


Lesenswert?

Den UTF-8 Zeichensatz kann ich leider nicht so einfach integrieren. 
Erstmal ist die Box offline und ich habe auch nicht so einfach die 
Möglichkeit mit dieser online zu gehen. Auf einem anderen Rechner 
herunterladen ist nicht so einfach möglich zumal ich nicht ganz firm mit 
der Kommandozeile unter Linux bin. Warum wird das nun in der neuesten 
Version abgefragt. Die Datenbank läuft und lief bis jetzt mit 
UTF8_gerneral_ci Einstellungen.

von Gelöscht (kami89)


Lesenswert?

Hallo,

Sorry bin grad in den Ferien und komme nur schlecht ins Internet... 
Kannst du noch bis nächsten Donnerstag warten? :-)

Weiter oben hier im Thread hatte schonmal jemand das gleiche Problem, 
schau mal was ich ihm geschrieben habe, war ein Eintrag in der 
config_defaults.php um das Problem vorübergehend zu beheben.

tut mir leid, muss jetzt wieder weiter :-)

Grüsse Urban

von kirk d. (kirkdis)


Lesenswert?

Ah vielen Dank Urban. Werd ich dann mal ausprobieren. Schönen Urlaub 
noch

von kirk d. (kirkdis)


Lesenswert?

Also ich hab mir jetzt mal den Post von dir rausgesucht:

Beitrag "Re: Lagerverwaltung Part-DB V0.2.2"

allerdings unterscheiden sich diese Zeilen von der RC1 zur RC2. ich habe 
jetzt ein wenig rumgespielt aber leider keine Lösung bekommen um durch 
die Sprachabfrage durchzukommen.

falls mir niemand anderes weiterhelfen kann werde ich wohl bis 
Donnerstag warten müssen.

Schönes Wochenende allen..

Gruß

Daniel

von Christopher K. (djmaster_d)


Lesenswert?

Hi, bin nun auf rev 674 mit debian und läuft super. Nur zur Info. ;)

Meine Wünsch wäre es herausfinden zu können welches das letzte 
veränderte Bauteil ist, bzw das letzt hinzugefügte.

Ist sowas vielleicht schon irgendwo mit eingebaut?

Danke viiielmals für das tolle Skript.

Grüße Christopher

von kirk d. (kirkdis)


Lesenswert?

Welches das jüngste Bauteil ist kann man anhand der ArtikelID sehen. 
aber eine suche direkt gibts soweit ich weiss nicht.

Wenn das nicht allzuoft benötigt wird kann man den Umweg über die 
Datenbank gehen. Die ID sollte da in einer separaten Spalte aufgelistet 
sein ich denke sogar dass ein Änderungsdatum dort hinterlegt ist aber 
100% sicher bin ich mir beim Datum nicht.

Gruß Daniel

von K. J. (Gast)


Lesenswert?

Datum ist nicht vorhanden, aber das geht über die ID da die Fortlaufend 
sind, könte man der Statistik nochmal hinzufügen leider komme ich immer 
noch nicht mit dem Template System klar aber, ich schaue mal ob ich das 
hinbekomme.

von Udo N. (weinbauer73)


Lesenswert?

Man könnte ein Log einbauen, dass Einfügen und Änderung von Einträgen 
mitschreibt. So könnte man auch nicht mehr verwendete Bestände aufspüren 
und eventuell aus dem Lager entfernen/entsorgen. Platz hat man ja 
bekanntlich fast so wenig wie Geld ;-)

Edit: Ich kann mir das ja mal anschauen, ob ich so eine Funktion 
hinbekomme.

von Christopher K. (djmaster_d)


Lesenswert?

Hi, Es ist ja das "added date" und "modified date" in der Datenbank 
vorhanden bei den parts. Soweit war ich schon. ;)... Leider hab ich die 
functionen nicht finden können welche so ähnlich sind. Hätte mich selbst 
dran versucht. Ist aber fast schon zu hoch für mich.

Es geht mit "mir" darum... Wir befüllen zu dritt die partdb. Und es gibt 
zb bei einem Stecker eine Änderung des Datenblattes oder des 
Bestellnummer. Nun würde ich gerne am Freitag wissen was sich über die 
Woche verändert hat.

Hoffe ihr könnt euch vorstellen was ich in etwa damit bezwecken will.

Dankeschön, Grüße aus Wien
Chris

von Gelöscht (kami89)


Lesenswert?

So, bin wieder zurück :-)

kirkdis schrieb:
> habe mich heute mal rüber gemacht meine 0.2.2 SVN 512 mit der neuen RC2
> upzudaten.
> allerdings habe ich jetzt auch das Problem mit der fehlenden Sprache.
> Geht es da um die Sprache von der Datenbank?

Nein, das hat nichts mit der Datenbank zu tun. Man stellt das Land und 
die Sprache ein, damit z.B. automatisch die richtige Währung in der 
richtigen Formatierung angezeigt wird. Part-DB muss dazu dem 
Server-Betriebssystem mitteilen, welche Sprache man verwenden möchte. 
Stellt das Betriebssystem die gewünschte Sprache nicht zur Verfügung, 
kommt es zu einer Fehlermeldung.

Laut diversen Berichten im Internet haben die Synology NAS anscheinend 
standardmässig kein UTF-8 Zeichensatz installiert. Ob das wirklich ein 
Problem darstellt, bin ich mir aber grad nicht sicher, muss mir das 
erstmal genauer anschauen.

Mach doch bitte mal den folgenden Test:
In der Datei lib/lib.start_session.php die gesamte Funktion 
own_setlocale() ausklammern und durch diese hier ersetzen:
1
function own_setlocale($category, $locale)
2
{
3
    return (setlocale($category, "de_DE") !== false);
4
}

kommt so die Fehlermeldung immernoch?


Bezüglich dem Log:
Also erstens habe ich bei der Tabelle "parts" die Spalten 
"datetime_added" und "last_modified" hinzugefügt. Es gibt aber in 
Part-DB noch keine Möglichkeit, diese Angaben irgendwie zu nutzen.

Und zweitens ist es schon lange geplant, ein Log mit einzubauen, der 
jede Änderung aufzeichnet. Dazu existiert bereits die Klasse "Log", die 
auch schon in alle anderen Klassen mit eingebaut wurde. Es ist also 
alles schon vorbereitet.

@Christopher
Also wenn du auch Änderungen an Datenblättern usw. sehen willst, geht 
das (noch) nicht mit der Tabellenspalte "last_modified", weil dieses 
Feld nicht aktualisiert wird wenn du ein Datenblatt hinzufügst o.ä.
Das wird aber noch geändert, so dass wirklich jede Änderung an einem 
Bauteil das "last_modified" aktualisiert.

Würde es dir genügen, wenn du nur sehen würdest, welche Bauteile sich 
verändert haben, oder musst du auch wissen was sich daran verändert 
hat?
Ersteres wäre keine grosse Sache, das könnte man relativ einfach 
realisieren. Zweiteres ist dann aber ein Fall für die Log-Klasse, das 
gibt noch sehr sehr viel Arbeit.

mfg

von Christopher K. (djmaster_d)


Lesenswert?

Hi Urban.

Hab ich mir doch gedacht das sowas kommen wird. Seit ja erst bei v.0.3.0

- Nun also... mir persönlich würde es ausreichen das Bauteil zu sehen 
welches sich verändert hat. (Inhaltlich muss "Ich" es dann mit meinen 
Cad-Zeichnungen abgleichen und zb die Bestellnummer in der Zeichnung 
gegen die neue ersetzen.)

Ich denke vorerst ist nicht relevant was sich verändert hat. So viele 
Variablen sind es dann auch nicht. Das würde ich dann schon 
herausfinden. Hatte ich auch so bei meiner alten db. Also "einfach" eine 
normale Sortierfunktion....sozusagen. (Verändertes oder Neues Bauteil 
von oben nach unten sortiert.)

- Natürlich wäre es genial auf einen Blick sehen zu können wer was und 
wann verändert hat. Aber soweit mag ich noch nicht denken, weil das 
wer gibts es ja noch nicht.. ;)

- Das "last_modified" noch nicht bei Dateblätter aktualisiert wird ist 
mir noch gar nicht aufgefallen. Gut zu wissen. g

DANKE
Grüße aus Wien

von Gelöscht (kami89)


Lesenswert?

Also ich habe den Code jetzt noch so angepasst, dass das "last_modified" 
auch bei Änderungen an Einkaufsinformationen, Preisinformationen und 
Dateianhängen aktualisiert wird. Ist dann im nächsten Release also mit 
drin.

@Christopher
Damit du die letzten Änderungen möglichst schnell in phpMyAdmin anzeigen 
kannst, gibt es folgende Möglichkeit:

Datenbank wählen --> Tabelle "parts" wählen --> Reiter "SQL" wählen.
Dort als Befehl folgendes eingeben:
1
SELECT id, name, description, last_modified
2
FROM `parts`
3
WHERE last_modified >= '/*[VARIABLE]*/'
4
ORDER BY last_modified DESC

Dann bei "SQL-Abfrage speichern:" irgend einen Namen eingeben und auf 
"OK" klicken. Die Abfrage ist jetzt gespeichert, mit einem Platzhalter 
für das Datum, und kann jederzeit wieder abgerufen werden.

Zum Abrufen gehst du so vor:
Wieder den Reiter "SQL" wählen und dann unten bei "Gespeicherte 
SQL-Abfrage" die eben erstellte Abfrage wählen. Dann bei "Variable" das 
Datum/Uhrzeit in dieser Form eingeben: "2013-07-01 00:00:00" (ohne ""). 
Auf "OK" klicken und es werden alle Bauteile aufgelistet, die nach dem 
eingegebenen Datum verändert wurden.

mfg

von kirk d. (kirkdis)


Lesenswert?

Hallo Urban,

also habe den setlocale code wie beschrieben eingefügt. Der Fehler ist 
aber nach wie vor aktuell.

hmm gibts dafür einen Workaround und warum ist das jetzt mit der neuen 
Version plötzlich nötig. Die alte 021 hat es anscheinend nicht 
interessiert welche Spracheinstellung verwendet werden.

von Gelöscht (kami89)


Lesenswert?

kirk disen schrieb:
> also habe den setlocale code wie beschrieben eingefügt. Der Fehler ist
> aber nach wie vor aktuell.

hmm okay dein NAS hat wohl keine Sprachen installiert, die man mit 
setlocale() nutzen kann.

aus http://forum.synology.com/enu/viewtopic.php?t=4232:
> There are no locales on the DS' system, so only the default "C" locale works.

kirk disen schrieb:
> hmm gibts dafür einen Workaround und warum ist das jetzt mit der neuen
> Version plötzlich nötig. Die alte 021 hat es anscheinend nicht
> interessiert welche Spracheinstellung verwendet werden.

Vorher war Part-DB eigentlich auch nur für die Verwendung in Deutschland 
vorgesehen. Mit der Funktion setlocale() ist Part-DB aber auch in 
anderen Ländern nutzbar, weil alle länderspezifischen Parameter direkt 
vom Betriebssystem geholt werden können.

Zum Beispiel gibt es Länder, bei denen die Währung vor dem Betrag steht, 
und Länder, bei denen zuerst der Betrag und dann die Währung geschrieben 
wird. Dann gibt es Länder, bei denen der Punkt als Dezimalpunkt genommen 
wird, bei anderen Ländern ist es das Komma. Oder auch das Datumsformat 
ist je nach Land sehr unterschiedlich.

Dank der setlocale() Funktion müssen wir Entwickler uns nicht um solche 
Sachen kümmern. Wir teilen einfach dem Betriebssystem mit, dass wir z.B. 
"Deutsch (Deutschland)" oder "Englisch (USA)" nutzen möchten, und das 
Betriebssystem liefert uns die Währungen und Datumsangaben direkt in der 
jeweils lokalen Schreibweise.

Dass es aber so häufig zu Problemen kommt wegen dem setlocale() habe ich 
natürlich nicht geahnt. Bei "normalen" Linux-Servern sollte es 
eigentlich immer funktionieren. Bei Windows weiss man nicht so recht 
welche Länderbezeichnung man nehmen muss, das ist sehr mühsam. Und jetzt 
erfahre ich von dir, dass es wohl auf den Synology NAS gar keine locales 
gibt...

Man könnte sich natürlich schon überlegen, all die Länderspezifischen 
Parameter in Part-DB zu hinterlegen, z.B. für jedes Land eine Datei in 
dem die Parameter aufgelistet sind. Das gibt zwar Arbeit, allerdings ist 
man diesbezüglich nicht mehr vom Betriebssystem abhängig.

Vielleicht hat ja irgendwer bereits Erfahrung mit diesem Thema und kann 
uns ein paar Tipps geben?

@ kirk disen
Da anscheinend der Ländercode "C" auf deinem NAS vorhanden sein sollte, 
versuch doch mal diese own_setlocale():
1
function own_setlocale($category, $locale)
2
    {
3
        $charsets = array('utf8', 'UTF8', 'utf-8', 'UTF-8');
4
        $base_locales = array($locale);
5
6
        // workaround for Windows/XAMPP:
7
        switch ($locale)
8
        {
9
            case 'de_AT':
10
                $base_locales[] = 'german-austrian';
11
                $base_locales[] = 'dea';
12
                break;
13
            case 'de_CH':
14
                $base_locales[] = 'german-swiss';
15
                $base_locales[] = 'swiss';
16
                $base_locales[] = 'des';
17
                break;
18
            case 'de_DE':
19
                $base_locales[] = 'german';
20
                $base_locales[] = 'deu';
21
                break;
22
            case 'de_LU':
23
                $base_locales[] = 'german';
24
                $base_locales[] = 'deu';
25
                break;
26
            case 'en_GB':
27
                $base_locales[] = 'english-uk';
28
                $base_locales[] = 'uk';
29
                $base_locales[] = 'eng';
30
                break;
31
            case 'en_US':
32
                $base_locales[] = 'english-us';
33
                $base_locales[] = 'english-usa';
34
                $base_locales[] = 'english-american';
35
                $base_locales[] = 'american-english';
36
                $base_locales[] = 'american english';
37
                $base_locales[] = 'american';
38
                $base_locales[] = 'usa';
39
                $base_locales[] = 'us';
40
                $base_locales[] = 'enu';
41
                break;
42
            default:
43
                break;
44
        }
45
46
        $base_locales[] = 'C';
47
48
        $locales = array();
49
        foreach ($base_locales as $base_locale)
50
        {
51
            foreach ($charsets as $charset)
52
                $locales[] = $base_locale.'.'.$charset;
53
54
            $locales[] = $base_locale;
55
        }
56
57
        return (setlocale($category, $locales) !== false);
58
    }

von kirk d. (kirkdis)


Lesenswert?

ok Danke erstmal, mit dem letzten script der set locale hat es jetzt 
geklappt die Setuproutine zu beenden. Allerdings kommt jetzt danach 
nichts mehr, der Browser bleibt weiss ohne Fehlermeldung.

Zum glück kann ich das neben der alten 512er SVN betreiben, so ist das 
System noch zugänglich auch wenn die neue 0.3.0 RC2 noch nicht 
funktioniert.

von Gelöscht (kami89)


Lesenswert?

kirk disen schrieb:
> Allerdings kommt jetzt danach
> nichts mehr, der Browser bleibt weiss ohne Fehlermeldung.

PHP >= 5.3 ist vorhanden, oder?
Dann könntest du mal die Seite http://server/part-db/system_debug.php 
aufrufen um das Debugging zu aktivieren. Danach nochmal die Startseite 
von Part-DB aufrufen und schauen was kommt. Durch das Debuggen sollten 
die PHP Fehlermeldungen angezeigt werden, vorher wurden die unterdrückt, 
deshalb die weisse Seite.

von kirk d. (kirkdis)


Lesenswert?

er fragt mich nun nach dem administrator passwort. Ich glaube das hatte 
ich beim setup wohl vergessen einzugeben, kann ich das setup nochmals 
aufrufen um dieses erneut einzugeben?

von Gelöscht (kami89)


Lesenswert?

Das Administratorpasswort kann man eigentlich gar nicht vergessen 
einzugeben, ohne dieses kann die Installation nicht fortgesetzt werden 
;-)

Du kannst aber einfach die Datei "config.php" im Verzeichnis "data" 
löschen, dann kommt der Installer wieder.

von kirk d. (kirkdis)


Lesenswert?

also habe gerade die config erneut ausgeführt, Admin pass neu gesetzt 
Datenbank aktualisiert.

Danach aufs part-db und erneut White Screen.
Anschliessend das debugging aktiviert und in nem neuen Tab wieder die 
Seite aufgerufen.

Debugging zeigt mir nichts an. Sehr komisch das ganze...

Irgendetwas läuft da schief.

von Gelöscht (kami89)


Lesenswert?

Bei aktiviertem Debugging ist die Hauptseite immernoch weiss?
Keine PHP Fehlermeldungen zu sehen?

Dass im Debug-Log keine Fehler auftauchen, ist klar. Dort tauchen nur 
Part-DB interne Fehler auf, keine PHP Fehler.

Vielleicht musst du bei deinem NAS erst irgendwas konfigurieren, damit 
PHP die Fehlermeldungen ausgibt. Ich kenne die Synology NAS überhaupt 
nicht, gibts da ein Webinterface bei dem man PHP konfigurieren, und 
evtl. auch gleich die PHP Logs anschauen kann?

Normalerweise sollte das eigentlich nicht notwendig sein, da Part-DB 
versucht, die PHP Fehlermeldungen selber zu aktivieren. Nur vielleicht 
klappt das ja auf dem NAS nicht, keine Ahnung...

Übrigens, schonmal das NAS neu gestartet? Als ich noch intensiv an 
Part-DB 0.3.0 programmiert habe, hat mein Server manchmal auch ganz 
komische Sachen gemacht, ein Neustart (mindestens von Apache) hat ihn 
dann jeweils wieder zur Vernunft gebracht ;-)

von Gelöscht (kami89)


Lesenswert?

@kirk disen
Gibts Neuigkeiten bezüglich deinem Problem?
Wäre schon nicht schlecht wenn wird das Problem beheben könnten, es gibt 
sicher noch andere Leute die Part-DB auf einem NAS installieren möchten.

@Alle
Da hier im Forum seit der RC2 praktisch keine Bugs mehr gemeldet wurden, 
könnte man daher schon bald mal daran denken, die finale 0.3.0 
rauszubringen. Ich habe in letzter Zeit noch ein paar kleinere Bugs 
behoben die ich beim "rumspielen" gefunden habe. Leider brauche ich 
persönlich Part-DB zur Zeit aber praktisch nicht, da ich grad keine 
Elektronikprojekte am laufen habe.

Gibt es schon jemand der die RC2 im produktiven Einsatz hat und 
berichten kann wie es läuft?

mfg

von Borsty B. (mantabernd)



Lesenswert?

Hallo zusammen,

ich hab mir heute Part-db Version 0.3.0 RC2 auf einem Windows Server2008 
(IIS 6) installiert und musste dabei folgendes anpassen:

Fehler auf jeder Seite:

1
PHP Notice: Undefined index: DOCUMENT_ROOT in C:\Inetpub\vhosts\orange-showtechnik.de\partdb\start_session.php on line 143 PHP Warning: mb_strpos(): Empty delimiter in C:\Inetpub\vhosts\orange-showtechnik.de\partdb\start_session.php on line 150

Lösung:

Unter Windows / IIS gibt es wohl die Variable DOCUMENT_ROOT nicht und 
muss händisch nachgepflegt werden. In die start_session.php muss man 
folgendes einfügen:

1
if(!isset($_SERVER['DOCUMENT_ROOT'])){ if(isset($_SERVER['SCRIPT_FILENAME'])){
2
$_SERVER['DOCUMENT_ROOT'] = str_replace( '\\', '/', substr($_SERVER['SCRIPT_FILENAME'], 0, 0-strlen($_SERVER['PHP_SELF'])));
3
}; };
4
if(!isset($_SERVER['DOCUMENT_ROOT'])){ if(isset($_SERVER['PATH_TRANSLATED'])){
5
$_SERVER['DOCUMENT_ROOT'] = str_replace( '\\', '/', substr(str_replace('\\\\', '\\', $_SERVER['PATH_TRANSLATED']), 0, 0-strlen($_SERVER['PHP_SELF'])));
6
}; };

Fehler beim bearbeiten eines Bauteiles:

1
PHP Warning: implode(): Invalid arguments passed in C:\Inetpub\vhosts\orange-showtechnik.de\partdb\lib\lib.functions.php on line 129 PHP Warning: implode(): Invalid arguments passed in C:\Inetpub\vhosts\orange-showtechnik.de\partdb\lib\lib.functions.php on line 129 PHP Warning: implode(): Invalid arguments passed in C:\Inetpub\vhosts\orange-showtechnik.de\partdb\lib\lib.functions.php on line 129

Lösung:

Der Rückgabewert $value in der lib.functions.php muss als Array 
deklariert werden:

1
$value = array();
2
$value = implode($locale['mon_decimal_point'], $value);

Außerdem funktioniert bei mir die Anzeige des Artikelpreises nicht 
korrekt, der Wert wird zwar gespeichert aber in der Übersicht und beim 
Bestellen wird er nicht angezeigt.

Gruß Bernhard

von Udo N. (weinbauer73)


Lesenswert?

Ich würde den Code für DOCUMENT_ROOT kürzer fassen:
1
if (!isset($_SERVER['DOCUMENT_ROOT']) {
2
   if (isset($_SERVER['SCRIPT_FILENAME'])) {
3
      $_SERVER['DOCUMENT_ROOT'] = str_replace( '\\','/',substr($_SERVER['SCRIPT_FILENAME'],0,0-strlen($_SERVER['PHP_SELF'])));
4
   } elseif (isset($_SERVER['PATH_TRANSLATED'])) {
5
      $_SERVER['DOCUMENT_ROOT'] = str_replace( '\\','/',substr(str_replace('\\\\', '\\', $_SERVER['PATH_TRANSLATED']),0,0-strlen($_SERVER['PHP_SELF'])));
6
   }
7
}
Für implode() wäre es besser, vorher auf die Variable zu prüfen.
1
$value = ((is_array($value)?implode($locale['mon_decimal_point'], $value):"");

von Borsty B. (mantabernd)


Lesenswert?

Kurze Anmerkung noch für Mouser Besteller:

Beim abscannen der Mousertütchen tritt das Problem auf dass Bindestriche 
gefolgt von Leerzeichen (also "- ") durch ein ß ersetzt werden.

Sprich aus 863- LM317MBDTRKG wird 863ßLM317MBDTRKG.

Dazu hab ich in der "edit_part_info.php" in Zeile 234 und 250 folgendes 
eingefügt:

$new_supplierpartnr = str_replace("ß", "- ", $new_supplierpartnr);

Nun können Mousertütchen munter abgescannt werden :)

Gruß
Bernhard

von Udo N. (weinbauer73)


Lesenswert?

Es sieht mir eher danach aus, als ob der Barcodescanner falsch 
eingestellt ist. Einige der Codes sind verwandt, manche Codes oder 
Varianten kennen kein Leerzeichen. Da ich nur im Büro auf einen 
Barcodescanner zurückgreifen kann, kann ich leider dir nicht sagen, 
welchen Code Mouser selbst verwendet.

von Borsty B. (mantabernd)


Lesenswert?

Udo Neist schrieb:
> Es sieht mir eher danach aus, als ob der Barcodescanner falsch
> eingestellt ist. Einige der Codes sind verwandt, manche Codes oder
> Varianten kennen kein Leerzeichen. Da ich nur im Büro auf einen
> Barcodescanner zurückgreifen kann, kann ich leider dir nicht sagen,
> welchen Code Mouser selbst verwendet.

Leider ist es ein ganz einfacher Scanner (CipherLAB 1000) zu dem es auch 
keine Software oder Konfigurationseinstellungen gibt. Von dem her war 
das jetzt für mich der einfachste Weg zum Ziel zu kommen. Eventuell 
stehen andere User vor einem ähnlichen Problem und können sich durch die 
zwei Zeilen Code einiges an Arbeit ersparen.

Deine zwei obrigen Codeschnipsel funktionieren bei mir übrigens leider 
nicht :(

von Udo N. (weinbauer73)


Lesenswert?

Zwei Klammern fehlten... Meine Tastatur hat leider ne Macke :(
1
if (!isset($_SERVER['DOCUMENT_ROOT'])) {
2
   if (isset($_SERVER['SCRIPT_FILENAME'])) {
3
      $_SERVER['DOCUMENT_ROOT'] = str_replace('\\','/',substr($_SERVER['SCRIPT_FILENAME'],0,0-strlen($_SERVER['PHP_SELF'])));
4
   } elseif (isset($_SERVER['PATH_TRANSLATED'])) {
5
      $_SERVER['DOCUMENT_ROOT'] = str_replace( 
6
'\\','/',substr(str_replace('\\\\', '\\', 
7
$_SERVER['PATH_TRANSLATED']),0,0-strlen($_SERVER['PHP_SELF'])));
8
   }
9
}
1
$value = ((is_array($value))?implode($locale['mon_decimal_point'],$value):"");

Eventuell müsste man für die Barcodescanner eine Korrekturfunktion 
einbauen, die fehlerhafte Scans korrigiert. Vielleicht eine 
produktbezogene Library, die eine entsprechende Funktion enthält.

von Udo N. (weinbauer73)


Lesenswert?

Produktblatt CipherLAB 1000: 
http://www.cipherlab.com/livefiles/en/Documents/296/4-CPL10079%201070%20DE.pdf

Unterstützte Codes: Codabar, Code 39, Code 93, Code 128, GS1 DataBar 
(RSS), Industrial 2 of 5, Interleave 2 of 5,
Matrix 2 of 5, MSI, Italian und French Pharmacodes, Plessey, Telepen, 
UPC  EAN  GS1-128, u.v.m.

Handbuch: 
http://www.cipherlab.com/livefiles/en/documents/937/1000_1090+_1100_1105_1200ScannerUserGuide_v3_01.zip

von Gelöscht (kami89)


Angehängte Dateien:

Lesenswert?

Immer die leidigen Windows-Probleme... ;-)

@Borsty Bürste
Kannst du mal die angehängte start_session.php ausprobieren?

Bezüglich Barcode:
Momentan werden Barcodes ja noch gar nicht offiziell unterstützt von 
Part-DB. Aber das kommt natürlich noch, K.J. hat ja schon damit 
begonnen.

Was ich eigentlich sagen möchte: Das Feld für die Bestellnummer ist 
dafür vermutlich nicht ideal - ich denke mal, es kann durchaus mal 
Barcodes geben, die nicht mit der Bestellnummer übereinstimmen (?)

Ein zusätzliches Feld, extra für den Barcode, würde die ganze Sache 
flexibler machen. Theoretisch ist dann auch das Problem mit fehlerhaften 
Zeichen kein wirkliches Problem mehr, ob der Barcode nun ein falsches 
Zeichen enthält ist völlig irrelevant, da es für den Menschen gar nicht 
lesbar sein muss.

Diesen Barcode müsste man dann natürlich so wie die Bestellnummern, für 
jede Einkaufsinformation (Klasse "Orderdetails") separat zuweisen 
können.

Ausserdem wäre vermutlich ein zusätzliches Feld für einen Barcode 
sinnvoll, welcher für ein ganzes Bauteil gültig ist. Damit kann man dann 
persönliche Beschriftungen realisieren, also die Bauteile im eigenen 
Lager mit eigenen Barcodes versehen.

mfg

von Gerald *. (pyromane)


Lesenswert?

Urban B. schrieb:
> Ausserdem wäre vermutlich ein zusätzliches Feld für einen Barcode
> sinnvoll, welcher für ein ganzes Bauteil gültig ist.

Man kann auch einen Artikel bei mehren Händlern bestellen, von daher 
müsste es bei den Preisen oder zumindest Händlerabhängig gespeichert 
sein.

von Gelöscht (kami89)


Lesenswert?

Gerald *. schrieb:
> Urban B. schrieb:
>> Ausserdem wäre vermutlich ein zusätzliches Feld für einen Barcode
>> sinnvoll, welcher für ein ganzes Bauteil gültig ist.
>
> Man kann auch einen Artikel bei mehren Händlern bestellen, von daher
> müsste es bei den Preisen oder zumindest Händlerabhängig gespeichert
> sein.

Ja, man beachte das Wort "zusätzlich" in meinem Satz :-)

Also für jede Einkaufsinformation einen Barcode, und zusätzlich für den 
Artikel an sich einen Barcode.

Erstere(r) wird/werden verwendet um ein geliefertes Bauteil zu 
identifizieren/einzubuchen. Zweiteres wird verwendet, um ein Bauteil aus 
dem Lager zu identifizieren/abzubuchen (sofern man die eigenen Bauteile 
mit eigenen Barcodes versehen möchte).

Aber alles zu seiner Zeit :-)

von abcdef (Gast)


Lesenswert?

Urban B. schrieb:
> Aber alles zu seiner Zeit :-)

Wann kommt endlich die Version 0.3.0?

von abcdef (Gast)


Lesenswert?

abcdef schrieb:
> Wann kommt endlich die Version 0.3.0?
Kanns kaum mehr erwarten ;-)

von Borsty B. (mantabernd)


Lesenswert?

Urban B. schrieb:
> Immer die leidigen Windows-Probleme... ;-)

Ja echt furchtbar, ich fands ja schon schrecklich im IIS PHP zum laufen 
zu bekommen... als würde man das nicht brauchen... oO Naja aber der 
Webserver ist nun mal da und somit verwend ich ihn auch.

> @Borsty Bürste
> Kannst du mal die angehängte start_session.php ausprobieren?

Jop soeben probiert und funktioniert :)

Was ich übrigens etwas (furchtbar) umständlich finde ist die Zuweisung 
der Footprints, sonst scheint das Tool echt einen ganz brauchbaren 
Eindruck zu machen. Weiter so!

Vorallem ist es schön dass man auch mal selbst was anpassen kann. Bei 
welchem Tool geht das denn heute noch so einfach?

von Borsty B. (mantabernd)


Angehängte Dateien:

Lesenswert?

Ist es eigentlich möglich die Bauteile je Kategorie unterschiedlich zu 
sortieren?

Ich finde es vorallem bei den Widerständen etwas umständlich dass diese 
nicht nach Zahlenwerten sortiert werden. Bei IC's mag das ja sinn machen 
aber bei vielen Widerständen wird das schnell sehr unübersichtlich.

Sprich 220 Ohm sollte z.b. nach 39 Ohm kommen, da größer. Ich habs auch 
schon probiert das Ohm wegzulassen und in der Spalte Name nur mit 
Zahlenwerten zu arbeiten. Funktioniert leider auch nicht.

Wie lösen das andere?

von Gelöscht (kami89)


Lesenswert?

abcdef schrieb:
> Wann kommt endlich die Version 0.3.0?

Wenn sie fertig ist :-)
Aber du kannst ja die RC2 davon schonmal benutzen...

Borsty Bürste schrieb:
>> @Borsty Bürste
>> Kannst du mal die angehängte start_session.php ausprobieren?
>
> Jop soeben probiert und funktioniert :)

OK ich lads dann noch ins SVN, ebenso wie die Änderung in 
money_format().

Borsty Bürste schrieb:
> Was ich übrigens etwas (furchtbar) umständlich finde ist die Zuweisung
> der Footprints
Jup, da stimme ich dir zu, das ist im Moment leider relativ mühsam. 
Geplant ist halt, dass man die Bilddatei mit dem neuen Dateimanager von 
Udo wählen kann, doch der ist noch nicht fertig.

> sonst scheint das Tool echt einen ganz brauchbaren
> Eindruck zu machen. Weiter so!
Danke :-)

Borsty Bürste schrieb:
> Ist es eigentlich möglich die Bauteile je Kategorie unterschiedlich zu
> sortieren?
Nein, das ist zur Zeit nicht möglich.

Borsty Bürste schrieb:
> Sprich 220 Ohm sollte z.b. nach 39 Ohm kommen, da größer. Ich habs auch
> schon probiert das Ohm wegzulassen und in der Spalte Name nur mit
> Zahlenwerten zu arbeiten. Funktioniert leider auch nicht.
Naja, das System erkennt natürlich nicht dass alle Bauteile in der 
angezeigten Kategorie Zahlen als Namen haben. Und dass "1 MOhm" grösser 
als "100 Ohm" ist, das merkt das System natürlich erst recht nicht ;-)

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
> Borsty Bürste schrieb:
>> Was ich übrigens etwas (furchtbar) umständlich finde ist die Zuweisung
>> der Footprints
> Jup, da stimme ich dir zu, das ist im Moment leider relativ mühsam.
> Geplant ist halt, dass man die Bilddatei mit dem neuen Dateimanager von
> Udo wählen kann, doch der ist noch nicht fertig.

Das hängt immer noch an dem blöden Uploader für einige Browser :( Flash 
will ich ja nicht einsetzen, so wird das für IE bis 10 und ein paar 
andere bei Einzeluploads bleiben. FF und Chrome sind da deutlich besser. 
Ansonsten ist der (Web-)Dateimanager nutzbar.

von Borsty B. (mantabernd)


Angehängte Dateien:

Lesenswert?

Leider muss ich nochmal mit einer "Kleinigkeit" kommen.

Ich bin grad am einpflegen meiner ganzen Artikel und jetzt ist mir 
aufgefallen dass wenn ich ein Tütchen mit 5 x Widerstand 33 Ohm 0603 
samt Einkaufsinformationen einpflege und darauf hin ein weiteres Tütchen 
mit den selben Widerständen und den selben Einkaufsinformationen 
eintrage mir part-db die Einkaufsinformationen vom ersten verwirft.

Sprich ich hab dann zwei mal Widerstand 33 Ohm 0603 mit je 5 Stück aber 
nur einen Eintrag mit den Einkaufsinformationen.

Hier wäre es verdammt wichtig dass part-db die Einkaufsinformationen 
prüft und bei dem selben Lieferanten die Stückzahl addiert und bei 
unterschiedlichen Lieferanten den neuen mit der neuen Stückzahl 
hinzufügt.

Beispiel:

Ich trage 4 x Attiny23 von Conrad mit Bestellnummer 423452 ein und eine 
Woche später entscheid ich mich die Teile bei Mouser zu bestellen also 
trag ich 6 x Attiny23 mit Bestellnummer von Mouser ein. Jetzt müsste es 
einen einzigen Eintrag Attiny23 geben Stückzahl 10 und unter 
Einkaufsinformationen stehen Conrad und Mouser.

So wie es jetzt ist kann es zu einem Katastrophalen Durcheinander führen 
(siehe Anhang)... Ich muss jetzt nämlich nochmal alle Teile durchsehen 
und prüfen wieviele 33 Ohm von welchen Lieferanten kamen und welche 
davon obsolete sind.

Wie auf dem Screenshot zu sehen funktioniert wohl auch die Sortierung 
nicht so wie sie sollte.

von Gelöscht (kami89)


Lesenswert?

Borsty Bürste schrieb:
> Ich bin grad am einpflegen meiner ganzen Artikel und jetzt ist mir
> aufgefallen dass wenn ich ein Tütchen mit 5 x Widerstand 33 Ohm 0603
> samt Einkaufsinformationen einpflege und darauf hin ein weiteres Tütchen
> mit den selben Widerständen und den selben Einkaufsinformationen
> eintrage mir part-db die Einkaufsinformationen vom ersten verwirft.
>
> Sprich ich hab dann zwei mal Widerstand 33 Ohm 0603 mit je 5 Stück aber
> nur einen Eintrag mit den Einkaufsinformationen.
>
> Hier wäre es verdammt wichtig dass part-db die Einkaufsinformationen
> prüft und bei dem selben Lieferanten die Stückzahl addiert und bei
> unterschiedlichen Lieferanten den neuen mit der neuen Stückzahl
> hinzufügt.

Moment mal - Ich bin mir nicht sicher ob ich das richtig verstanden 
habe.
Also Schritt für Schritt:

Borsty Bürste schrieb:
> wenn ich ein Tütchen mit 5 x Widerstand 33 Ohm 0603
> samt Einkaufsinformationen einpflege und darauf hin ein weiteres Tütchen
> mit den selben Widerständen und den selben Einkaufsinformationen
> eintrage

Du legst also für jedes Tütchen einen separaten Artikel an? Wozu das? 
Alle 10 Widerstände sind doch genau die selben, also brauchts dafür nur 
einen Artikel in der Datenbank, mit der Menge 10Stk.

Borsty Bürste schrieb:
> mir part-db die Einkaufsinformationen vom ersten verwirft.

Das kann ich nicht nachvollziehen. Kannst du das reproduzieren und mir 
eine Schritt-für-Schritt Anleitung dazu geben?

Borsty Bürste schrieb:
> Hier wäre es verdammt wichtig dass part-db die Einkaufsinformationen
> prüft und bei dem selben Lieferanten die Stückzahl addiert und bei
> unterschiedlichen Lieferanten den neuen mit der neuen Stückzahl
> hinzufügt.

Auch hier verstehe ich dich nicht. Stückzahl und Lieferant sind zwei 
völlig verschiedene Dinge. Ob in deinem Lager der selbe Widerstand von 
sieben verschiedenen Herstellern stammt, ist völlig irrelevant. Wichtig 
ist nur zu wissen, wieviel Stück du insgesamt an Lager hast. Woher die 
kommen ist egal, schliesslich sind alle Widerstände identisch, auch wenn 
sie von verschiedenen Lieferanten kommen.
Die Angabe der Lieferanten und Bestellnummern und Preise dient nur dazu, 
dass man sich merkt wo man das Bauteil zu welchem Preis bekommt.

Borsty Bürste schrieb:
> Ich trage 4 x Attiny23 von Conrad mit Bestellnummer 423452 ein und eine
> Woche später entscheid ich mich die Teile bei Mouser zu bestellen also
> trag ich 6 x Attiny23 mit Bestellnummer von Mouser ein.

Nein, du fügst dem alten Bauteil einfach eine neue Einkaufsinformation 
für die Bestellung bei Mouser hinzu, und erhöhst den Lagerbestand des 
ATTiny's um 6. Ergebnis: Einen Artikel "ATTiny" mit Lagerbestand "6" und 
den zwei Einkaufsinformationen für Conrad und Mouser.

Borsty Bürste schrieb:
> Wie auf dem Screenshot zu sehen funktioniert wohl auch die Sortierung
> nicht so wie sie sollte.

Naja...er sortiert nach Name, und das ist ja korrekt :-) Aber ich füge 
noch hinzu dass bei identischem Namen auch die Beschreibung zur 
Sortierung benutzt wird.

Also:
Wenn ich dich richtig verstanden habe, hast du Part-DB falsch 
verstanden ;-)

von Borsty B. (mantabernd)


Lesenswert?

Oh ok anscheinend hab ich mich tatsächlich etwas wirr ausgedrückt - 
bitte entschuldige!

Ich möchte natürlich nicht für jedes Tütchen einen eigenen Artikel 
anlegen. Selbstverständlich soll part-db alle gleichen Artikel des 
selben Herstellers zusammenwürfeln, ganz egal wo ich die gekauft habe. 
Soweit schon klar :)

ABER: Wenn ich dussel nicht merk dass es diesen Artikel ja schon gibt 
(was bei so vielen durchaus mal vorkommen kann) und ich leg den Artikel 
nochmal an, mit den selben Einkaufsinformationen und dem selben 
Hersteller wäre es schön wenn part-db meckern würde "Vorsicht den selben 
Artikel von dem selben Hersteller hab ich doch schon!".

Aktuell ist es so dass er den Artikel nochmal anlegt und ich dann zwei 
gleiche Artikel mit den gleichen Daten in der Datenbank habe. Genau das 
soll ja nicht passieren ;-)

Entweder part-db merkt dass es den Artikel gibt und fügt die zwei gleich 
zusammen oder es kommt einfach eine Fehlermeldung und lässt die Aktion 
nicht zu. Bei letzterem hab ich dann die Möglichkeit den schon 
vorhandenen Artikel zu finden und zu aktualisieren.

Ich denke das ist nun etwas verständlicher :)

von Gelöscht (kami89)


Lesenswert?

Ach so, ja jetzt verstehe ich dich :-)

Grundsätzlich würde ich ja sagen, es ist Sache des Anwenders erstmal zu 
schauen obs den entsprechenden Artikel schon gibt. Aber einen dezenten 
Hinweis, dass es bereits einen Artikel mit dem selben Namen, selben 
Hersteller und selben Footprint gibt, wäre sicher machbar und sinnvoll. 
Aber wirklich nur wenn Name, Hersteller und Footprint exakt identisch 
sind, sonst gibts ständig Fehlalarme wenn man ein ähnliches Bauteil wie 
ein bereits existierendes anlegt, das nervt dann nur.

Ich nehme das einfach mal in die ToDo-Liste auf.

von Udo N. (weinbauer73)


Lesenswert?

So langsam nimmt Part-DB richtig gute Konturen an :-) Auf solche 
Kleinigkeiten kommen wir Entwickler auch nicht immer. Da ist es gut, 
dass es auch engagierte Tester gibt, die uns ein Feedback geben.

Daumen hoch

von Borsty B. (mantabernd)


Lesenswert?

Ich arbeite ja nun seit einigen Tagen mit Part-DB und mittlerweile 247 
verschiedene Bauteile  (laut Statistik, hihi) eingepflegt.

Was noch schön wäre:

- EDIT Funktion für mehrere Bauteile gleichzeitig (auch wäre es sinnvoll 
mehrere Bauteile gleichzeitig in eine andere Kategorie/Unterkategorie 
verschieben zu können) Aktuell mach ich das direkt in der Datenbank mit 
SQL Phrasen, im Tool selbst ist das fast nicht möglich.

- Für jedes Bauteil sollte eine Art "Zustand" auswählbar sein der frei 
definiert werden kann (z.b. Neuware, ausgelötet, Pins verbogen, zum 
basteln, ...). Ich stell mir das über ein DropDown Menü vor.

- Was ich persönlich etwas nervig finde ist die Tatsache dass man beim 
anlegen eines neuen Bauteiles (oder beim bearbeiten) keinen weiteren 
Browsertab öffnen kann. Sehr umständlich um mal eben den Preis zu 
checken oder die technischen Daten.... Ich verwende dazu aktuell einen 
zweiten Browser, nervt aber.

- Export Funktion aller Bauteile für die Weiterverarbeitung in 
(ex-)bom.ulp. (das werde ich aber vermutlich die kommenden Tage selbst 
schreiben). Somit kann man dann die Eagle Projekte direkt mit Part-db 
Verknüpfen. Einfache zu realisierendes Features was part-db richtig 
"mächtig" macht.

- In der Listenansicht der Bauteile wäre es schön den Hersteller zu 
sehen, eventuell als neue Spalte oder dafür z.b. die Spalte Dateianhänge 
weglassen.

Wie werden die Bauteile eigentlich aus der Datenbank geholt? Ich wollte 
mir die Sortierung der Teile selbst noch anpassen, hab aber in der 
show_categorie_parts.php nur die dazugehörigen $REQUESTS gefunden, 
jedoch nirgends einen Select aus der DB.

Ich hoffe das war nicht zuviel auf einmal xD

Gruß
Bernhard

von Gelöscht (kami89)


Lesenswert?

@K.J.
Ich habe mal den RSS-Feed Parser auf der Startseite umgeschrieben, weil 
vorher ja die Links nicht funktioniert haben. Allerdings funktioniert 
das in der Online Demo nicht, es kommt nur eine weisse Seite. Könntest 
du mal das Debugging aktivieren, damit hoffentlich ein paar nützliche 
Fehlermeldungen angezeigt werden?

Borsty Bürste schrieb:
> - EDIT Funktion für mehrere Bauteile gleichzeitig (auch wäre es sinnvoll
> mehrere Bauteile gleichzeitig in eine andere Kategorie/Unterkategorie
> verschieben zu können) Aktuell mach ich das direkt in der Datenbank mit
> SQL Phrasen, im Tool selbst ist das fast nicht möglich.

Jo das wäre sicherlich nützlich, gibt aber sehr viel Arbeit ;-)
Wird also sicher noch länger dauern bis so eine Funktion kommt...

Borsty Bürste schrieb:
> - Für jedes Bauteil sollte eine Art "Zustand" auswählbar sein der frei
> definiert werden kann (z.b. Neuware, ausgelötet, Pins verbogen, zum
> basteln, ...). Ich stell mir das über ein DropDown Menü vor.

Sowas ist schon geplant:
https://code.google.com/p/part-db/issues/detail?id=30

Borsty Bürste schrieb:
> - Was ich persönlich etwas nervig finde ist die Tatsache dass man beim
> anlegen eines neuen Bauteiles (oder beim bearbeiten) keinen weiteren
> Browsertab öffnen kann. Sehr umständlich um mal eben den Preis zu
> checken oder die technischen Daten.... Ich verwende dazu aktuell einen
> zweiten Browser, nervt aber.

Also erstens könntest du in der Konfiguration die Popups auf "nicht 
modal" einstellen, dann kannst du den Browser weiterhin für andere 
Sachen benutzen (das Popup geht dann einfach in den Hintergrund).
Und zweitens werden die Popups irgendwann vermutlich durch eine 
JavaScript Lösung abgelöst, so dass gar kein neues Browserfenster mehr 
geöffnet wird.

Borsty Bürste schrieb:
> - Export Funktion aller Bauteile für die Weiterverarbeitung in
> (ex-)bom.ulp. (das werde ich aber vermutlich die kommenden Tage selbst
> schreiben). Somit kann man dann die Eagle Projekte direkt mit Part-db
> Verknüpfen. Einfache zu realisierendes Features was part-db richtig
> "mächtig" macht.

Hmm ich habe noch nie mit dem bom.ulp gearbeitet, könntest du mal kurz 
erklären wie das genau abläuft? Wozu brauchst du dazu die gesamte 
Datenbank zu exportieren, und in welchem Format?
Das wäre eine Sache, die man sicherlich mit relativ wenig Aufwand noch 
einbauen könnte. Wobei ich mich  frage, wie lange so ein Export dauert 
wenn man mehrere (zehn)tausend Bauteile in der DB hat...

Dass man den Output vom bom.ulp (wenn ich das richtig verstanden habe) 
direkt in eine Baugruppe importieren kann, hast du gesehen oder?

Borsty Bürste schrieb:
> - In der Listenansicht der Bauteile wäre es schön den Hersteller zu
> sehen, eventuell als neue Spalte oder dafür z.b. die Spalte Dateianhänge
> weglassen.

Füge mal die folgende Zeile in deine config.php ein und staune :-)
1
$manual_config['table']['category_parts']['columns']     = 'hover_picture;name;description;instock_mininstock;footprint;storelocation;manufacturer;datasheets;attachements;button_decrement;button_increment';

Borsty Bürste schrieb:
> Wie werden die Bauteile eigentlich aus der Datenbank geholt? Ich wollte
> mir die Sortierung der Teile selbst noch anpassen, hab aber in der
> show_categorie_parts.php nur die dazugehörigen $REQUESTS gefunden,
> jedoch nirgends einen Select aus der DB.

Das ist alles nicht so ganz einfach, da Part-DB jetzt objektorientiert 
programmiert ist. Die Datenbankabfragen sind also hauptsächlich in den 
lib/class.*.php Dateien. In der Klasse "PartsContainingDBElement" werden 
für jede anzuzeigende Kategorie die darin enthaltenen Teile aus der 
Datenbank geholt (Funktion "get_parts()"). Da kannst du die Sortierung 
anpassen. Doch wenn die Beiteile mehrerer Kategorien geholt werden 
müssen, holt wieder jede Kategorie ihre eigenen Teile, und nachher wird 
per PHP alles noch sortiert (Funktion "usort_compare()"). An diesen 
beiden Stellen müsstest du also die Sortierung anpassen.

Dass die Artikelbeschreibung auch zur Sortierung herangezogen wird, ist 
übrigens im nächsten Release mit drin, falls du dies haben wolltest ;-)

mfg

von K. J. (Gast)


Lesenswert?

@Urban B. mach ich zeitlich ist das immernoch etwas knap bei mir aber 
spätestens am we solte ich das machen können.

Übrigens nebenbei ist zu vermelden das mittlerweile 5 große Firmen (>1k 
Mitarbeiter) die Part-db nutzen, Respekt an die momentanen Entwickler 
ich mach den Support für die grade nebenbei mit.

von Udo N. (weinbauer73)


Lesenswert?

> Übrigens nebenbei ist zu vermelden das mittlerweile 5 große Firmen (>1k
> Mitarbeiter) die Part-db nutzen, Respekt an die momentanen Entwickler
> ich mach den Support für die grade nebenbei mit.

Um es mit FB zu sagen: Gefällt mir :-)

Wenn es mir zeitlich möglich ist, werde ich am Wochenende mal das 
Problem des Uploads für ältere Browser angehen. Damit das auch endlich 
mal aus meiner ToDo-Liste raus ist.

von Gelöscht (kami89)


Lesenswert?

K. J. schrieb:
> @Urban B. mach ich zeitlich ist das immernoch etwas knap bei mir aber
> spätestens am we solte ich das machen können.

OK kein Problem, nur kein Stress :-)
Also es geht übrigens nur darum, dass du hier das Administratorpasswort 
eintippst: http://www.partdb.grautier.com/svn/system_debug.php
Danach sollte man hoffentlich die Fehlermeldungen auf der Startseite 
sehen.
Ich kann den Fehler bei mir (leider?) nicht nachvollziehen, hier 
funktioniert es tadellos...

K. J. schrieb:
> Übrigens nebenbei ist zu vermelden das mittlerweile 5 große Firmen (>1k
> Mitarbeiter) die Part-db nutzen, Respekt an die momentanen Entwickler
> ich mach den Support für die grade nebenbei mit.

Wow, das ist doch mal eine gute Nachricht! Vielleicht kommt dadurch ja 
auch mal die ein oder andere Spende zustande ;-)

von Gelöscht (kami89)


Lesenswert?

@K.J. ich habe soeben den Fehler auf der Startseite gefunden, auf dem 
Webspace meines Hosters wird nämlich eine Fehlermeldung angezeigt weil 
ich direkt beim Funktionsaufruf auf ein Array-Element zugegriffen habe, 
also sowas wie funktion()[0]. Auf meinem Ubuntu Server frisst er das 
allerdings, drum habe ich es hier nicht gemerkt... naja, brauchst jetzt 
das Debugging nicht mehr zu aktivieren :-)

von Arne M. (armut)


Lesenswert?

Hallo, bin gerade auf dieses Projekt gestossen, ich muss zugeben ich 
habe nicht alle 550 Kommentare gelesen, nur mal nach grratis und Hoster 
gesucht, aber nichts brauchbares gefunden. Darum meine Frage ob es bei 
irgendeinen freehoster laeuft? Habe bei Tripido mal einen Account 
angelegt, und die part-DB hochgeladen, dort laeuft PHP 5.3 zum laufen 
habe ich es allerding nicht bekommen. Geht das bei irgendeinen free 
hoster?

von Gelöscht (kami89)


Lesenswert?

@Arne M.
Ob Part-DB auf einem gratis Webspace läuft, kann ich dir nicht sagen. 
Aber beschreib doch, was denn bei deinem aktuellen Hoster für Probleme 
auftreten (Fehlermeldungen?). (wer/was ist eigentlich "Tripido"?)

Ausserdem würde ich dir sowieso empfehlen, einen richtigen Hoster zu 
benutzen. Früher habe ich meine ersten Gehversuche auch mit freehostern 
gemacht, aber glaub mir, das ist es nicht wert. Die paar Kröten, die ein 
Webspace mit Domain kosten, sind gut investiert. Eigene Domain, keine 
Werbung, kein Spam an deine E-Mail Adresse, >99,9% Uptime, kompetenter 
Support, und, und, und.

Gratis Hoster brauchen immer wieder starke Nerven und sind nicht selten 
mal für ein paar Stunden offline (selbst schon mehrfach erlebt).

Manche Hoster bieten auch z.B. 30 Tage kostenloses Ausprobieren an, so 
kannst du auch prüfen ob der Hoster deine Ansprüche erfüllt, ohne dass 
du Geld dafür ausgibst.

mfg

EDIT: Und falls du Part-DB nur von zu Hause aus erreichen musst, 
brauchst du sowieso nicht zwingend einen Hoster sondern kannst deinen 
eigenen Webserver aufsetzen.

von Arne M. (armut)


Lesenswert?

@Urban B

Danke fuer deine Antwort hatte einfach nach free hostern geschaut, die 
die benoetigte PHP Version haben. Dieser hat PHP 5.3

Auf lange sicht, wenn das gut laufen sollte sollte das auf meinen 
Raspberry Pi laufen. Der hat wie der Zufall es will php und mysql, aber 
bis es soweit ist,(momentan fehlendes Internet zuhause) wollte ich das 
mal antesten und schonmal Bauteile anlegen und dann einfach nur 
umsteigen.

Vorgegangen bin ich nach der Installationsanweisung.
1 eine Datenbank erstellt
2 den  part-db in den www ordner kopiert und testweise alle rechte fuer 
jeden gesetzt

Beim Aufrufen der Seite MEINNAME.tipido.net/part-db kommt dann :

Internal Server Error

The server encountered an internal error or misconfiguration and was 
unable to complete your request.

Andere Fehlermeldungen seh ich gerade nicht. Ansonsten kann man mit 
phpMyAdmin verwalten, kann  man dort noch etwas tun? Vor einen 
kostenpflichtigen schreck ich immer zurueck grad weil der was kostet und 
ich erstmal das fur lau hinzubekommen.

Gruss
Arne

von Gelöscht (kami89)


Lesenswert?

Arne M. schrieb:
> Beim Aufrufen der Seite MEINNAME.tipido.net/part-db kommt dann :
> Internal Server Error

Lösche testweise mal die .htaccess Datei im Hauptverzeichnis (oder 
alle). Könnte sein, dass der Server irgendwas an diesen Dateien nicht 
mag.

Ausserdem hat eine kurze Recherche im Internet ergeben, dass dein 
Anbieter wohl die ini_set() Funktion verboten hat. Diese wird allerdings 
in der start_session.php einmal aufgerufen. Entferne diese Codezeile 
einfach mal. Wobei, eigentlich sollte das kein Problem darstellen, weil 
bei gesperrter ini_set() die Funktion einfach "false" zurückliefern 
müsste...

Arne M. schrieb:
> Vor einen kostenpflichtigen schreck ich immer zurueck grad weil der
> was kostet und ich erstmal das fur lau hinzubekommen.

Jo klar kostet das was, aber für was ganz einfaches bezahlt man 
schätzungsweise so um die 2 Euro im Monat, mit eigener Domain noch ~1 
Euro mehr. Das kann man sogar als Schüler noch problemlos verkraften :-)
Naja, musst selber wissen, wollte nur sagen dass (meiner Meinung nach) 
die paar Euros gut investiert sind... ;-)

von Udo N. (weinbauer73)


Lesenswert?

Ich könnte dir natürlich auch free-speicher.de anbieten. Bei dem Projekt 
gehöre ich zu den technischen Admins. Du musst dich allerdings beim 
Betreiber melden, denn wir nehmen nicht jeden. Für Fragen steht auch ein 
Forum zur Verfügung. Allerdings steht da nur PHP 5.2 zur Verfügung. Ein 
Update ist derzeit nicht geplant.

von Arne M. (armut)


Lesenswert?

Urban B.
Danke hae die .htaccess entfernt und schon lief es! Danke dir als 
Sprache konnte man putzigerweise nur us englisch angeben, aber denonch 
alles auf deutsch :) Scheint alles zu gehen, grad updates gemacht!



Udo Neist
Danke dir fuer das Angebot ist sehr nett, doch die Voraussetzung ist 
doch PHP 5.3 :) Andererseits  einen Server im Netz zu haben kann ja auch 
nie verkehrt sein!

von Gelöscht (kami89)


Lesenswert?

Arne M. schrieb:
> Danke hae die .htaccess entfernt und schon lief es!
Wenn bei deinem Server aber das Directory Listing aktiviert ist, 
solltest du es nicht so sein lassen, sonst kann jeder all deine Dateien, 
die auf dem Server liegen, anschauen. Überprüfen kannst du das indem du 
versuchst z.B. das Verzeichnis img im Browser aufzurufen. Wenn dort 
der Zugriff verweigert wird (also eine Fehlerseite kommt) ist alles OK.

Dir ist aber schon bewusst dass jetzt jeder an deiner Datenbank 
rumpfuschen kann, oder? Mit einer .htaccess lässt sich dies vermeiden, 
such einfach im Internet mal nach ".htaccess Zugriffsschutz" o.ä. 
(allerdings ist fraglich ob das dein Hoster überhaupt zulässt, da 
anscheinend ja schon das deaktivieren des Directory Listing zu einer 
Fehlermeldung führt...Ausprobieren hilft!)


> Danke dir als Sprache konnte man putzigerweise nur us englisch angeben

Das liegt daran, dass dein Server wohl keine deutschen Sprachdateien 
installiert hat. Somit hast du jetzt die Preise in GBP statt in Euro. Ab 
dem nächsten Release kann man dann eine neutrale Sprache auswählen (für 
den Fall dass der Server die gewünschte Sprache nicht zur Verfügung 
stellt), dann muss man die Währung von Hand in die config.php eintragen.

von Arne M. (armut)


Lesenswert?

Urban B. schrieb:
> z.B. das Verzeichnis img im Browser aufzurufen. Wenn dort
> der Zugriff verweigert wird (also eine Fehlerseite kommt) ist alles OK.

Kam eine Fehlermeldung.

Das jeder drin rumpfuschen kann ist mir schon klar. Ein kleiner Schutz 
ist ja dass man den Seitennamen kennen muss und dann auch noch den 
Ordnernamen. Ob das allein schon einer findet? Aber ist ja eh dort 
wahrscheinlich nur temporaer. Bei meinen eigenen sollte es schon so 
sein, dass nur ich rankann! Was .htaccess macht find ich deswegen noch 
raus.

Hab Dollar da stehen, aber zum nachbestellen brauch ich das glaube ich 
(noch) nicht dazu bin ich zu hobbymaessig.

Auf alle Faelle ein aufwendiges Programm, bei dem man sieht das sehr 
viel Arbeit drin steckt, verdient meinen Respekt. Hab keine Ahnung was 
meine normalen bedrahteten Widerstaende fuer eine Bauform haben :)

von Gelöscht (kami89)


Lesenswert?

Urban B. schrieb:
> Somit hast du jetzt die Preise in GBP statt in Euro.

Arne M. schrieb:
> Hab Dollar da stehen,

Ups, ich dachte ich hätte "England" gelesen (da wo "Englisch" steht), 
USA hat natürlich Dollar xD (mein Allgemeinwissen ist zwar bescheiden, 
aber das weiss ich gerade noch so...)

Arne M. schrieb:
> Ein kleiner Schutz ist ja dass man den Seitennamen kennen muss und
> dann auch noch den Ordnernamen.

Joah wenns nicht für ewig ist, kann man das natürlich so machen... ;-)
Die robots.txt sollte auch verhindern dass die Seite mit Suchmaschinen 
gefunden werden kann.

Arne M. schrieb:
> Hab keine Ahnung was
> meine normalen bedrahteten Widerstaende fuer eine Bauform haben :)

Die "normalgrossen" haben die Bauform "0207", die etwas kleineren 
"0204".

von Udo N. (weinbauer73)


Lesenswert?

Ich habe mich heute mal mit dem Problem des Uploads per IFrame 
auseinander gesetzt. Es funktioniert schon, aber leider nur Datei für 
Datei. Wählt man mehrere aus und will diese dann in einem Rutsch 
übergeben, gibt Firefox ein Security Alarm auf der Javascript-Konsole 
aus. Ich kann keine Duplikate für input type="file" erstellen :(. Bevor 
Fragen zu jQuery oder ähnliche Frameworks kommen: der Filemanager kommt 
komplett ohne externe JS-Lib aus und das soll auch so bleiben. Die 
meisten dieser Frameworks sind einfach zu groß für ein kleines Projekt 
mit wenig Javascript.

Ich werde die IFrame-Lösung in den Filemanager als Fallback einbauen, 
falls der Browser kein FormData-Objekt kennt.

von Udo N. (weinbauer73)


Lesenswert?

Ich habe den Popup-Modus des Filemanagers überarbeitet. Anstatt den 
eingebauten Viewer zu starten, wird in diesem Modus nur die zuvor 
ausgewählte und im Infobereich angezeigte Datei dem aufrufenden Fenster 
übergeben.

http://phpbookworm.singollo.de/project/part-db/

Auf der Testseite ist die Navigation im Hauptverzeichnis abgeschaltet 
und erlaubt es nur in bestimmten Unterverzeichnissen im Popup. Die 
Angabe der erlaubten Verzeichnisse im Hauptscript wird der nächste 
Schritt sein, dann kommt die Integration des Fallbacks (siehe oben).

von Christoph (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Udo,

keine Ahnung, ob das so beabsichtigt ist: Ich kann kein Verzeichnis 
auswaehlen... Siehe Anhang. Der Screenshot wurde mit Kubuntu und dem 
alten Firefox 11 gemacht, ich seh das gleiche aber auch mit Windows und 
dem aktuellen Firefox.

Mach ich irgendwas falsch?

Viele Gruesse
Christoph

von Udo N. (weinbauer73)


Lesenswert?

Das Phänomen sehe ich auch. Irgendein Bug schaltet die 
Verzeichnisanzeige ab. Da es gestern lief, tippe ich auf einen Fehler 
bei der Initialisierung. Mach mich gleich dran, damit dieser Fehler 
behoben ist.

von Udo N. (weinbauer73)


Lesenswert?

Fehler beseitigt. Beim Start soll in der nächsten Version eine Liste von 
Verzeichnissen geladen werden. Die zugehörige Ajax-Funktion war bereits 
aktiv, aber konnte vom PHP-Script nicht beantwortet werden. Daher wurde 
die im Template vorgebene Liste überschrieben. Ich lager das erstmal 
aus, so dass diese Funktion nur per Klick auf einen Link aktiv wird.

von Christoph (Gast)


Lesenswert?

Hi,

in der "Gleiche Seite"-Version sehe ich drei Verzeichnisse: 
Hauptverzeichnis/Grafik/Import. In der Popup-Version sieht man diese 
nicht.

Bei zwei der Verzeichnissen kommt "Ein Fehler ist aufgetreten: 
[Funktion: file_explorer::xhrGet]" wenn man sie anklickt, und die 
Dateiauswahl geht noch nicht (getestet mit Firefox11).

Viele Gruesse
Christoph

von Udo N. (weinbauer73)


Lesenswert?

Ist auch kein Wunder. Ich hab derzeit ein Problem mit der 
Tokengenerierung für die Absicherung der Aktionen. Ich geb Bescheid, 
wenn das Problem beseitigt ist und der Filemanager wieder läuft.

von Udo N. (weinbauer73)


Lesenswert?

Ich habe die Tokenproblematik gelöst. Durch das asynchrone Nachladen des 
Tokens (ist eine Sessionvariable) muss ich die Anzeige des Filemanagers 
um einige Millisekunden verzögern. In beiden Modi sollten jetzt zwei 
Verzeichnisse angezeigt werden.

Edit: Upload kann wieder verwendet werden.

von Christoph (Gast)


Lesenswert?

habs grade erfolgreich getestet und als File mal den Screenshot von oben 
hochgeladen. Sieht echt gut aus.

Was allerdings etwas irritierend ist, ist das Upload Fenster: Man waehlt 
eine Datei aus, aber der Dateiname erscheint nicht im Auswahlfeld 
(stattdessen geht der Zaehler hoch). Es waere gut, wenn zusaetzlich zum 
Zaehler noch eine Liste aller ausgewaehlten Filenames erscheinen wuerde.

Viele Gruesse

von Udo N. (weinbauer73)


Lesenswert?

Das mit dem Uploader ist mir bekannt. Es ist noch ein Überbleibsel der 
Tests mit den verschiedenen Browser und daher noch nicht komplett. Die 
Liste kann ich wieder einbauen.

von Udo N. (weinbauer73)


Lesenswert?

Liste ist vorhanden :-) Allerdings noch ohne Überprüfung von mehrfach 
ausgewählten Dateien.

von Udo N. (weinbauer73)


Lesenswert?

Die aktuelle Version des Filemanagers ist in der Revision 682 enthalten.

von Gelöscht (kami89)


Lesenswert?

@Udo
Sieht schonmal gut aus soweit!
Funktioniert das ganze auch schon wenn die angezeigten Ordner auch noch 
Unterordner haben? Wäre interessant, wenn du mal z.B. den Ordner 
"img/footprints" von Part-DB zu deinem Filemanager hinzufügen würdest 
:-)

@ Alle Tester von der 0.3.0 RC2
Na, wie siehts aus, kann man das finale Release der 0.3.0 rausgeben? :-)

Ich glaube, eine RC3 ist nicht unbedingt nötig. So viel hat sich seit 
der RC2 nicht mehr getan...
(zumindest keine "kritischen" Sachen. Die meisten Bugfixes bezüglich 
Windows Server sind bereits in die RC2 reingeflossen. Der aktuelle Stand 
der Part-DB sollte nun wirklich auf den allermeisten Servern, die die 
Anforderungen erfüllen, laufen, und das ist ja das wichtigste. Kleine 
Bugs kanns natürlich immer haben.)

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
> @Udo
> Sieht schonmal gut aus soweit!
> Funktioniert das ganze auch schon wenn die angezeigten Ordner auch noch
> Unterordner haben? Wäre interessant, wenn du mal z.B. den Ordner
> "img/footprints" von Part-DB zu deinem Filemanager hinzufügen würdest
> :-)

Unterordner werden angezeigt und sind nutzbar, bis auf die Auswahl im 
Dialog. Um ins übergeordnete Verzeichnis zu kommen, muss man sich 
derzeit noch über die Verzeichnisauswahl links bemühen und kann nicht 
direkt zurück.

Vorläufige ToDo-Liste:
- Wechsel in das übergeordnete Verzeichnis in der Fileliste ermöglichen
- Unterordner in der Verzeichnisliste des Dialogs aufnehmen
- Fallback für den Upload integrieren

von Udo N. (weinbauer73)


Lesenswert?

Kleine Anmerkung: Da die Verzeichnisse in der config.php des 
Filemanagers definiert werden können, kann man zu jeder Aktion die 
mögliche Auswahl der Verzeichnisse vorgeben. Vom aktuellen Design her 
sind 5 Verzeichnisangaben sinnvoll, wobei die Klartextnamen nicht zu 
lange sein sollten.

von Udo N. (weinbauer73)


Lesenswert?

Udo Neist schrieb:
> Vorläufige ToDo-Liste:
> - Wechsel in das übergeordnete Verzeichnis in der Fileliste ermöglichen

Sollte jetzt einwandfrei funktionieren. Läuft im Hauptverzeichnismodus 
(gedacht für Admins) genauso wie bei definierten Verzeichnissen 
(Normalfall).

> - Unterordner in der Verzeichnisliste des Dialogs aufnehmen

Unterverzeichnisse werden angezeigt, allerdings fehlt noch die 
Einschränkung für definierte Verzeichnisse. Aktuell wird das 
Hauptverzeichnis an oberster Stelle und alle weiteren mit 
vorrangestellten "../" aufgelistet. Manchmal kommt es vor, dass die 
Verzeichnisliste nicht gleich zur Verfügung steht. Diese Liste wird 
immer (!) neu geladen, wenn ein entsprechender Dialog aufpoppt. 
Nachteilig nur bei großen Verzeichnistiefen und vielen Einträgen.

von Gelöscht (kami89)


Lesenswert?

So, ich habe jetzt grad nochmal den aktuellen Stand der Part-DB auf 
verschiedenen Systemen (Apache [Ubuntu], XAMPP [Win7], FF8 [Win7], FF22 
[Ubuntu], IE10 [Win7], Chromium 28 [Ubuntu]) ausprobiert. Sah soweit 
ganz gut aus, nur ein ganz kleiner Bugfix bezüglich dem IE habe ich noch 
ins SVN hochgeladen (r686).

Von meiner Seite würde ich jetzt das OK für das Release der 0.3.0 geben. 
Wenn niemand was dagegen hat, würde ich das dann vielleicht morgen oder 
übermorgen hochladen.

Wenn also jetzt noch jemand die RC2 NICHT auf seinem System getestet 
hat, auf dem er nachher die 0.3.0 laufen lassen möchte, wäre jetzt der 
letzte Zeitpunkt um dies zu tun. Nachher kanns wieder dauern bis das 
nächste Release kommt ;-)

mfg

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Hallo!

Ich warte immer noch, dass mal irgendwo eine Instanz installiert wird, 
die ich benutzen kann. Aber dazu müsste man mehrere Nutzer anlegen 
können.

Natürlich kann ich auch selbst eine anlegen, aber für mich allein lohnt 
sich das m.E. nicht.

http://code.google.com/p/part-db/issues/detail?id=8 steht seit einem 
Jahr im "Status: Started". Wie sieht's denn damit aus?

VG Torsten

von Gelöscht (kami89)


Lesenswert?

Hallo Torsten,

Torsten C. schrieb:
> Ich warte immer noch, dass mal irgendwo eine Instanz installiert wird,
> die ich benutzen kann. Aber dazu müsste man mehrere Nutzer anlegen
> können.

Da muss ich dich leider enttäuschen, das wird noch sehr lange dauern bis 
das wirklich fertig ist... Bis jetzt lag der Schwerpunkt halt auf der 
Version 0.3.0, und da war eigentlich schon lange klar dass hier noch 
keine Benutzerverwaltung reinkommt, somit hätte es keinen Sinn gemacht 
jetzt schon voll an der Benutzerverwaltung zu arbeiten.

Torsten C. schrieb:
> http://code.google.com/p/part-db/issues/detail?id=8 steht seit einem
> Jahr im "Status: Started". Wie sieht's denn damit aus?

Als ich die Part-DB auf objektorientierte Programmierung umgeschrieben 
habe, habe ich mir natürlich schonmal ein paar Gedanken über die 
Benutzerverwaltung gemacht. Es gibt in Part-DB bereits jetzt die Klassen 
"User" und "Group", welche fest im OOP Design verankert sind. Heisst 
konkret, alle möglichen Klassen und Funktionen haben bereits eine 
Referenz zum angemeldeten Benutzer zur Verfügung. Damit ist quasi der 
Grundstein gelegt, jetzt müssen "nur noch" die Klassen "User" und 
"Group" ausgestattet werden, und alle anderen Funktionen müssen Gebrauch 
davon machen indem Sie die Rechte vom angemeldeten Benutzer abfragen und 
berücksichtigen.

Der Aufwand für eine "normale" Benutzerverwaltung (Lese-/Schreibrechte) 
ist ja noch einigermassen überschaubar (gibt schon sehr viel Arbeit, 
vieles ist aber nicht wahnsinnig kompliziert sondern eher Fleissarbeit). 
Die Benutzerverwaltung für eine öffentliche Part-DB Installation, in der 
alle Benutzer zwar auf die selben Teile zugreifen, aber unterschiedliche 
Lagerbestände, Lagerorte, Baugruppen usw. haben, macht die ganze 
Geschichte aber extrem kompliziert. Das wird echt nicht einfach, und 
wird daher auch viel Zeit benötigen...

Ausserdem sollte es mMn schlussendlich möglichst nicht zwei 
verschiedene Benutzerverwaltungen geben, sondern eine 
Benutzerverwaltung, die halt beides kann. Heisst dann also, wenn man 
einen neuen Benutzer anlegt, muss man halt wählen ob dieser Benutzer 
z.B. seine eigenen Lagerorte haben sollte, oder ob es die "allgemeinen" 
Lagerorte verwenden soll. Ersteres wäre für die "Online-Part-DB für 
jedermann", Zweiteres wäre z.B. für eine Firma.

von Udo N. (weinbauer73)


Lesenswert?

Ich muss Urban beipflichten, denn der Code der 0.2.x war für die 
Integration einer Benutzerverwaltung einfach nicht nutzbar. Ursprünglich 
war die Part-DB ja nur ein kleines Hilfsmittel für zu Hause und nicht 
für größere Gruppen oder sogar Firmen gedacht. Diese Möglichkeiten kamen 
dann mit der Übernahme der Entwicklung durch ein neues Team und der 
0.2er Version. Hier war der Code allerdings weiterhin ein wirres 
Durcheinander und nur für Insider irgendwie wart- und erweiterbar. Die 
Diskussion hatten wir ja auch schon geführt, wie die Weiterentwicklung 
laufen sollte. Ich bin ja mit dem Ziel der Integration der 
Benutzerverwaltung dazu gekommen, habe aber schnell gemeckert, dass ich 
mit dem Code so nichts anfangen kann. Ich habe testweise einige der 
Templates in meinen eigenen Branch erstellt und Urban hat den Code auf 
OOP umgestellt. Bei der Zusammenführung der beiden Zweige wurde dann als 
Ziel die funktionsgleiche Umschreibung von Part-DB ausgegeben. Ein paar 
Neuerungen kamen mittlerweile auch dazu, die allerdings nur 
"geringfügige" Änderungen im Code waren. Eine Benutzerverwaltung wäre 
für dieses Umschreiben ein zu großer Eingriff gewesen. Daher steht das 
für die nächste Version an. Wie genau diese dann implementiert wird, das 
werden wir hier sicher in der nächsten Zeit diskutieren. Zudem wird das 
alte Frame-Konzept dann durch moderne Ajax-Technik abgelöst. Die 
Vorarbeiten dazu habe ich mit dem neuen Filemanager bereits gestartet.

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Urban B. schrieb:
> Da muss ich dich leider enttäuschen, das wird noch sehr lange dauern bis
> das wirklich fertig ist...

Hallo Udo, hallo Urban,

danke für die ausführliche und verständliche Antwort. Ich muss mir nun 
überlegen, wie ich kurzfristig damit umgehe. Ich habe heute z.B. gerade 
festgestellt, dass ich auf die Lieferung von drei ICs gar nicht warten 
muss, weil ich fünf pinkompatible noch auf dem Dachboden habe. Ich hätte 
die drei gar nicht bestellen müssen. :-(

VG Torsten

von Gelöscht (kami89)


Lesenswert?

So, habe soeben die finale Version 0.3.0 hochgeladen:
https://code.google.com/p/part-db/downloads/detail?name=Part-DB_0.3.0.tar.gz

Viel Spass damit! ;-)


Übrigens kann ich die nächsten 4 Wochen nicht viel an der Part-DB 
arbeiten, da wiedermal Semesterprüfungen sind... Hier im Forum bin ich 
aber immer für Fragen erreichbar, das ist kein Problem.

mfg

von Udo N. (weinbauer73)


Lesenswert?

Der Filemanager dürfte jetzt weitgehends fertig sein. Der Upload wird 
jetzt bei allen Browsern ohne FormData-Support durch ein IFrame 
bewerkstelligt. Zumindest lief der Test mit dem IE8 unter WinXP 
erfolgreich. Bitte testet es aus. Bei Auftreten eines Fehlers bitte ein 
Screenshot (Bildformate beachten!) anfügen, eine Kurzbeschreibung der 
Aktion und Infos zum Browser angeben.

http://phpbookworm.singollo.de/project/part-db/

Grüße
Udo

Edit: Beim Upload kann die Funktion "Zum Zielverzeichnis wechseln" 
zusätzliche Files anzeigen, die nicht den erlaubten Typen des 
Elternverzeichnisses entsprechen. Im Moment ist die durchgängige 
Weitergabe von Typen noch nicht gegeben.

von Gerald *. (pyromane)


Angehängte Dateien:

Lesenswert?

Folgende Fehler konnte ich entdecken:

Opera + FF:
Nutzt man "Nach Upload ins Zielverzeichnis wechseln" so wird nach dem 
Upload bei keinem Bild ein Vorschaubild geladen oder auch Dateiinfos 
angezeigt(siehe Opera).
Wechselt man jedoch direkt mittels "Filemanager (gleiche Seite)" in das 
Verzeichnis werden die entsprechenden Daten jedoch angezeigt(siehe 
Opera2)

IE:
"Filemanager (gleiche Seite)" führt zu einer "undefined" Meldung im 
rechten Anzeigebereich (siehe IE_seite)
"Filemanager (per Popup)" führt zu einem leeren PopUp (siehe IE_popup)
"Inhalt löschen" zeigt nur einen leeren rechten Anzeigebereich (siehe 
IE_loeschen)

Testumgebung:
Windows Vista 32 Bit
Opera 12.15
Firefox 22.0
Internet Explorer 9

von Stefan . (xin)


Lesenswert?

Ich hatte heute endlich mal Zeit, die neue Version der part-db zu 
installieren, nachdem die Alte doch etwas in die Jahre gekommen ist.
Leider ist die Installation auf Debian einfach nur zusammengewürfelter 
Mist. Nach nun 3 Stunden und unendlichen
rm -rf part-db
su root
tar xfv Part.tar.gz
ist es mir nicht gelungen, die Abfrage der Dateirechte zu überwinden. 
Bei mir läuft ein Confixx, so dass der Benutzer nicht zwangsläufig 
www-data ist. Die Gruppe auf www-data zu belassen und den Benutzer 
-nicht rekursiv- auf web0 zu setzen hat zumindest die Pfade der 
Dokumentation aus der roten Liste verschwinden lassen, aber die Parts 
sind hartnäckig.

Ich habe im Laufe der Zeit sicher mehr als 100 verschiedene 
Web-Applikationen zum Laufen gebracht, aber so ein widerspenstiges Zeug 
ist mir noch nicht untergekommen ...

Schade - hatte mich sehr darauf gefreut !

von Udo N. (weinbauer73)


Lesenswert?

Gerald *. schrieb:
> Folgende Fehler konnte ich entdecken:
>
> Opera + FF:
> Nutzt man "Nach Upload ins Zielverzeichnis wechseln" so wird nach dem
> Upload bei keinem Bild ein Vorschaubild geladen oder auch Dateiinfos
> angezeigt(siehe Opera).
> Wechselt man jedoch direkt mittels "Filemanager (gleiche Seite)" in das
> Verzeichnis werden die entsprechenden Daten jedoch angezeigt(siehe
> Opera2)

Das schaue ich mir mal an. Das diese Funktion nicht ganz sauber 
funktioniert, hatte ich ja schon angedeutet. Vielleicht spinnt hier die 
Tokenabsicherung.

> IE:
> "Filemanager (gleiche Seite)" führt zu einer "undefined" Meldung im
> rechten Anzeigebereich (siehe IE_seite)
> "Filemanager (per Popup)" führt zu einem leeren PopUp (siehe IE_popup)
> "Inhalt löschen" zeigt nur einen leeren rechten Anzeigebereich (siehe
> IE_loeschen)
>
> Testumgebung:
> Windows Vista 32 Bit
> Opera 12.15
> Firefox 22.0
> Internet Explorer 9

Ich werde dann doch mal Win7 in Virtualbox installieren müssen. Ich 
hatte mit IE8 getestet und es lief. Ist wohl wieder mal eine 
JS-Inkompatibilität zu Javascript.

von Udo N. (weinbauer73)


Lesenswert?

Nachtrag: "Inhalt löschen" löscht nur den rechten Bereich ("Content") 
der Webseite und hat sonst keine Funktion :)

von Udo N. (weinbauer73)


Lesenswert?

> Opera + FF:
> Nutzt man "Nach Upload ins Zielverzeichnis wechseln" so wird nach dem
> Upload bei keinem Bild ein Vorschaubild geladen oder auch Dateiinfos
> angezeigt(siehe Opera).
> Wechselt man jedoch direkt mittels "Filemanager (gleiche Seite)" in das
> Verzeichnis werden die entsprechenden Daten jedoch angezeigt(siehe
> Opera2)

Den Fehler konnte ich beheben. Es war ein Folgefehler der Umstellung der 
Verzeichnisdarstellung in der Liste. Das übergebene Verzeichnis wurde 
falsch zusammengebaut und daher versuchte das Script eine nicht 
vorhandene Datei darzustellen. In diesem Zuge habe ich den dafür 
ursprünglich angedachten 404-Fehler durch eine andere Meldung ersetzt.

von Gelöscht (kami89)


Lesenswert?

Stefan --- schrieb:
> Leider ist die Installation auf Debian einfach nur zusammengewürfelter
> Mist. Nach nun 3 Stunden und unendlichen
> rm -rf part-db
> su root
> tar xfv Part.tar.gz
> ist es mir nicht gelungen, die Abfrage der Dateirechte zu überwinden.

Na na, also ich hab extra mal ein Debian in einer VM installiert und die 
Installation streng nach der Doku durchgeführt. Bei mir klappte das 
alles ohne Probleme ;-) Auch auf meinem gemieteten Webserver, auf dem 
anscheinend Confixx läuft (was ich nicht kenne) läuft die Part-DB 
einwandfrei (Dateien per FTP hochgeladen).

Mit "Abfrage der Dateirechte" meinst du die Meldung von Part-DB, oder?
1
Das Verzeichnis bzw. die Datei "xyz" hat nicht die richtigen Dateirechte! Benötigt werden "rw". Bitte manuell korrigieren.

Stefan --- schrieb:
> Bei mir läuft ein Confixx, so dass der Benutzer nicht zwangsläufig
> www-data ist. Die Gruppe auf www-data zu belassen und den Benutzer
> -nicht rekursiv- auf web0 zu setzen hat zumindest die Pfade der
> Dokumentation aus der roten Liste verschwinden lassen, aber die Parts
> sind hartnäckig.

Es müsste eigentlich ganz einfach sein. Alle Dateien müssen demjenigen 
Benutzer gehören, unter dem der Webserver läuft. Bei dir anscheinend 
"web0" wenn ich dich richtig verstehe. Da muss nichts auf "www-data" 
belassen werden, das ist im Archiv einfach so voreingestellt weil das 
bei vielen Linux Distributionen halt der Benutzer ist, unter dem der 
Webserver läuft.
Wenn du das Archiv mit dem Befehl aus der Doku extrahiert hast, müssten 
jetzt auch schon die Dateirechte stimmen, da die im Archiv bereits 
richtig gesetzt waren. Somit müsste Part-DB jetzt problemlos laufen.

Falls du die Dateirechte selber setzt (aus irgend einem Grund...) musst 
du natürlich darauf achten, dass die immer rekursiv gesetzt werden. In 
den Verzeichnissen "data" müssen alle Dateien auf 644, und alle 
Verzeichnisse auf 755 gesetzt sein.

Du hast die Doku schon gelesen, oder?
http://www.partdb.grautier.com/svn/documentation/dokuwiki/doku.php
Da gibts sogar extra alle Befehle die man braucht, um die 
Dateirechte/Besitzer manuell einzustellen. In deinem Fall müsstest du 
nur noch das "www-data" durch "web0" ersetzen.
1
cd /var/www
2
sudo chown -R www-data:www-data part-db
3
find part-db -type d -print0 | sudo xargs -0 chmod 555
4
find part-db -type f -print0 | sudo xargs -0 chmod 444
5
find part-db/data -type d -print0 | sudo xargs -0 chmod 755
6
find part-db/data -type f -print0 | sudo xargs -0 chmod 644
7
find part-db/documentation/dokuwiki/data -type d -print0 | sudo xargs -0 chmod 755
8
find part-db/documentation/dokuwiki/data -type f -print0 | sudo xargs -0 chmod 644

Aber wie gesagt, wenn das Archiv mit
1
sudo tar xzf part-db.tar.gz -C /var/www
entpackt wird, ist das Ändern der Dateirechte überflüssig (es sei denn, 
du entpackt die Dateien irgendwo hin, wo keine UNIX Dateirechte 
unterstützt werden - das wäre auf einem Linux/UNIX aber sowieso nicht 
sehr geschickt).

Stefan --- schrieb:
> Ich habe im Laufe der Zeit sicher mehr als 100 verschiedene
> Web-Applikationen zum Laufen gebracht, aber so ein widerspenstiges Zeug
> ist mir noch nicht untergekommen ...

Das liegt vielleicht auch daran, dass viele Web-Applikationen sich nicht 
für Dateirechte interessieren. Erst wenn dann wirklich mal das 
Schreibrecht gebraucht wird, aber nicht vorhanden ist, wird eine Meldung 
ausgegeben. Part-DB prüft halt bei jedem Aufruf schon ganz am Anfang, ob 
die benötigten Rechte vorhanden sind. Ist aber ja kein Problem, wenn die 
Rechte einmal eingestellt sind kommt diese Meldung nie wieder.

Ausserdem sind bei anderen Applikationen häufig die Dateirechte im 
Archiv noch gar nicht richtig gesetzt - keine Ahnung warum, Ich dachte, 
so ists doch einfacher und sicherer, wenn nach dem Entpacken schon alles 
(Besitzer und Rechte) stimmt. So kann ein Laie nicht viel falsch 
machen... Die Doku lesen ist bei Webapplikationen sowieso (mMn) immer 
Pflicht (zumindest überfliegen), da jede Applikation wieder ganz anders 
installiert werden möchte. Bei einigen steht in der Doku sogar, dass man 
die Dateirechte noch auf XY einstellen muss, überprüft wird es nachher 
aber nicht (OK mittlerweile ist das nicht mehr so schlimm wie früher). 
So ist doch schon vorprogrammiert dass viele Leute die Dateirechte nicht 
entsprechend setzen. Ist alles im Archiv schon richtig gesetzt, kann das 
nicht passieren.

Ansonsten wüsste ich nicht, was an Part-DB widerspenstig sein 
sollte...Ich habe die Installation von Part-DB jetzt schon über ein 
Dutzend Mal und auf verschiedenen Servern installiert, und hatte nie 
Probleme ;-)

Wenn du es immernoch nicht hinkriegst, erkläre Schritt für Schritt was 
du machst (Terminal Befehle!), und was für Fehler auftreten 
(Fehlermeldungen!). Bisher konnte ich nur raten, was dein Problem ist, 
da die Informationen in deinem Beitrag leider etwas spärlich sind...

mfg

von Stefan . (xin)


Lesenswert?

Vielen Dank für die Ausführlichen Infos und Kommentare.

Ich mache also Folgendes:
- Lade die letzte Version
https://code.google.com/p/part-db/downloads/detail?name=Part-DB_0.3.0.tar.gz
- benenne das Archiv um in part.tar.gz um und schiebe es via FTP in das 
Verzeichnis www/web0/html/
- mit putty melde ich mich als web0 an, gehe in das html/ Verzeichnis 
und entpacke das Archiv mit tar xfv part.tar.gz
- dann lösche ich die part-db/.htaccess, da ich sonst einen Servererror 
500 bekomme. Erstelle den Verzeichnisschutz später selbst
- beim Aufruf von domain.de/part-db/ wird dann gequengelt, dass data/... 
und dokumentation/... nicht die richtigen Rechte haben.

Alle Dateien haben als Besitzer www-data erhalten.

Ändere ich nun für 'Dokumentation' rekursiv den Besitzer auf web0, dann 
verschwindet zumindest dieser Zweig aus der Liste.

Mache ich das Gleiche auch für 'data' verschwindet auch hier alles, bis 
auf data selbst.

Nun lösche ich das ganze Verzeichnis und entpacke das Archiv noch einmal 
als root. Wieder werden die gleichen Verzeichnisse angemahnt. Wieder das 
gleiche Verhalten.

Der Aufruf der Dokumentation dauert eine ganze Weile und wirft dann 
massenhaft Fehlermeldungen:
Creating directory 
/var/www/web0/html/part-db/documentation/dokuwiki/data/cache/9 failed
Writing 
/var/www/web0/html/part-db/documentation/dokuwiki/data/cache/9/9a18521c4 
60d062d1e019fd5077a490b.i  failed
Unable to save cache file. Hint: disk full; file permissions; safe_mode 
setting.
Writing 
/var/www/web0/html/part-db/documentation/dokuwiki/data/cache/9/9a18521c4 
60d062d1e019fd5077a490b.metadata  failed
Creating directory 
/var/www/web0/html/part-db/documentation/dokuwiki/data/cache/c failed
installation
Creating directory 
/var/www/web0/html/part-db/documentation/dokuwiki/data/cache/9 failed
Creating directory 
/var/www/web0/html/part-db/documentation/dokuwiki/data/cache/9 failed
Creating directory 
/var/www/web0/html/part-db/documentation/dokuwiki/data/cache/9 failed
Writing 
/var/www/web0/html/part-db/documentation/dokuwiki/data/cache/9/9a18521c4 
60d062d1e019fd5077a490b.i  failed
Unable to save cache file. Hint: disk full; file permissions; safe_mode 
setting.
Creating directory 
/var/www/web0/html/part-db/documentation/dokuwiki/data/cache/c failed
Creating directory 
/var/www/web0/html/part-db/documentation/dokuwiki/data/cache/c failed
Writing 
/var/www/web0/html/part-db/documentation/dokuwiki/data/cache/c/c12087918 
8ac7f402d954ad156659fe7.code  failed
Creating directory 
/var/www/web0/html/part-db/documentation/dokuwiki/data/cache/6 failed
Creating directory 
/var/www/web0/html/part-db/documentation/dokuwiki/data/cache/6 failed
Writing 
/var/www/web0/html/part-db/documentation/dokuwiki/data/cache/6/6099c0c3e 
fb701c24e30c06a09512dd0.code  failed
Creating directory 
/var/www/web0/html/part-db/documentation/dokuwiki/data/cache/7 failed
Creating directory 
/var/www/web0/html/part-db/documentation/dokuwiki/data/cache/7 failed
Writing 
/var/www/web0/html/part-db/documentation/dokuwiki/data/cache/7/7d38b86b4 
5418b4ce60728dcba6ed6ef.code  failed
Creating directory 
/var/www/web0/html/part-db/documentation/dokuwiki/data/cache/9 failed
Writing 
/var/www/web0/html/part-db/documentation/dokuwiki/data/cache/9/9a18521c4 
60d062d1e019fd5077a490b.xhtml  failed

Setze ich den Besitzer nun als web0 für alle Dateien und Verzeichnisse, 
sind data... und dokumentation... wieder rot !

Ich denke nicht, dass man eine solchen Installation Daten anvertrauen, 
bzw. erst langwierig Daten einpflegen sollte. Was, wenn ein Update 
erforderlich ist oder was läuft hier noch alles unrund, was evtl. 
Anfangs nicht bemerkt wird !?

von Gelöscht (kami89)


Lesenswert?

Okay also irgendwas geht da nicht auf. Hast du auch wirklich mal die 
Terminal Befehle für das Setzen der Besiter/Gruppen/Rechte genau so 
ausgeführt wie in der Doku beschrieben (einfach "www-data" vorher durch 
"web0" ersetzt)?

Etwas verstehe ich aber nicht:
Bei deinem zweiten Versuch hat also Part-DB nicht mehr wegen 
"/documentation/dokuwiki/data/cache/" gemeckert? Heisst dann also, dass 
die Funktion is_writable() bei diesem Verzeichnis "true" lieferte. 
Trotzdem meckerte nachher das DokuWiki, dass dort keine Schreibrechte 
vorhanden sind?!

Vielleicht hilft folgender kleiner Test weiter:
Du erstellst eine Datei "test.php" auf dem Server, mit folgendem Inhalt:
1
<?php
2
$process_user = @posix_getpwuid(posix_geteuid());
3
echo 'Prozess-Benutzer: ' . posix_geteuid() . ' ('. (isset($process_user['name']) ? $process_user['name'] : '') . ')<br>';
4
echo 'Besitzer: ' . getmyuid() . ' (' . get_current_user() . ')<br>';
5
echo 'Leserechte : ' . (is_readable('test.php') ? 'true' : 'false') . '<br>';
6
echo 'Schreibrechte: ' . (is_writable('test.php') ? 'true' : 'false') . '<br>';
7
echo 'Dateirechte: ' . substr(sprintf('%o', fileperms('test.php')), -4) . '<br>';
8
?>

Dann Besitzer/Gruppe auf "web0" und die Dateirechte auf "644" stellen:
1
chown web0:web0 test.php
2
chmod 644 test.php

Nun die Seite im Browser aufrufen und die Ausgabe hier posten. 
Vielleicht sieht man da ja was auffälliges.

Ausserdem könntest du noch folgendes ausprobieren:
Zuerst ALLE Dateien/Verzeichnisse dem Besitzer und Gruppe "web0" 
zuordnen und alle Rechte gemäss Doku korrekt setzen! Dann in der 
start_session.php mal die Zeile
1
$messages = check_file_permissions();
durch diese hier ersetzen:
1
$messages = array();
Damit wird einfach die Überprüfung der Rechte abgeschaltet. Und dann 
schau mal, ob du die Installation fortsetzen kannst (der Installer 
reklamiert dann einfach wenn er zu wenig Schreibrechte hat um die 
data/config.php zu erstellen).

Stefan --- schrieb:
> Ich denke nicht, dass man eine solchen Installation Daten anvertrauen,
> bzw. erst langwierig Daten einpflegen sollte. Was, wenn ein Update
> erforderlich ist oder was läuft hier noch alles unrund, was evtl.
> Anfangs nicht bemerkt wird !?

Es ist alleine dir überlassen, ob du Part-DB verwenden willst oder nicht 
;-) Ausserdem ist keine Software auf dieser Welt fehlerfrei, deshalb 
sollte man auch bei der besten Software regelmässig die Daten sichern. 
Ich habe mir beim programmieren wirklich Mühe gegeben und habe sehr 
viele Stunden investiert, um alle möglichen Konstellationen einmal 
durchzutesten. Auf der von mir eingesetzten Infrastruktur konnte ich in 
der Part-DB keine Fehler mehr finden, mehr kann ich auch nicht machen.

Ausserdem wurde die 0.3.0 RC2 laut Google Code insgesamt 57 Mal 
runtergeladen, und keiner hat sich hier über solche 
Installationsprobleme beschwert...
Scheint also bei den meisten Anwendern zu funktionieren ;-)

Nachtrag:
Da wir Entwickler nur eine beschränkte Infrastruktur zum Testen zur 
Verfügung haben (wir können nicht alle auf der Welt erhältlichen 
Webserver testen!), sind wir auch auf die Mithilfe von freiwilligen 
Testern angewiesen. Deshalb gibt es ja auch die Release Kandidaten. Dank 
den Rückmeldungen der Tester konnten wir seit der RC1 noch viele Fehler 
beseitigen. Vielleicht gibt es in Part-DB tatsächlich ein Fehler, der 
sich nur bei Installationen in Confixx (das ich nicht kenne) bemerkbar 
macht. Wenn wir einen solchen Fehler finden können, fliesst der 
natürlich direkt in das nächste Update von Part-DB, damit das Problem in 
Zukunft nicht mehr auftritt.

von Gelöscht (kami89)


Lesenswert?

Moment mal - Ich habe gerade deinen Beitrag nochmal gelesen und bin 
jetzt noch verwirrter als vorher.

Urban B. schrieb:
> Bei deinem zweiten Versuch hat also Part-DB nicht mehr wegen
> "/documentation/dokuwiki/data/cache/" gemeckert?

Das hast du so ja gar nicht geschrieben, allerdings kam ich wohl wegen 
diesem Satz auf diese Annahme:

Stefan --- schrieb:
> Setze ich den Besitzer nun als web0 für alle Dateien und Verzeichnisse,
> sind data... und dokumentation... wieder rot !

Das "wieder" würde ja bedeuten, dass diese Verzeichnisse vorher nicht 
"rot" waren. Doch eigentlich hast du genau das Gegenteil geschrieben:

Stefan --- schrieb:
> Nun lösche ich das ganze Verzeichnis und entpacke das Archiv noch einmal
> als root. Wieder werden die gleichen Verzeichnisse angemahnt.

Wenn ich nicht schon wieder was falsch verstanden habe, sind das 
widersprüchliche Aussagen deinerseits. Erst sagst du, der Rechte-Check 
meckert, dann sagst du, wenn du den Besitzer der Dateien auf "web0" 
änderst, fängt der Rechte-Check wieder an zu meckern (obwohl er nie 
aufgehört hat damit). So ist die Fehlersuche nicht leicht für mich... 
;-)

von Stefan . (xin)


Lesenswert?

ist blöd und verwirrend - ich bin aus dem Verhalten auch nicht schlau 
geworden. Ich ändere data/ rekursiv auf web0 und alle data/subs 
verschwinden aus der Liste. Ändere ich dokumentation/ rekursiv auf web0 
und dokumentation verschwindet komplett. Setze ich das komplette 
Verzeichnis part-db auf web0, sind wieder alle, also data und 
dokumentation rot.

Hier die Ausgabe nachdem ich die test.php über FTP geschoben habe:
Prozess-Benutzer: 133 (www-data)
Besitzer: 647 (web0)
Leserechte : true
Schreibrechte: false
Dateirechte: 0644

Du magst nicht mal auf den Server schauen ?

von Gelöscht (kami89)


Lesenswert?

Stefan --- schrieb:
> Hier die Ausgabe nachdem ich die test.php über FTP geschoben habe:
> Prozess-Benutzer: 133 (www-data)

Das ist interessant. Dein Webserver läuft also NICHT unter dem Benutzer 
"web0", sondern unter "www-data"! Daher kommt dann das hier:

Stefan --- schrieb:
> Schreibrechte: false

Jetzt könntest du natürlich mal versuchen, den Besitzer der test.php 
nach "www-data" zu ändern:
1
sudo chown www-data:www-data test.php

Danach sollte der Webserver theoretisch Schreibrechte an dieser Datei 
haben. Genau so sollte es sich eigentlich auch bei Part-DB verhalten.

Stefan --- schrieb:
> Du magst nicht mal auf den Server schauen ?

Doch kann ich machen, schick mir einfach mal eine PN dann können wir per 
Mail weiter kommunizieren, statt hier den Thread zu "belästigen".

Leider kenne ich die Infrastruktur von Hostern nicht wirklich, ich weiss 
nicht wie die sich das vorstellen wie das funktionieren soll. Wenn der 
Webserver unter dem gleichen Benutzer läuft wie der FTP-Upload (so ist 
es bei meinem Hoster), ist alles klar, dann genügen die Dateirechte 644 
damit ein PHP Skript eine andere Datei beschreiben kann. Läuft jedoch 
beides auf unterschiedlichen Benutzern, genügen 644 ja nicht mehr, dann 
brauchts je nachdem entweder 664 oder sogar 666, damit der Webserver 
Schreibrechte erhält. Anscheinend soll es ja Hoster geben, bei denen das 
so ist (?). Allerdings müsste man dann ja alle "data" Verzeichnisse 
(egal ob von Part-DB, irgendeinem CMS oder sonstwas) auf 777 stellen 
damit die Applikation richtig läuft, doch sicherheitstechnisch ist das 
doch alles andere als ideal...Naja, vielleicht taucht hier ja mal jemand 
auf der sich damit auskennt und uns aufklären kann :-)

von Udo N. (weinbauer73)


Lesenswert?

Manchmal reicht es auch, anstelle des Users www-data die entsprechende 
Gruppe und dementsprechende Rechte zu vergeben. Da ich selbst kein 
Debian verwende -  ich nutze openSUSE - kann ich leider nicht sagen, wie 
die Gruppe heißt. Steht das nicht irgendwo in der Hilfe für den 
Webspace? Aber eigentlich müsste das auch im FTP angezeigt werden.

PS: Der Upload im Filemanager läuft auch im IE10. Der hatte sich noch 
über overrideMimeType beschwert.

von Gelöscht (kami89)


Lesenswert?

OK also wir konnten die Ursache finden. Und zwar war das Problem, dass 
die PHP Funktion is_executable() anscheinend bei Verzeichnissen immer 
"false" lieferte, auch wenn das executable bit gesetzt war.

In der offiziellen Doku wird davon leider nichts erwähnt. Leider habe 
ich aber nicht gesehen, dass dort ein User einen interessanten Kommentar 
geschrieben hat:

> The change doesn't appear to be documented, so I thought I would mention
> it. In php5, as opposed to php4, you can no longer rely on is_executable
> to check the executable bit on a directory in 'nix. You can still use
> the first note's method to check if a directory is traversable:
>    @file_exists("adirectory/.");

sieht zwar irgendwie mehr nach einem Workaround aus, aber wenns 
funktioniert^^

Ich frage mich allerdings, ob es sich lohnt dafür eine neue Version 
0.3.1 rauszugeben. Bisher hat sich ja noch niemand über dieses Problem 
beschwert, bei den meisten PHP Installationen scheint is_executable() 
also nach wie vor auch mit Verzeichnissen zu funktionieren...

von Udo N. (weinbauer73)


Lesenswert?

Ich würde jetzt keine neue Version herausbringen, sondern eine passende 
Lösung z.B. mit is_dir() oder is_file() in den 0.3er Zweig einbauen und 
als neue Revision freigeben. Es ist bleibt wohl ein Sonderfall und ist 
meiner Meinung nach nicht wichtig genug für ein Bugfix. Am besten 
sammeln wir bis Ende August alle Meldungen und entscheiden dann, ob eine 
neue Revision notwendig wird. Dann könnten wir die weitere Entwicklung 
starten und die aktuelle Version als 0.3er Branch weiter führen. Das 
käme mir auch zu Gute, denn ich hab diesen Monat eine andere Webseite 
umzustellen und könnte da zumindest den Ajax- und DOM-Teil des 
Javascript-Framework des Filemanagers ausgiebig testen :)

Edit: is_writable() zum Prüfen, ob das Verzeichnis beschreibbar ist, ist 
auch sinnvoll ;) Allerdings scheinen die Datei-/Verzeichnisoperationen 
teilweise völlig unterschiedliche Ergebnisse unter *nix und Windows zu 
bringen, obwohl das nicht wirklich sinnig ist. 
http://stackoverflow.com/questions/109188/how-do-i-check-if-a-directory-is-writeable-in-php

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Ich würde jetzt keine neue Version herausbringen, sondern eine passende
> Lösung z.B. mit is_dir() oder is_file() in den 0.3er Zweig einbauen und
> als neue Revision freigeben. Es ist bleibt wohl ein Sonderfall und ist
> meiner Meinung nach nicht wichtig genug für ein Bugfix.

Jo, sehe ich momentan auch so. Falls sich noch mehr Leute mit dem selben 
Problem melden, können wir immernoch ein offizielles Update rausgeben.


Udo Neist schrieb:
> Edit: is_writable() zum Prüfen, ob das Verzeichnis beschreibbar ist, ist
> auch sinnvoll ;)
Schreibrechte alleine genügen aber nicht, um Dateien in einem 
Verzeichnis zu erstellen/bearbeiten. Dazu ist immer auch das "executable 
bit" nötig, also die Ausführrechte (die bei Verzeichnissen eine andere 
Funktion haben als bei Dateien). Es macht also schon Sinn, die 
Ausführrechte zu prüfen. Was hingegen keinen Sinn macht, ist das 
kastrieren der is_executable() Funktion, so dass diese nur noch mit 
Dateien funktioniert... ;-) Was die sich dabei wohl überlegt haben?!


Übrigens bezüglich Branches hätte ich das folgendermassen gedacht:
- Die finale 0.3.0 liegt als Kopie in tags/ und bleibt dort unangetastet
- Die weitere Entwicklung an der 0.3.0 findet wie gewohnt im trunk statt
- Es kommen grundsätzlich erstmal KEINE grossen Neuerungen (z.B. 
Benutzerverwaltung, Barcode-Tools, Filemanager) in den trunk. Jedes 
dieser Features soll seinen eigenen Branch kriegen, der vom trunk 
abgeleitet wird. Erst wenn ein solches Feature bereit zum testen ist 
(funktionierend, kann aber ruhig noch Fehler enthalten) wird es in den 
trunk übernommen. Sobald im trunk dann die neuen Features als stabil 
betrachtet werden können, kann ein neues Release herausgegeben werden.
- Ich werde gleich noch einen Branch für den Zweig "0.3.x" erstellen. 
Wenn es später mal Updates für die 0.3.0 geben soll (nur Bugfixes!), 
sollen die Bugfixes erst in den trunk aufgenommen, und vom trunk dann in 
den "0.3.x" Branch übernommen werden. So ist immer ein Branch bereit, um 
ein Update für die 0.3er Versionen zu erstellen (der trunk ist dafür ja 
nicht brauchbar, da dieser nicht immer stabil ist).

mfg

von Udo N. (weinbauer73)


Lesenswert?

> Udo Neist schrieb:
>> Edit: is_writable() zum Prüfen, ob das Verzeichnis beschreibbar ist, ist
>> auch sinnvoll ;)
> Schreibrechte alleine genügen aber nicht, um Dateien in einem
> Verzeichnis zu erstellen/bearbeiten. Dazu ist immer auch das "executable
> bit" nötig, also die Ausführrechte (die bei Verzeichnissen eine andere
> Funktion haben als bei Dateien). Es macht also schon Sinn, die
> Ausführrechte zu prüfen. Was hingegen keinen Sinn macht, ist das
> kastrieren der is_executable() Funktion, so dass diese nur noch mit
> Dateien funktioniert... ;-) Was die sich dabei wohl überlegt haben?!

Obwohl ich Linux seit Jahren benutze, denk ich an sowas manchmal gar 
nicht mehr. Stimmt schon, es muss wenigstens wx gesetzt sein, damit man 
schreiben kann. Also muss man wohl einen Wrapper dafür schreiben.

> Übrigens bezüglich Branches hätte ich das folgendermassen gedacht:
> - Die finale 0.3.0 liegt als Kopie in tags/ und bleibt dort unangetastet
> - Die weitere Entwicklung an der 0.3.0 findet wie gewohnt im trunk statt
> - Es kommen grundsätzlich erstmal KEINE grossen Neuerungen (z.B.
> Benutzerverwaltung, Barcode-Tools, Filemanager) in den trunk. Jedes
> dieser Features soll seinen eigenen Branch kriegen, der vom trunk
> abgeleitet wird. Erst wenn ein solches Feature bereit zum testen ist
> (funktionierend, kann aber ruhig noch Fehler enthalten) wird es in den
> trunk übernommen. Sobald im trunk dann die neuen Features als stabil
> betrachtet werden können, kann ein neues Release herausgegeben werden.

Im Grunde das gleiche wie ich es mir gedacht habe. Ich kopieren mir dann 
den aktuellen Stand in meinen Branch und fange zwischenzeitlich mal an, 
die Frames zu entfernen und auf Ajax/DOM umzustellen.

von Gelöscht (kami89)


Lesenswert?

Verdammt! Ich habe wiedermal Mist gebaut im SVN Repository^^
Anscheinend habe ich die Änderung r689 im falschen Verzeichnis gemacht, 
das hätte eigentlich nicht im trunk sondern im tags geändert werden 
müssen...Vermutlich habe ich den falschen Ordner erwischt beim hochladen 
ins SVN...

Ich versuchs dann mal wieder hinzubiegen ;-) Sorry!

von Udo N. (weinbauer73)


Lesenswert?

Fehler passieren ;-) SVN wollte den Trunk nicht in mein Branch kopieren, 
also erst einmal meinen alten Branch löschen und einen neuen 
"part-db-uneist" erstellen.

von Gelöscht (kami89)


Lesenswert?

lol OK ich habe grad den Fehler gefunden, ich habe meine lokale Kopie 
von tag "Part-DB-0.3.0" aus dem trunk gezogen...schon klar landen dann 
die Änderungen nicht dort wo sie sollten -.-
Glücklicherweise habe ich aber das Release-Paket dann auch aus dem Trunk 
erstellt, und nicht aus dem tags/Part-DB-0.3.0 ;-)
Zwei Fehler nacheinander heben sich halt wieder auf xD

Also ich bins grad wieder am korrigieren, es sind nur ein paar Dateien 
die ich damals gelöscht habe, die kann ich aber wieder herstellen.

von Udo N. (weinbauer73)


Lesenswert?

Hehe... So lösen sich die Probleme langsam auf.

Ich hab mir mal die paar Javascriptdateien angeschaut. Ein paar der 
Funktionen hab ich in meiner dom.js bereits drin bzw. sind sehr ähnlich, 
andere könnte ich übernehmen. Man müsste auch schauen, ob die Funktionen 
überhaupt noch gebraucht werden oder ob sie ersetzt werden könnten. 
Einheitlicher wäre hier auch besser :-)

von Gelöscht (kami89)


Lesenswert?

So, jetzt sollte alles wieder im Butter sein (r696).

Udo Neist schrieb:
> Ich hab mir mal die paar Javascriptdateien angeschaut. Ein paar der
> Funktionen hab ich in meiner dom.js bereits drin bzw. sind sehr ähnlich,
> andere könnte ich übernehmen. Man müsste auch schauen, ob die Funktionen
> überhaupt noch gebraucht werden oder ob sie ersetzt werden könnten.
> Einheitlicher wäre hier auch besser :-)

Ja, das kannst du natürlich machen. Ich habe da übrigens auch nicht so 
der Überblick, das meiste vom JavaScript-Kram stammt unverändert aus der 
0.2.2.

von Arne M. (armut)


Lesenswert?

Eine Tolle Software, nachdem ich in meiner Testbank einiges eingegeben 
habe. Praktisch alle Infos an einen Ort zu haben.

Drei kleine Fragen hab ich noch:
1) Um 3.0 zu installieren einfach ueber RC2 drueberkopieren?
2) Da ich ja irgendwann auf den Heimserver mit der DB ziehen will, kann 
man irgendwo nicht eine export/backup Funktion einbauen, die einen 
direkt eine wieder einlesbare XML aus der DB erzeugt?
3) Auf der Startseite steht etwas mit Reichelt Preissuche. Wie/Wo kann 
man das nutzen?

Danke und Gruss
Arne

von Udo N. (weinbauer73)


Lesenswert?

Arne M. schrieb:
> Eine Tolle Software, nachdem ich in meiner Testbank einiges eingegeben
> habe. Praktisch alle Infos an einen Ort zu haben.

Danke :-)

> Drei kleine Fragen hab ich noch:
> 1) Um 3.0 zu installieren einfach ueber RC2 drueberkopieren?

Du meinst sicher 0.3.0? Ja, einfach aktualisieren, da sich in der DB 
nichts mehr geändert hat. Die Konfiguration bleibt.

> 2) Da ich ja irgendwann auf den Heimserver mit der DB ziehen will, kann
> man irgendwo nicht eine export/backup Funktion einbauen, die einen
> direkt eine wieder einlesbare XML aus der DB erzeugt?

Wenn du MySQLDumper installiert hast, könntest du das direkt aus Part-DB 
aufrufen. Sonst bleibt dir nur der Umweg über MySQL-Konsole/mysqldump 
oder phpMyAdmin.

> 3) Auf der Startseite steht etwas mit Reichelt Preissuche. Wie/Wo kann
> man das nutzen?

Soviel ich weiß ist das Preissuchscript selbst in der 0.2er Version von 
Part-DB veraltet, da sich zwischenzeitlich die Homepage von Reichelt 
geändert hat. Wann wir wieder ein passendes Script haben, kann ich nicht 
sagen.

von Udo N. (weinbauer73)


Lesenswert?

@Urban: Die Meldung "SVN-Revision konnte nicht aus "/.svn/wc.db" gelesen 
werden! $result ist NULL" ist in einem Release sinnlos. Daran hätten wir 
denken sollen ;)

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> @Urban: Die Meldung "SVN-Revision konnte nicht aus "/.svn/wc.db" gelesen
> werden! $result ist NULL" ist in einem Release sinnlos. Daran hätten wir
> denken sollen ;)

Diese Fehlermeldung kann aber nur geworfen werden, wenn die Datei
"/.svn/wc.db" existiert (siehe voranstehendes "if file_exists()"). Da 
diese Datei in einem Release aber nicht existiert, kann die 
Fehlermeldung gar nie auftreten. Es wäre also sinnlos, für die Releases 
hier irgendwas zu ändern, da es keinen Unterschied macht ;-)

von Arne (Gast)


Lesenswert?

@Udo Neist Danke dir!

von Udo N. (weinbauer73)


Lesenswert?

Wenn $result NULL ist, dann braucht man das auch nicht wirklich 
auszugeben, oder?

von Udo N. (weinbauer73)


Lesenswert?

@Arne: Büdde

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Wenn $result NULL ist, dann braucht man das auch nicht wirklich
> auszugeben, oder?

Ich verstehe dich nicht ganz. Die Funktion "get_svn_revision()" prüft, 
ob die aktuelle Installation per SVN installiert wurde (".svn" 
Verzeichnis vorhanden) oder nicht. Bei einer SVN-Installation gibt die 
Funktion die SVN Revisionsnummer zurück, bei einer 
Nicht-SVN-Installation gibt die Funktion NULL zurück.

Siehst denn du irgendwo die von dir genannte Fehlermeldung, also wird 
die irgendwo ausgespuckt? Das sollte eigentlich nicht der Fall sein.

von Udo N. (weinbauer73)


Angehängte Dateien:

Lesenswert?

Ich hätte es sicher nicht gemeldet, wenn ich es nicht sehen würde :) Und 
es ist eine Installation aus dem SVN (meine Arbeitskopie).

von Arne M. (armut)


Lesenswert?

Waere es auch nicht toll zur Feier einen neuen Thread mit 0.3.0 zu 
erstellen? 600 Beitraege werden auf dem Handy doch arg viel :)

von Gelöscht (kami89)


Lesenswert?

Ach so, jetzt verstehe ich es :-)
Aber ich wüsste nicht, warum man diesen Fehler bei einer stabilen 
Version unterbinden sollte.
Erstens ist das schlussendlich ja ein "normaler" Fehler, wie jeder 
andere auch, und die anderen Fehler bekommen ja auch keine 
Sonderbehandlung.
Und zweitens sind SVN-Installationen nach wie vor grundsätzlich nur für 
Entwickler gedacht. Natürlich darf man seine Part-DB auch als 
Nicht-Entwicker per SVN installieren, allerdings geschieht dies auf 
eigenes Risiko. Für die Endanwender schnüren wir ja extra die Pakete, 
die dann eben auch den ".svn" Ordner nicht enthalten und somit die 
genannte Fehlermeldung gar nicht erst auftauchen kann. Auch der 
"development" Ordner hat beim Endanwender grundsätzlich nichts zu suchen 
und wird daher in den Release-Archiven entfernt. Im SVN ist dieser 
Ordner allerdings vorhanden, da man den als Entwickler halt braucht (vor 
allem um die Archive zu schnüren).

- soweit meine Meinung ;-)

Was den Fehler bei dir verursacht, müsste man mal untersuchen. Kannst du 
das selber übernehmen? Ich kann den Fehler hier nicht nachvollziehen.

von Udo N. (weinbauer73)


Lesenswert?

Es ist zwar ein Schönheitsfehler und stört die normale Funktionsweise 
nicht, aber sowas müsste nicht sein.

Ich habe get_svn_revision() so umgeschrieben, dass entweder eine 
Revisionsnummer oder false für unbekannte Revision oder NULL 
zurückgegeben wird. Die Fehlermeldung ist weg, stattdessen wird 
"Version: 0.3.0 (stable), SVN-Revision: unbekannt" angezeigt.

lib.php (Zeile 65ff):
1
    /**
2
     * @brief Get the SVN Revision number of the installed system
3
     *
4
     * @retval integer      The SVN revision number
5
     * @retval false        No revision number is found
6
     * @retval NULL         If this is no SVN installation
7
     */
8
    function get_svn_revision()
9
    {
10
        // New SVN format
11
        if (file_exists(BASE.'/.svn/wc.db'))
12
        {
13
            $svn = 0;
14
            $pdo = new PDO('sqlite:'.BASE.'/.svn/wc.db');
15
            $result = $pdo->query('SELECT MAX(revision) AS rev FROM nodes');
16
            if ($result && $data = $result->fetch())
17
                $svn = intval($data['rev']);
18
            else
19
                $svn = false; // there is no revision number
20
        }
21
        // Old SVN format
22
        if (file_exists(BASE.'/.svn/entries'))
23
        {
24
            $svn = 0;
25
            $data = File(BASE.'/.svn/entries');
26
            if (is_array($data) && isset($data[3]))
27
                $svn = intval($data[3]);
28
            else
29
                $svn = false; // there is no revision number
30
31
        }
32
        if (isset($svn) || !$svn)
33
            return $svn; // this is a SVN installation
34
        else
35
            return NULL; // this is not a SVN installation
36
    }
startup.php (Zeile 223ff):
1
            if (get_svn_revision())
2
                $html->set_variable('svn_revision', get_svn_revision(), 'integer');
3
            else
4
                $html->set_variable('svn_revision', 'unbekannt',         'string');

von Udo N. (weinbauer73)


Lesenswert?

Wenn ich allerdings wc.db mit dem FF Addon SQLite Manager öffne und den 
SQL-Befehl ausführen lasse, bekomme ich den Wert 691 zurück, was der 
Revision entspricht.

Der Codeschnippsel
1
            $pdo = new PDO('sqlite:'.BASE.'/.svn/wc.db');
2
            $result = $pdo->query('SELECT MAX(revision) AS rev FROM nodes');
liefert false zurück. Dann kann auch keine Revision ausgelesen werden.

sqlite3 macht dagegen auf der Konsole Probleme.
1
SQLite version 3.6.16
2
Enter ".help" for instructions
3
Enter SQL statements terminated with a ";"
4
sqlite> SELECT MAX(revision) AS rev FROM nodes;
5
SQL error: malformed database schema (nodes_update_checksum_trigger) - near "OLD": syntax error

von Gelöscht (kami89)


Lesenswert?

Naja, solange diese Funktion nur für die Anzeige der Revisionsnummer auf 
der Startseite verwendet wird, mag das ja egal sein wenn trotz 
Fehlerfall keine Exception geworfen wird.

Allerdings wäre es durchaus denkbar, dass diese Funktion später auch mal 
für andere, wichtigere Dinge genutzt wird, z.B. für das automatische 
Systemupdate das noch auf der ToDo-Liste steht. Dort ist es sicherlich 
nötig, zu schauen ob es eine SVN Installation, und wenn ja welche 
Revision, ist. Vergisst man dort, zwischen "NULL" und "false" zu 
unterscheiden (schnell passiert), kann dies evtl. zu einem fehlerhaften 
Update führen. Wird eine Exception geworfen, kann das nicht passieren, 
da man eine Exception nicht aus versehen ignorieren kann, da muss man 
den Code mit Absicht so schreiben, dass eine Exception ignoriert wird.

Genau für solche Dinge sind Exceptions ja erfunden worden :-)

Dass die Fehlermeldung auf der Startseite unterdrückt wird, damit bin 
ich einverstanden (stattdessen kann die Meldung ja in den Debug-Log 
geschrieben werden). Das macht man aber besser, indem man in der 
startup.php einfach den Aufruf von "get_svn_revision()" in einen 
try/catch Block packt um die Exception zu verwerfen. Das wäre eine 
saubere Lösung.

> SQL error: malformed database schema (nodes_update_checksum_trigger) -
> near "OLD": syntax error
Das nennt man dann wohl "Ausnahmefall", oder auf Englisch "Exception" 
:-D

von Gelöscht (kami89)


Lesenswert?

Arne M. schrieb:
> Waere es auch nicht toll zur Feier einen neuen Thread mit 0.3.0 zu
> erstellen? 600 Beitraege werden auf dem Handy doch arg viel :)

Keine schlechte Idee :-)

Ich habe grad vor ein paar Tagen gedacht dass hier irgendwie ein 
bisschen ein Durcheinander herrscht, da dieser Thread einerseits für den 
Austausch zwischen Anwendern und Entwicklern, andererseits aber auch 
zwischen den Entwicklern untereinander genutzt wird. Das macht es gerade 
für etwas weniger aktive Entwickler sehr schwierig, am Ball zu bleiben 
weil pro Woche manchmal vermutlich über 50 Beiträge geschrieben werden.

Es gibt bestimmt einige Möglichkeiten, das zu verbessern.
- Zwei Threads, z.B. "Part-DB 0.3.x Support" und "Part-DB Entwickler"
- Nur den Support Thread hier, Entwickler-Diskussion auslagern (wohin?)
- Ein eigenes kleines Forum für Part-DB mit mehreren Unterforen (nach 
Themengebieten), ein Unterforum nur für Entwickler (übertrieben?)
- andere Vorschläge? :-)

von Udo N. (weinbauer73)


Lesenswert?

Der Code ist ja nur ein Beispiel wie man das ganze umgehen kann. Ich 
habs ja nicht hochgeladen. Ich lade mal eine saubere Version vom Server 
und schieb das Problem in einen anderen Ordner. svn status meckert mir 
über meine Arbeitskopie, vielleicht ist deswegen der Fehler.

von Udo N. (weinbauer73)


Lesenswert?

Ich habe einen neuen Thread zur Version 0.3+ gestartet. Alles zu dieser 
Version nur noch dort reinschreiben, da es einfach übersichtlicher wird 
:-)

Beitrag "Lagerverwaltung Part-DB V0.3+"

Grüße
Udo

von Ron (Gast)


Lesenswert?

Wird dieses Tool eigentlich noch weiter entwickelt?
Oder ist die Entwicklung eingestellt?

lg
Ronny

von observer (Gast)


Lesenswert?

Hi,

wie oben steht, jetzt gibt es die Version 0.3+ in einem separaten 
Thread:

Beitrag "Lagerverwaltung Part-DB V0.3+"

@Moderator: Bitte ein "Vorhaengeschoss" an diesen Thread machen.

vg

von X.Y. (Gast)


Lesenswert?

Moin, nutzt es noch irgendwer? wollte es Installieren doch die Anleitung 
dazu ist Down. Kommen nochmal Updates oder wurde das Projekt aufgegeben?

MFG

von Tom L. (ossilampe)


Lesenswert?

Moin Moin,

Hier wurde ja schon lange nix mehr geschrieben, ist das Forum um die 
Lagerverwaltung noch aktiv???


Ich möchte anhand des Lagerortes eine Liste erstellen und diese dann 
ausdrucken.. Wie kann man das realisieren?

gruss

: Bearbeitet durch User
von Jan B. (do9jhb)


Lesenswert?

Tom L. schrieb:
> Moin Moin,
>
> Hier wurde ja schon lange nix mehr geschrieben, ist das Forum um die
> Lagerverwaltung noch aktiv???
>
>
> Ich möchte anhand des Lagerortes eine Liste erstellen und diese dann
> ausdrucken.. Wie kann man das realisieren?
>
> gruss

Es gibt mittlerweile eine neue Version (0.4 bzw 0.5 ist in Entwicklung): 
Beitrag "Lagerverwaltung Part-DB V0.4.x"

Neben einem verbesserten Design, und einer Benutzer und 
Rechteverwaltung, gibt es auch die Möglichkeit sich alle Teile in einem 
bestimmten Lagerort auflisten zu lassen. Das kann man dann vermutlich 
auch ausdrucken, dass dürfte dem was du haben willst ziemlich nahe 
kommen.

Hier gibt es eine Demo Installation der aktuellen Version:
http://part-db.bplaced.net

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.