Forum: Projekte & Code PART-DB RW 1.2


von K. J. (Gast)


Lesenswert?

Hi ich mach einfach mal ein neues Thema auf nutze das eigentlich noch 
einer ?

Wenn ja ich such noch Verbesserungen.

Ein Aktuelles update folgt die Tage noch.

Das Bilderskript wird wohl nicht mehr zum laufen zu bewegen sein (das 
stammt aus Zeiten der Alten Reichelt Seite) daher war meine idee eine 
Bildersammlung zumachen z.b. die von Eagle3d da die unter der GPL steht 
ich würde den die Bilder automatisch anhand der Footprints setzen aber 
so das man noch manuell Bauteile Hochladen kann.

was haltet ihr davon ? ich selber brauche sohnen schnikschnak nicht 
allerdings ist es von einigen Betatestern gewünscht.

Die momentan Aktuelle Version gibt es unter folgenden Link:
http://www.mikrocontroller.net/attachment/49419/part-db.tar.gz (noch 
nicht alle Änderungen drinnen möchte vorher noch etwas testen die neue 
folgt die tage).

: Gesperrt durch Moderator
von Peter D. (peda)


Lesenswert?

K. J. wrote:
> Hi ich mach einfach mal ein neues Thema auf nutze das eigentlich noch
> einer ?

Komisches Thema.
Was ist denn ein "PART-DB RW 1.2", kann man das essen oder was oder wie?

Beschreib doch erst einmal, worum es überhaupt geht.
Oder muß man erst das RAR auspacken, um zu wissen, was das ganze soll.
Stehts da überhaupt drin?


Peter

von Michael A. (aim)


Lesenswert?


von Mehmet K. (mkmk)


Lesenswert?

Also ich benutze es. Und wieder auch nicht. Die Tatsache, dass ich die 
einzellnen Unter-Kategorien nicht zusammenklappen kann, stört mich so 
sehr, dass ich mir stets vornehme, Dein Programm nicht mehr zu benutzen.
Aber da ich bis heute nichts besser finden konnte, trete ich immer 
wieder den Gang nach Canossa an ....

Ist meiner Meinung ein sehr gutes Programm. Nur bei einer grossen 
Lagerhaltung verliert man sehr schnell den Ueberblick.

PS: Mit Vers. 0.1d hatte ich Probleme. Liegt schon soweit zurück, dass 
ich mich an die Einzelheiten nicht mehr erinnern kann.

MfG aus Istanbul

von K. J. (Gast)


Lesenswert?

Mehmet Kendi wrote:
> Also ich benutze es. Und wieder auch nicht. Die Tatsache, dass ich die
> einzellnen Unter-Kategorien nicht zusammenklappen kann, stört mich so
> sehr, dass ich mir stets vornehme, Dein Programm nicht mehr zu benutzen.
>
> MfG aus Istanbul

Ist nicht meine SW aber da sie unter GPL steht und vom ORG. Autor 
scheinbar nicht weiterentwickelt wird hab ich mich der sache mal 
angenommen da ich nichts ähnliches gefunden habe.

Jup da hab ich leider noch keine Lösung für gefunden der CODE ist etwas 
Frikkelig Momentan bin ich dabei die ganzen BUGs zu beseitigen der 
Ersteller der Org. SW hat leider alles auf seinen LAMP angepasst was 
nicht so ganz optimal ist ich persönlich habe da aber nicht so hohe 
Anforderungen dran solange es leuft :P

von K. J. (Gast)


Lesenswert?

Hi, Hier nochmal die jetzt aktuelle Version es dürften alle Fehler 
beseitigt sein, die Version läuft bei einigen Testern jetzt ohne 
Probleme es fehlt noch der Style bei einigen dateien sobald das fertig 
ist werde ich mal schauen das mann das Aussehen per CSS Ändern kann 
dafür muss aber erstmal der Grundaufbau stehen.

Einige Bilder:
http://www.grautier.com/temp/mc.net/partdb/1.jpg
http://www.grautier.com/temp/mc.net/partdb/2.jpg
http://www.grautier.com/temp/mc.net/partdb/3.jpg
http://www.grautier.com/temp/mc.net/partdb/4.jpg

Changelog:
16.04.2009
- MOD Bilderupload die daten werden mit img_ + MD5 gespeichert somit 
wird verhindert das ein Bild doppelt gespeichert wird.
- MOD Style catmgr.php, fpmgr.php, subpmgr.php, locmgr.php.
15.04.2009
- ADD More Stats
- MOD Style openlist.php, submgr.php
- MOV F*ing Code to /dev/null
- FIX Many BUGs
- FIX Bilder Upload und Anzeige
14.04.2009
- ADD openlist.php Öffentliche Liste aller Bauteile
13.04.2009
- MOD Style startup.php, nav.php
- ADD Bauteile in den Kategorien Verschieben. (www.mikrocontroller.net 
Wiki)
- ADD SUB Kategorien Ausblenden (www.mikrocontroller.net Wiki)
08.04.2009
- ADD Patch Sortierung (Mikrocontroller.net Wiki)
- ADD Suche für Parts über AllDataSheet und Reichelt

von K. J. (Gast)


Angehängte Dateien:

Lesenswert?

Arg wo ist des file hin :P

von Peter D. (peda)


Lesenswert?

Michael A. wrote:
> Part-db Lagerverwaltung vileicht?

Danke Michael, nun weiß ich wenigstens, worum es überhaupt geht.

Ist wohl für den OP ne zu große Zumutung, einfach erstmal das Thema zu 
nennen oder wenigstens nen Link darauf zu posten.


Peter

von Sven P. (Gast)


Lesenswert?

'Part-DB' ist eigentlich ziemlich eindeutig, finde ich...

von Simon K. (simon) Benutzerseite


Lesenswert?

Aber was ist RW?

von Gast (Gast)


Lesenswert?

ReWision?

von K. J. (Gast)


Lesenswert?

Hi des RW steht für ReWork und des ist nur drinnen damit man die Version 
von der ORG. Part-DB unterscheiden kann.

von Harry S. (littlegonzo)


Lesenswert?

Hallo,
also das Tool gefällt mir sehr gut.
Einzige Kritik bzw. Änderungswunsch/Verbesserungsvorschlag:
Wenn man einen neuen Artikel anlegt kann man nur die sehr wenige Dinge 
eintragen. Es wäre schön wenn man dann gleich alles eintragen könnte, 
wie z.B. Preis, Datenblatt und Bild....

So muß man erstmal die nötigsten Dinge eintragen, dann nochmals auf den 
Artikel gehen und die anderen Sachen eintragen.

Gruß
Harry

von K. J. (Gast)


Lesenswert?

Ja das stimmt ist ein guter Vorschlag, ich selber trage das alles nicht 
ein dafür hab ich mir die suche für AllDataSheet gemacht das ist 
wesentlich einfacher.

von Harry S. (littlegonzo)


Lesenswert?

Das mit AllDataSheet find ich übrigens toll, wobei ich immer zusehe die 
Datasheets lieber "zu Hause" zu haben auf meinen Server^^

Auch mit der verknüpfung zu Reichelt ist echt gut, so sieht man sofort 
den aktuellen Preis und Typen. Könnte man das eigentlich noch ändern das 
"trotz" eigenen Datasheet die Reichelt und AllDataSheet drin bleiben?
Denn wenn man ein eigenes einträgt sind die beiden weg.

Bei den Bildern trage ich immer die Anschlußbelegung ein aus den 
Datasheets ist echt klasse das Tool!

Schön das es nun jemand weiter entwickelt!

Gruß Harry

von K. J. (Gast)


Lesenswert?

Hi bei den Bildern wird sich noch was Ändern die tage dann ist es 
möglich per Footprint die Bilder zu setzen das heist das du ein Bild in 
den /img Ordner ablegen kannst mit namen des Foodprints und das wird 
dann automatisch geladen des ist praktisch z.b. für ic Gehäuse die sind 
ja eh alle gleich sind bei mir ist es schon drinne bin aber noch am 
testen natürlich kannst du alternativ dazu noch wie gewohnt andere 
Bilder laden.

Ja das Reicheltding ist leider recht beschissen weil das nur 100% genaue 
Bezeichnugen findet ist etwas blöd aber bei standard teilen geht des 
recht gut werde noch was einbauen das wen die Artikkelnummer vorhanden 
ist mit der gesucht wird.

von Bauteileverwaltung (Gast)


Angehängte Dateien:

Lesenswert?

>Also ich benutze es. Und wieder auch nicht. Die Tatsache, dass ich die
>einzellnen Unter-Kategorien nicht zusammenklappen kann, stört mich so
>sehr, dass ich mir stets vornehme, Dein Programm nicht mehr zu benutzen.

Der selben Meinung bin ich auch. Ich finde die Idee mit einer frei 
gestaltbare Artikelkodierung (Warengruppen) und einer mächtigen 
Suchfunktionalität viel besser und überschaubarer!

Ich verwende MyComponents.

Wenn ich nach SMD-Widerständen suche gebe ich einfach Widerst* + SMD 
ein, und alle eingegebene SMD-Widerstände werden in einer Liste 
angezeigt.
Oder, wenn ich will, lege ich eben eine Artikelgruppe an.

von K. J. (Gast)


Lesenswert?

> Der selben Meinung bin ich auch. Ich finde die Idee mit einer frei
> gestaltbare Artikelkodierung (Warengruppen) und einer mächtigen
> Suchfunktionalität viel besser und überschaubarer!
>
> Ich verwende MyComponents.
>
> Wenn ich nach SMD-Widerständen suche gebe ich einfach Widerst* + SMD
> ein, und alle eingegebene SMD-Widerstände werden in einer Liste
> angezeigt.
> Oder, wenn ich will, lege ich eben eine Artikelgruppe an.

Naja das ist alles viel zu überdimensioniert im Hobby braucht keine 50 
sortirungsmöglichkeiten es geht einfach darum ne liste zu haben um sich 
überblick zu verschaffen.

MyComponents ist für mich keine Alternative weil es nicht dezentral 
läuft bei Programmen die dbs abzugleichen ist wesentlich aufwendiger.

Naja wen ich mit part-db Widerstände suche gebe ich z.b. 0805 in die 
Suche ein und hab ich alle was auch völlig ausreichend ist oder gehe 
halt in die passende Kategorie.

Erschwerend kommt dazu das ich linux nutze und Windows Programme mit 
Wine ist der läetzete Käse auserdem ist des alles fest und ich kann bei 
Problemen nichts Ändern mach möchte sich ja auch was Hin biegen können 
wenn man es braucht vor alledem bei gossen Datenbanken ist so was 
wichtig.

Finde ich jedenfalls, PART-DB soll seinen dienst bei mir gut erfüllen 
und nicht mehr und auch nicht weniger und es ist genau das drinnen was 
ich brauche.

Edit: HAKU läuft ja Grade vorweg sie unten

von Sven P. (Gast)


Lesenswert?

Langsam mit den Pferdchen, theborg und meine Wenigkeit sitzen zusammen 
mit noch ein paar anderen hier an einer nagelneuen Verwaltung. Zur Zeit 
muss ich gestehen, dass ich der blockierende Faktor bin, da ich nicht 
mit der Initialversion in die Puschen komm grins

Bauteileverwaltung wrote:
>>Also ich benutze es. Und wieder auch nicht. Die Tatsache, dass ich die
>>einzellnen Unter-Kategorien nicht zusammenklappen kann, stört mich so
>>sehr, dass ich mir stets vornehme, Dein Programm nicht mehr zu benutzen.
>
> Der selben Meinung bin ich auch. Ich finde die Idee mit einer frei
> gestaltbare Artikelkodierung (Warengruppen) und einer mächtigen
> Suchfunktionalität viel besser und überschaubarer!
Etwa so?
http://e.svgweb.de/filter.png

von Bauteileverwaltung (Gast)


Lesenswert?

>Naja das ist alles viel zu überdimensioniert im Hobby braucht keine 50
>sortirungsmöglichkeiten es geht einfach darum ne liste zu haben um sich
>überblick zu verschaffen.

Wenn die Anforderungen so gering sind, dann reicht ein Excel- bzw. 
Calc-Sheet mit integrierten Links doch aus.

von K. J. (Gast)


Lesenswert?

Nein ebend nicht weil es nicht Dezentral abrufbar und editierbar ist bei 
excel/OOo gibt es keine sinnvolle Eingabemaske fängt man an diese zu 
Programmieren kann man des den auch per PHP und co. machen.

Und EXCEL nutzt diese VB Skript knacke ne dann kann ich ja gleich mit 
BASCOM Proggen :P

Ist halt Ansichtssache darüber lässt sich streiten.

Und deswegen ist es OS jeder kann was Beitragen und wehr nichts Ändert 
braucht auch nicht meckern.

von Sven P. (Gast)


Lesenswert?

Features sind schön, vorallem, wenn man sie abstellen kann. Und das kann 
man bei 'unserer' Lösung :-)

von Harry S. (littlegonzo)


Lesenswert?

Hallo,
ich habe eben gelesen :
<---
Naja wen ich mit part-db Widerstände suche gebe ich z.b. 0805 in die
Suche ein und hab ich alle was auch völlig ausreichend ist oder gehe
halt in die passende Kategorie.

<--

Das klappt leider nicht weil 0805 bei den Footprints zu 805 geändert 
wird...
oder ist bei mir noch etwas falsch eingestellt?

Gruß Harry

von K. J. (Gast)


Lesenswert?

Hi, nein ist nen bekanntes Problem ich hab mir erstmal einen anderen 
Buchstaben davor gemacht wird aber noch korrigiert.

von Harry S. (littlegonzo)


Lesenswert?

Uff, dachte schon bei mir ist ein fehler in der Datenbank^^
Ich habe es Momentan auch so gelöst das ich '0805' schreibe...
Wenn man sucht findet er es ja trotzdem.

von K. J. (Gast)


Angehängte Dateien:

Lesenswert?

So ein kleines UPDATE

Der Style ist jetzt komplett allerdings ist der Code noch etwas 
unordentlich solte aber fehlerfrei funktionieren die nästen Änderungen 
werden dann die hier Gewünschten Funktionen und vielleicht ne kleine 
Hilfe Datei.

http://www.grautier.com/temp/mc.net/partdb/5.jpg
http://www.grautier.com/temp/mc.net/partdb/6.jpg

mfg tb

von Mehmet K. (mkmk)


Angehängte Dateien:

Lesenswert?

Servus

Zuerat einmal ein Dank für die Weiterentwicklung an Part-db.
Nachdem ich diese neue Version installiert habe, kriege ich aber einen 
Fehler, den ich mir nicht erklaeren kann. Beiliegend das Bild.
Waere für einen Tip sehr dankbar.

MfG

von Sven P. (Gast)


Lesenswert?

Sieht ganz schwer danach aus, dass du keinen Datenbankserver hast oder 
mit den falschen Zugangsdaten verbindest.

von Mehmet K. (mkmk)


Lesenswert?

:) also einen Datenbankserver habe ich, ganz bestimmt.
Und auch die alte Version 0.1d lieft ohne Probleme.
Soweit ich mich erinnere, musste ich bei einem Update nur eine Zeile in 
lib.php für den Serverzugriff aendern.

von K. J. (Gast)


Lesenswert?

Ja haste den die SQL Datei in deine Datenbank eingelesen ?

ansonsten müssen nur die daten noch in die lib.php ändern sieht so aus 
als wen die Tabellen nicht gefunden werden.

Wenn du Runterscrolst steht da ne ROTE Meldung ?

von Mehmet K. (mkmk)


Lesenswert?

Peinlich!
Meine Datenbank heisst "partdb", waehrend in lib.php default "db" 
gesetzt ist.
Entschuldigung.

von Dennis (Gast)


Lesenswert?

Hallo,
ich find es super das an dem tollen Ansatz der Partdb wieder was 
passiert, werde heute Mittag gleich mal die neue version auf den Server 
hauen.

gruß Dennis

von Dennis (Gast)


Lesenswert?

Hallo,

Also beim mir läuft es super, sieht viel besser aus.
Wie siehts aus gibts noch Neuerungen?

Dennis

von K. J. (Gast)


Lesenswert?

Hi momentan gerade nicht ab ziemlich viel momentan zu tun.

Bin gerade an der liste links bei da ich aber kein java kann wird des 
noch etwas dauern vielleicht erklärt sich ja einer dazu bereit das zu 
übernehmen.

Ansonsten ist die Todo Liste ziemlich lang :P

Was mal nett wehre ist wen mir jemand ein Screenshot macht wie das ganze 
mit dem IE aussieht > 7.0

P.s. Was mir so aufgefallen ist weil es bei mir in den Serverstatistiken 
auftaucht einige haben PartDB extern erreichbar und nicht mit HTACSSES 
geschützt dieses solltet ihr umbedinkt machen.

Eine kleine Hilfe Funktion ist Grade in Arbeit wo das alles Erklärt wird 
auch wie man die Öffentliche Liste benutzt ...

von Dennis L. (w124dennis)


Lesenswert?

Hallo,
also im IE7 gibts wohl Probleme, Kategorien werden im Navigations frame 
geöffnet... aber wer will schon den IE ^^
Wie wärs Eigentlich mit nem SVN/Bugzilla server?

Dennis

von Dirk B. (garag)


Lesenswert?

Hallo,

wegen der Liste könnte man doch folgendes nehmen:

http://destroydrop.com/javascripts/tree/

Ich hatte das schon mal in part-db eingebaut. 
(Beitrag "Re: Probleme mit part-db")

Gruß
Garag

von K. J. (Gast)


Angehängte Dateien:

Lesenswert?

Danke !!! werde es mir mal anschauen.

Neue Version hab ich auch, bei den Preisen können jetzt auch "," 
angegeben werden, und es gib einige extra Änderungen.

Ich empfehle alle php Dateien bis auf die lib.php zu löschen(vorher 
Backup machen) und dann die neuen daten einzuspielen es hat sich in 
Hinsicht der files was verändert alle ungenutzten habe ich raus genommen 
und einige in extra Ordner verschoben.

von Robert S. (razer) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo an alle,

Ich hab mir Partdb 1.2 auch aufgesetzt. Beim Hinzufügen neuer Bauteile 
bekomme ich jedoch eine Fehlermeldung (siehe Screenshot). Woran kann das 
liegen??

Danke im Voraus
lg Robert

von K. J. (Gast)


Lesenswert?

Hi wodran des liegt kann ich so gerade nicht raus sehen kann das sein 
das du ne recht alte Version benutzt ?

von Robert S. (razer) Benutzerseite


Lesenswert?

Ja die ist schon älter. Hab sie damals nicht zum Laufen bekommen und 
danach nie mehr Zeit gehabt. Ich werden die Version mal updaten.

von A. M. (bacarni) Benutzerseite


Lesenswert?

Das ist ein interessantes Projekt. Hab mir die Dateien auch mal besorgt. 
Ich fände es toll, wenn jmd vllt. eine Art DemoDB bereitstellt. Dann 
brauch man nicht immer alles selber komplett zu befüllen.

>Hallo,
>
>wegen der Liste könnte man doch folgendes nehmen:
>
>http://destroydrop.com/javascripts/tree/

Vllt. ist dann diese Iconlib ganz gut: 
http://tango.freedesktop.org/Tango_Icon_Library
Falls es noch keine geben sollte...

von Mehmet K. (mkmk)


Lesenswert?

Ich habe Deine Answeisung befolgt und ausser lib.php alles gelöscht.
Nun will die Software von mir Username und Password wissen (vor dem 
Upgrade war dies nicht so), akzeptiert diese aber nicht und es erscheint 
die Meldung:

Server error! The server encountered an internal error and was unable to 
complete your request. Either the server is overloaded or there was an 
error in a CGI script.
If you think this is a server error, please contact the webmaster.
Error 500

von K. J. (Gast)


Lesenswert?

arg ja sorry da hat sich die .htacsess und .htpasswd mit 
reingeschmukkelt ins Archiv einfach löschen den geht es wieder sorry.

b.z.w. gleich als vorlage für PW Schutz nutzen.

von Mehmet K. (mkmk)


Lesenswert?

Danke, jetzt klappt es wieder.

von Dennis L. (w124dennis)


Lesenswert?

Hallo zusammen,

schön das wieder was passiert, bei mir läuft die part-db soweit gut.

Hier noch einige Wünsche von mir:
- Beim Anlegen eines Bauteils, sollte es möglich sein einen neuen 
Lagerort/Lieferant oder Footprint zu erstellen
- Zudem, was aber auch schon gewünscht wurde, Preis, Datenblatt usw beim 
Erzeugen eines Bauteils einstellbar
- Wird eine Lagerort/Lieferant oder Footprint erstellt sollte überprüft 
werden ob es diesen evt. schon gibt.
- Erzeugung von Lagerorte erweitern z.b. K1-[0...100] erzeugt Lagerorte 
K1-0 bis K1-100
- Suche oder Anzeigemöglichkeit für Lagerorte

gruß Dennis

von K. J. (Gast)


Angehängte Dateien:

Lesenswert?

@Dennis Kommt auf die ToDo liste, diese immer noch recht lang.

Die näste Änderung wird erstmal umbau auf CSS sein Hardcoded per html 
suckt und sieht net wirklich gut aus.

Menü hab ich mittlerweile eingebaut THX @ barcany

von A. M. (bacarni) Benutzerseite


Lesenswert?

Naja, der eigentliche Beitrag kam von Dirk Braun (garag) 10 Beiträge 
weiter oben. Leider hat er es beim Zitieren verschluckt.

von K. J. (Gast)


Angehängte Dateien:

Lesenswert?

Hi,

Ich hab des Dasein mal etwas angepasst würde mich mal über Feedback 
freuen mittlerweile ist fast alles CSS2.0 basiert aber OPERA macht 
zikken deswegen gibs noch kein neues relayse.


mfg tb

von Mehmet K. (mkmk)


Lesenswert?

Sieht gut aus .... sieht seeeehr gut aus. Warte gespannt auf deine neue 
Release.

von Harry S. (littlegonzo)


Lesenswert?

Ich finde sieht bisher sehr gut aus. Mausert sich die Software.
Bin auch gespannt auf die neue Version und evtl. neuen Features.

Gruß Harry

von Dennis L. (w124dennis)


Lesenswert?

Gefällt mir auch sehr gut;)

Dennis

von K. J. (Gast)


Lesenswert?


von Dennis L. (w124dennis)


Lesenswert?

Hallo k.j.

tolle idee, bin gespannt auf die nächste release ^^
Willst du die Herstellerbilder auf die Footprints zeichnen?

gruß
Dennis

von K. J. (Gast)


Lesenswert?

Hi nein die Logos des wird einfach ne liste mit den Bildern von den IC 
Logos hab gerade 380stk eingepflegt.

Und bei den footprints bin ich noch nicht ganz sicher wie ich die mit 
der Datenbankverknusper dachte als Default bilder wen man kein einendes 
angegeben hat das dann dementsprechend in Abhängigkeit zu den 
Footprintnamen angezeigt wird so wie es jetzt schon vorhanden ist, 
ursprünglich war des einfach so als Vergleich gedacht damit man schauen 
kann was man da überhaupt liegen hat.

von K. J. (Gast)


Angehängte Dateien:

Lesenswert?

So hier das Update.

Neues
- Footprintbilder (fehlen noch ne ganze Mänge)
- Hersteller Logos für IC Kernzeichnungen
- JS Menü
- Bugfixes
- 100% CSS Template

Bekante Bugs
- Das Menü läuft nicht mit Opera

ToDo
- Funktion zum umbenennen von Footprints.
- Erweiterte Eingaben bei neuen Bauteilen.

Viel Spass beim Testen.

von Dennis L. (w124dennis)


Lesenswert?

Hallo K.J.

glaube du hast die Menubilder vergessen /img/menu/ ist leer ^^
Hab die Benötigten gifs mal von hier 
http://destroydrop.com/javascripts/tree/ geholt, dann geht das menu 
auch, sieht super aus!!
Auch die footprints sind cool. Wie läuft im Augenblick die Zurodnung der 
Footprintbilder, Dateiname?
Cool wäre es wenn man beim Anlegen eines Footprints ein Footprintbild 
zuordnen könnte, weil viele Hersteller Benennen ihre packs 
unterschiedlich Bsp. SO14 SOIC14.
Um Bauteilen einen Hersteller Zuzuordnen müsste man die Datenbank ändern 
oder? Dann könnte man nämlich dem Footprint noch ein Herstellerlogo 
zuordnen.

Gruß Dennis

von K. J. (Gast)


Angehängte Dateien:

Lesenswert?

Hi jo irgentwas ist ja immer ;)

Hier nochmal nen neues Paket hab wohl geschlampt :P die bilder in img 
können gelöscht werden des sind meine eignenden uploads :P.

Hi die automatische Zuordnung leuft anhand der Bildnamen in 
/tools/footprints d.h. SOIC14 und das bild dazu heist den SOIC14.png ich 
hab versucht die bezeichnugen gängig zu wählen nen Patentrezept gibt es 
da leider nicht.

Ich hab nicht vor des nochmal zu ändern so wird des bleiben des ist ne 
scheiß Arbeit was ich noch alles einpflegen werde weiß ich noch nicht 
aber so des Gänigste auf jedenfall.

Erstmal kommt die tage noch ne Funktion um die namen der Footprints 
Ändern zu können.

von Mehmet K. (mkmk)


Lesenswert?

K. J., ich liebe Dich!!! :D
Eine Superleistung! Gratuliere.

Kannst Du mir bitte per PM Deine PayPal Nummer mitteilen, damit ich Dir 
ein kleines Dankeschön zukommen lassen kann.

MfG

von K. J. (Gast)


Lesenswert?

Mehmet Kendi schrieb:
> K. J., ich liebe Dich!!! :D

URG :-)

> Eine Superleistung! Gratuliere.
Danke !!!
>
> Kannst Du mir bitte per PM Deine PayPal Nummer mitteilen, damit ich Dir
> ein kleines Dankeschön zukommen lassen kann.

Ne muss nicht wie gesagt ist alles für lau :P

PayPal hab ich eh nicht weis ganicht warum des alles für spenden nutzen 
da der Empfänger zahlt verdient nur Paypal dran.

von Mehmet K. (mkmk)


Lesenswert?

Servus K. J.
Das mit PayPal stimmt schon, was Du sagst. Aber eine Banküberweisung aus 
der Türkei ist mit ca. 30 Euro Spesen verbunden. Da ist PayPal schon 
günstiger.

Das Program ist nun genaus so, wie ich es mir seit Jahren gewünscht 
hatte, aber wegen Php-und Html-Unkenntnis nicht umsetzen konnte. 
Nochmals vielen Dank.

von BrainHunter (Gast)


Lesenswert?

Klappt hier auch wunderbar fettes lob :-)

wie wärs eigendlich mit ner funktion für mehrere lagerorte. so könnte 
man partdb mit mehreren personen verwenden (so haben wir das hier 
nämlich vor :-)) das spart eine menge arbeit was eintragen von 
informationen angeht, weil ned jeder selber alle bauteile eintragen 
muss.

mfg Nico

von K. J. (Gast)


Lesenswert?

hm das halte ich ehr für unpraktisch wen man vom Normalfall ausgeht hat 
man alle Bauteile des gleichen Typs an der gleichen stelle gelagert.

Dann muss man es zweimal anlegen und den unterschiedliche Lagerorte 
angeben.

von Bauteilegucker (Gast)


Lesenswert?

Muss da eigentlich jeder seine Bauteildaten selbst eingeben?

Oder gibt es da irgendwie öffentliche Bibliotheken?

Wäre ja naheliegend, sowas vorzusehen. Sogar die jeweiligen 
Eagle/KICAD/...-libs könnte man gleich mit integrieren, damit die ewige 
Sucherei mal ein Ende hat (Exportfunktion).

von K. J. (Gast)


Lesenswert?

Nein des würde auch ein ewiges suchen bedeuten es gibt soviel bauteile 
da ne lib anzulegen wehre ne Endlosarbeit es soll ja auch keine 
Multilösung werden sondern eine Relativ einfach gehaltene Hobbylösung 
das wichtigste ist ja vorhanden.

Wers erstmal noch die sachen die jetzt fehlen einbauen und dann mal 
schauen aber zihl ist es es so einfach wie möglich zu halten.

LIBs fest mit einzubinden wie die Eagle libs geht schon alleine wegen 
der Lizenzen nicht.

von Bauteilegucker (Gast)


Lesenswert?

Moooment! ;-)

Eine Endlosarbeit ist es doch viel eher, 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.

Und mit den Eagle-Libs: Die Original-Eagle-Libs kann man möglicherweise 
nicht verwenden (fragen kann man trotzdem). Aber es gibt genug von Usern 
beigesteuerte Daten. Außerdem gibt's ja auch KICAD. Auch da ziemlich 
viele Userlibs, aber auch da mehr oder weniger unsortiert.
In der Freie-Software-Bewegung wird das Lizenzproblem immer so 
gehandhabt, dass das, was man wegen der Lizenzen nicht nehmen darf, von 
den Leuten selbst nochmal gemacht wird. So wäre dieses Problem sicher 
schnell behoben.

Der große Vorteil so einer Funktion wäre, dass man auf Knopfdruck eine 
Bibliothek "Meine Bauteile" exportieren kann, sodass man in Eagle/KICAD 
usw. nie mehr lange suchen und fragen muss.

Sowas würde natürlich einen Mechanismus erfordern, um die Daten mit 
anderen Leuten und/oder einem zentralen Server austauschen zu können. 
(Muss ja nicht alles sofort gemacht werden.)

von K. J. (Gast)


Lesenswert?

Hi, ich habs mal auf meine ToDo liste geschrieben aber irgendwo am ende 
:P

Zu den libs also was ich mal überlegt hatte ist die funktion für die 
PDFs mit nen Uploder auszustatten man könte dann ja das so machen das 
man damit dann aich libs und co. Hochladen kann.

Momentan bin ich an der Footprint Geschichte bei.

von Mehmet K. (mkmk)


Lesenswert?

@ Bauteilegucker
Was verstehst Du genau unter "Muss da eigentlich jeder seine 
Bauteildaten selbst eingeben?" 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.
Aber vermutlich verstehe ich nicht, was Du meinst.

@ K. J.
Wenn Du auf Deiner ToDoList noch etwas Platz hast (kann auch ganz weit 
unten sein) waere es praktisch, wenn man im Ansichtfenster die 
angezeigten Spalten selbst waehlen könnte. Z.Zt. steht dort in der 
letzten Spalte "Datenblätter".
Für mich persönlich waere es interessanter, dort den Preis zu sehen.


MfG aus Istanbul

von Dennis L. (w124dennis)


Lesenswert?

Hallo k.j.
wann gibts mal wieder was neues????


gruß Dennis

von K. J. (Gast)


Lesenswert?

Hi, nein leider noch net komme Grade net voran mal schaun ob ich am we 
noch was schaffe

von Dennis L. (w124dennis)


Lesenswert?

... ok. keine eile ;)

von Olof G. (ole)


Lesenswert?

Moin!

Hab mir das Script grade mal gezogen und erstmal muss ich sagen, dass es 
einen netten eindruck macht.

Was mir sofort auffiel, dass die Links zu AllDataSheet und zu Reichelt 
leider im main-Frame öffnen.

Wems besser gefällt, wenn die Links in einem neuen Fenster/Tab öffnen, 
kann das ja auch spontan "nachrüsten.
Datei: showparts.php Zeilen 187,188
1
$Id: showparts.php,v 1.11 2006/05/23 21:47:14 cl Exp $

im href-tag target=\"_blank\"

hinzufügen.

Und irgendwie wäre es schön, wenn man Datensätze mit anderen Usern 
tauschen könnte, aber wie gesagt, so schaut des schon mal fein aus!

Gruß aus Hamburg,

Ole

von theborg (Gast)


Lesenswert?

Hi, ist in der nästen Version mit drinnen.

Gruß zurück aus HH :P

von Olof G. (ole)


Lesenswert?

Und nochmal.

Wollte grade mal das SMD package 0805 eintragen, aber die führende null 
war dann weg.

in lib.php fand ich dann:
1
if (!is_numeric($value)) {
2
$value = "'". mysql_escape_string($value) ."'";^
3
}

Aber in der DB ist das Feld für den Namen des footprints vom Typ 
mediumtext.
Also warum nicht immer als string übergeben? In meinen Augen, macht es 
die Sache einfacher besonders wenn man schon bilderchen für die 
footprints hat, die mit führenden nullen benannt sind.

Ich habe die Funktion
1
function smart_escape($value)
kopiert und die kopie umbenannt nach
1
function smart_escape_pimp($value)
mit der Änderung:
1
if (!is_numeric($value)) -> if (1)
So wird nun jede eingabe als String verarbeitet.

Zusätzlich in fpmgr.php
1
if ( strcmp ($_REQUEST["action"], "a") == 0 )
2
        {
3
                $query = "INSERT INTO footprints (name) VALUES (". smart_escape($_REQUEST["fpname"]) .");";
4
                debug_print($query);
5
                mysql_query($query);
6
        }
7
8
9
10
11
--->
12
13
if ( strcmp ($_REQUEST["action"], "a") == 0 )
14
        {
15
                $query = "INSERT INTO footprints (name) VALUES (". smart_escape_pimp($_REQUEST["fpname"]) .");";
16
                debug_print($query);
17
                mysql_query($query);
18
        }

Mal sehen ob das anderswo Probleme bereitet.

Gruß aus Hamburg,

Ole

von theborg (Gast)


Lesenswert?

Hi, ja das sind so kleine macken die der jenige eingebaut hat der die DB 
damals geschrieben hat da ich das nicht komplet neu schreiben wolte bin 
ich grade bei so nach und nach alle fehler zu beseitigen.

von K. J. (Gast)


Angehängte Dateien:

Lesenswert?

Hi schon mal was kleines neues und zwar ein Tehme wie auf meiner Seite.

http://www.grautier.com/grautier/index.php?/plugin/dlfile_145

von Chris W. (squid1356)


Lesenswert?

hi leute,

ich bekomme beim aufrufen der Part-DB den gleichen Fehler wie Mehmet 
weiter oben...

siehe: http://www.mikrocontroller.net/attachment/50059/part-db.jpg

Habe folgendes gemacht:
- XAMPP installiert
- Apache und Mysql erfolgreich gestartet
- mit mySqlAdmin Datenbank "partdb" erstellt und in lib.php eingetragen
siehe hier:
    $link = mysql_connect ("localhost", "partdb", "");
    mysql_select_db ("partdb");

- Tabellen mithilfe der sql-datei erstellt
- natürlich den user partdb angelegt, ohne Passwort.

Warum läuft das so nicht? Habe leider mit SQL bisher wenig Erfahrung, 
bzw. bisher lief immer alles unproblematisch. Wer kann mir helfen?

Warum funktioniert das eigentlich nicht wenn ich ein Passwort angebe? 
Ich bekomme dann eine Warnung weil PartDB nicht mit SQL vrbinden kann, 
ohne PW kommt die Meldung nicht.

Gruss und schonmal Danke,
Chris

von Chris W. (squid1356)


Lesenswert?

Ok, das oben habe ich nun doch hinbekommen, einfach nochmal alles neu 
installiert, jetzt läufts. Muss irgendwie mit dem Passwort 
zusammengehangen haben, habe mir diesmal von myPHPAdmin eins generieren 
lassen, das ging dann.

Aber jetz: ein neuer Fehler, der mich noch viel Ratloser macht:
egal auf welchen der links auf der linken Seite ich anklicke, es 
passiert nichts. Woran kann das nun liegen? Es kommt nichtmal ne 
Fehlermeldung dass die Datei nicht gefunden wurde oder so.

Gebe ich den link direkt in die Adresszeile ein klappts.

Ich verzweifle noch...

von K. J. (Gast)


Lesenswert?

Hi das ist merkwürdig geh mal mit dem mauszeiger auf einen link und 
schau mal was unten in der leiste angezeigt wird.

von Chris W. (squid1356)


Lesenswert?

komischerweise wird da angezeigt:
http:///... und dann die entsprechende *.php Datei!

Irgendeine Ahnung ?

von K. J. (Gast)


Lesenswert?

ja und nein

der fehler mus was mit dem XAMP zu tun haben weis aber grade die lösung 
nicht die links in der part-db sind nicht volstendig angegeben sondern 
sind nur nen verweis auf ne datei.

sach mir mal welches xamp du verwendest den schue ich mal

von Chris W. (squid1356)


Lesenswert?

Hi du!

Habe ich auch schon vermutet, muss irgendwas mit ner 
Verzeichnis-Einstellung sein, denke ich. Weiß aber noch nicht wo, habe 
mit Apache/ Xampp noch nicht wirklich viel gemacht.

Also: ich habe xampplite-win32-1.7.1 auf ner frischen XP Installation, 
habe mir vor ein paar tagen nämlich nen neuen Werkstattrechner 
installiert, wo dann auch ne gute Bauteileverwaltung Platz finden soll 
;-)

Denke, wenn alles nichts hilft installier ich mit mal das "normale" 
XAMPP.
Welches läuft denn bei dir ?

danke schonmal,
Chris

von K. J. (Gast)


Lesenswert?

ich habe es normal auf nen echten Server laufen in Zeiten des inet ist 
des recht sinnig das dezentral zu haben.

ich schau mir des xammp mal an

von Chris W. (squid1356)


Lesenswert?

hi.

irgendwann kommt das vielleicht auch mal, aber erstmal nur im lokalen 
netz. ;-)

mach dir keine zu große mühe!

von erich73 (Gast)


Lesenswert?

Hallo

@ Chris W.

ich hatte das gleiche Problem. Nach einigem Suchen bin ich auf den base 
Tag (<base hre...> </base>)in der nav.php gekommen. Den habe ich 
rausgenomen und nun läuft es.
Ich habe die Dateien direkt im www Verzeichnis liegen.

von K. J. (Gast)


Lesenswert?

welchen Browser benutzt du ? wen ich das raus nehme bekomme ich in FF 
das Menü nicht mehr aufgeklappt dafür funkt das Menü dann in opera echt 
merkwürdig

von Chris W. (squid1356)


Lesenswert?

Mittlerweile Firefox, dort lief die Part-DB zuletzt auch prima.
Allerdings muss ich sagen dass ich jetzt nach ausgiebigem Test lieber 
das Programm "Teile" hier aus dem Forum benutze, das bietet einfach 
etwas mehr Funktionen und Komfort. Gefällt mir (bisher) einfach besser.
Gruß Ch.

von erich73 (Gast)


Lesenswert?

Moin

ich habe ein Win XP ohne SP mit IE6 am laufen. Stand ist wie nach der 
Installation (keine Updates).
Webserver ist WAMP5 1.4.4.

von Marc D. (cosinus)


Lesenswert?

Hi zusammen!

Ich bin gerade dabei ein Parameter Template feature und eine 
Baumstruktur bei den Lagerorten hinzuzufuegen.
D.h. im detail: jeder kategorie kann, muss aber nicht, ein Template 
zugeordnet werden, das zusaetzliche Felder definiert. z.B. bei 
Transistoren Umax, Imax, Ptot etc.. Beim anlegen eines Bauteils koennen 
diese Felder dann befuellt werden.
Das ganze soll dann auch noch eine erweiterte Suchfunktion erhalten. So 
dass z.B. alle Transistoren die Imax > 1A haben angezeigt werde.
Die Lagerorte sollen Baumartig strukturiert werde. So das ich z.B. einen 
Lagerraum1 und Lagerraum2 haben kann, in Lagerraum1 steht dann z.B. das 
Regal1 und dort in Fachboden3 liegt dann das Bauteil.

Wenn jemand an den Aenderungen interessiert ist kann er sich ja mal hier 
melden. Dann stell ich mal hier die geanderte Version ein.

Gruss
Marc

von Dirk B. (garag)


Lesenswert?

Hallo Marc,

ich würde mir gerne mal deine Änderungen anschauen. Bin gespannt auf die 
neue Version.

Gruß
Dirk

von Dennis L. (w124dennis)


Lesenswert?

Tolle idee;)
freu mich immer wenn hier was passiert.
(toll wäre immer noch das erstellen von mehreren lagerorten also 
kiste1_[1..100])
Dennis

von stromflo (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

seit langem such ich nach einer einfachen Lösung um mein Bauteilchaos 
irgendwie in Griff zu bekommen.

Den Ansatz von Part-DB kenn ich schon seit längerem und war davon 
eigentlich schon immer überzeugt. Die Problematik war, dass es immer 
wieder Funktionsschwierigkeite gab.

Ich hab nun vor zwei Tagen die Rework Version auf einen XAMPP 
installiert....

Leider tauchen nun ein paar Fehlermeldungen auf, vielleicht kann mir da 
ja jemand von euch weiterhelfen. Eine der Fehlermeldungen hab ich mal 
angehängt. Ein weiteres Problem stellt das hinzufügen von Bildern dar... 
das funktioniert ebenfalls nicht.

Gruß Flo

von K. J. (Gast)


Lesenswert?

Hi zu den bildern haste da ne fehlermeldung ? sind die rechte richtig ?
welche PHP version ?

bei der fehlermelung auf den bildern finde ich nichts könte an php 
liegen

von Arnulf (Gast)


Lesenswert?

Hallo.
Es ist ja auch keine Fehler, sondern eher ein Notice.
Im Netz hab ich folgendes gefunden:
http://www.php-fehlermeldungen.de/topic25.html

Gruß

von K. J. (Gast)


Lesenswert?

thx werd mich mal drum kümmern momentan hab ich auch wieder etwas zeit 
dafür

von Arnulf (Gast)


Lesenswert?

Es kann dir auch helfen, wenn du

error_reporting(E_ALL);

einfügst. Damit bekommst du auch die Hinweise.

von Sven P. (Gast)


Lesenswert?

Arnulf schrieb:
> Es kann dir auch helfen, wenn du
>
> error_reporting(E_ALL);
>
> einfügst.

Das würde ich sowieso ganz dringend empfehlen, in jedem Skript.
Dass es nicht standardmäßig schon auf E_ALL steht, ist ein fahrlässiges 
und ziemlich trauriges Bild und Relikt aus den Anfängen von PHP.

von Michael B. (mb_)


Angehängte Dateien:

Lesenswert?

Ich habe mir da mal ein Python script zusammengekloeppelt um die Preise 
automatisch runterzuladen, weil mich das originale Perlscript nicht 
wirklich ueberzeugt hat.

Das Script funktioniert derzeit fuer Reichelt (Fuer Conrad und Pollin 
sind stubs eingefuegt. Weitere Lieferanten kann man auch noch 
hinzufuegen).
Es unterstuetzt die Suche nach den Reichelt Text-Bestell-"nummern" (also 
fuer den Mega8 beispielsweise "ATMEGA 8-16 DIP"). Das script missbraucht 
den Warenkorb um an den Preis zu kommen, weil die Suche zu 
unzuverlaessig und oft merkwuerdige Ergebnisse liefert wenn man nach 
Bestellnummer sucht.
Das Tool hat zwei Betriebsmodi: Alle Preise auffrischen (default) und 
nur fehlende Preise einzutragen (--missing).

Das ganze funktioniert soweit ganz gut. Ich waere froh ueber 
Rueckmeldungen.


Usage: ./partdb-autoprice.py [OPTIONS]

-H|--host HOSTNAME    Use HOSTNAME as MySQL host (defaults to localhost)
-u|--user USER        Use USER as MySQL user (defaults to root)
-p|--password PASS    Use password PASS (defaults to prompt)
-d|--database DB      Use the database DB (defaults to partdb)
-m|--missing          Fetch and fill missing prices only (default off)
-h|--help             Print this help text

von Robin T. (rotoe) Benutzerseite


Lesenswert?

Hallo,

habe die DB jetzt auch mal auf meinem Server aufgesetzt.
Es gibt auch keine Fehler alles funktioniert.
Außer das wichtigeste, das Menü :)
Ich benutze Firefox habe es aber auch mit dem IE ausprobiert.
Es wird einfach nicht angezeigt.
Vieleicht kann mir da mal jemand nen Tipp geben woran das leigen könnte

von K. J. (Gast)


Lesenswert?

hm kein Java/javascript ? denke mal so was wird des sein der einzige 
Browser der bei dem Menü zikt ist eigentlich nur Opera, vielleicht wird 
es auch wegen irgendwelcher Sicherheitseinstellungen geblockt.

Michael Buesch schrieb:
> Ich habe mir da mal ein Python script zusammengekloeppelt um die Preise
> automatisch runterzuladen, weil mich das originale Perlscript nicht
> wirklich ueberzeugt hat.
>
> Das Script funktioniert derzeit fuer Reichelt (Fuer Conrad und Pollin
> sind stubs eingefuegt. Weitere Lieferanten kann man auch noch
> hinzufuegen).
> Es unterstuetzt die Suche nach den Reichelt Text-Bestell-"nummern" (also
> fuer den Mega8 beispielsweise "ATMEGA 8-16 DIP"). Das script missbraucht
> den Warenkorb um an den Preis zu kommen, weil die Suche zu
> unzuverlaessig und oft merkwuerdige Ergebnisse liefert wenn man nach
> Bestellnummer sucht.
> Das Tool hat zwei Betriebsmodi: Alle Preise auffrischen (default) und
> nur fehlende Preise einzutragen (--missing).
>
> Das ganze funktioniert soweit ganz gut. Ich waere froh ueber
> Rueckmeldungen.
>

Hi, Hab es noch nicht getestet aber würde es dich stören wen ich das ins 
nächste Relyse mit intrigiere natürlich mit Namensnennung ?

Bin grade wieder dabei

von K. J. (Gast)


Lesenswert?

So getestet und nen ganz fiesen Fehler gefunden gut das ich nen Backup 
habe :P

Und zwar das wen er keinen Preis findet löscht das Ding auch schon mal 
eingegebene preise das ist mehr als ungünstig.

von A. M. (bacarni) Benutzerseite


Lesenswert?

Robin Tönniges schrieb:
> Es gibt auch keine Fehler alles funktioniert.
> Außer das wichtigeste, das Menü :)
> Ich benutze Firefox habe es aber auch mit dem IE ausprobiert.
> Es wird einfach nicht angezeigt.
> Vieleicht kann mir da mal jemand nen Tipp geben woran das leigen könnte

Ja das stimmt. Hab es mir auch gerade runtergeladen. Das Problem liegt 
in der nav.php.
Dort in der Zeile 86 ist öffnende Tag von PHP flasch.
es sollte
1
<?php
heißen.
Abspeichern und das Menü sollte funktionieren.

von K. J. (Gast)


Lesenswert?

Naja nicht wirklich PHP kennt beides <? und <?PHP nur des <? solte man 
nicht mehr benutzen hab ich wohl bei der Umstellung übersehen.

von Michael B. (mb_)


Angehängte Dateien:

Lesenswert?

K. J. schrieb:
> So getestet und nen ganz fiesen Fehler gefunden gut das ich nen Backup
> habe :P
>
> Und zwar das wen er keinen Preis findet löscht das Ding auch schon mal
> eingegebene preise das ist mehr als ungünstig.


Das war kein fieser Fehler, sondern das ist so gewollt.
Ich habe das aber in der neuen Version (die diesem Beitrag anhaengt) 
optional gemacht. Das Verhalten tritt jetzt nur noch auf, wenn man die 
Option --override angibt.

von K. J. (Gast)


Lesenswert?

bestendank !!!

von Robin T. (rotoe) Benutzerseite


Lesenswert?

A. M. schrieb:
> Robin Tönniges schrieb:
>> Es gibt auch keine Fehler alles funktioniert.
>> Außer das wichtigeste, das Menü :)
>> Ich benutze Firefox habe es aber auch mit dem IE ausprobiert.
>> Es wird einfach nicht angezeigt.
>> Vieleicht kann mir da mal jemand nen Tipp geben woran das leigen könnte
>
> Ja das stimmt. Hab es mir auch gerade runtergeladen. Das Problem liegt
> in der nav.php.
> Dort in der Zeile 86 ist öffnende Tag von PHP flasch.
> es sollte
>
1
<?php
> heißen.
> Abspeichern und das Menü sollte funktionieren.

Funktioniert leider auch nicht :(

von Florian F. (vollbio)


Lesenswert?

Robin Tönniges schrieb:
> Funktioniert leider auch nicht :(

Vielleicht hast du eine Kategorie "IC's" angelegt? Deshalb hat bei mir 
das Menü nicht funktioniert. Das "'" im Namen ist wohl ein Problem.
1
d.add(1,0,'IC's','showparts.php?cid=1&type=index"','','_content_frame');

MfG

von K. J. (Gast)


Lesenswert?

Michael Buesch schrieb:
> K. J. schrieb:
>> So getestet und nen ganz fiesen Fehler gefunden gut das ich nen Backup
>> habe :P
>>
>> Und zwar das wen er keinen Preis findet löscht das Ding auch schon mal
>> eingegebene preise das ist mehr als ungünstig.
>
>
> Das war kein fieser Fehler, sondern das ist so gewollt.
> Ich habe das aber in der neuen Version (die diesem Beitrag anhaengt)
> optional gemacht. Das Verhalten tritt jetzt nur noch auf, wenn man die
> Option --override angibt.

Hi, super Arbeit funktioniert recht gut ist jedenfalls super wenn man es 
nicht selber machen möchte habs mir aufm Server in nen crontab gebaut 
damit es einmal die Woche abgeglichen wird ich hoffe mal Reichelt sperrt 
das nicht irgendwann mal.

von Michael B. (mb_)


Angehängte Dateien:

Lesenswert?

Hier ist eine neue Version von PartDB-autoprice.

Die Aenderungen sind:
* Pollin pricefetcher hinzugefuegt.
* Kleiner bugfix. Ein Fehlerbehandlungspfad in Reichelt-fetcher war 
fehlerhaft (haha) und hat das script getoetet, wenn er denn ausgeloest 
wurde. Der Fehlerpfad kann aber nur ausgeloest werden, wenn Reichelt die 
homepage aendert und somit die regex nichtmehr zutrifft.

Der Pollin fetcher erkennt Bestellnummern im "00-000 000" oder "000 000" 
Format. Leerzeichen spielen keine Rolle. Der Bindestrich wird zum 
Erkennen der Variante genommen. Die Funktionsweise ist die gleiche wie 
beim Reichelt fetcher ueber den Warenkorb.

Viel Spass!

von Uwe E. (dg7bbu)


Lesenswert?

Moin......


> Ja das stimmt. Hab es mir auch gerade runtergeladen. Das Problem liegt
> in der nav.php.
> Dort in der Zeile 86 ist öffnende Tag von PHP flasch.
> es sollte
>

<?php

> heißen.
> Abspeichern und das Menü sollte funktionieren.


Der Fehler ist immer noch drinne, nun sind auch meine Menüs sichtbar...
Cooles Programm...

mfg Uwe

von K. J. (Gast)


Lesenswert?

Uwe E. schrieb:

> Der Fehler ist immer noch drinne, nun sind auch meine Menüs sichtbar...
> Cooles Programm...
>
> mfg Uwe

Ja ligt dadran das es noch keine neue version gibt hab noch einen bug 
den ich vor der nästen ver weg haben möchte ich hoffe mal ich schaffe es 
bis zum nästen we.

von Uhu U. (uhu)


Lesenswert?

@ theborg0815:

Gibts irgendwo eine Beschreibung, wie man dein Paket installieren kann?

Ich habe im Moment part-db version 0.1d in einer virtuellen Maschine 
installiert und würde gerne auf deine Version umsteigen.

von Uwe E. (dg7bbu)


Lesenswert?

Moin.....

Uhu Uhuhu schrieb:
> @ theborg0815:
>
> Gibts irgendwo eine Beschreibung, wie man dein Paket installieren kann?
>
> Ich habe im Moment part-db version 0.1d in einer virtuellen Maschine
> installiert und würde gerne auf deine Version umsteigen.

@Uhu
würde ich mal per Mail machen, um das Forum nicht voll zu müllen.

@K.J.
Kann(darf) man eigentlich in diesem Wikiartikel hier zu Part-db als 
Fremder (nicht Programmautor)auch reinschreiben ?? Ich würde dann die 
Installation /Einrichtung etwas mehr beschreiben, oder unterstützen 
wollen ??

mfg Uwe

von K. J. (Gast)


Lesenswert?

Hi Uwe

Natürlich dafür ist es ein Wiki Artikel hab nur die Installation grob. 
beschrieben.

@uhu

^^

von Uhu U. (uhu)


Lesenswert?

@ Uwe E.:
Das hat leider nichts mit "Forum zumnüllen" zu tun. Siehe folgenden 
Text.

@theborg:
Ich finde es wirklich schade, daß du dein Licht so unter den Scheffel 
stellst und nichts dafür tust, den Zugang zu deinem Programm möglichst 
leicht zu machen.

Ich hatte gestern versucht, über die Suchfunktion des Forums deinen 
Wikiartikel zu finden - leider ohne Erfolg. (Von dessen Existenz wußte 
ich von deinem Löschantrag für einen alten Artikel; der Löschantrag ist 
aber offenbar mittlerweile selbst gelöscht ist.)

Wenn du in deinen vorheigen Beitrag einfach nur [[Part-DB RW - 
Lagerverwaltung]] in [[]] geschrieben hättest, dann hätte ich ihn 
schnell gefunden, statt hier erst mal sämtliche Beiträge durchsuchen zu 
müssen, um dann im Beitrag "Re: PART-DB RW 1.2" 
einen recht vagen Hinweis zu finden.

Mein Vorschlag: Setze doch einfach diesen Wikilink ans Ende jeden 
Beitrags, den du hier schreibst. Das kostet keine Mühe und macht deine 
schöne Arbeit anderen leicht zugänglich.

Wenn du willst, kann eine richtig schöne Installationsanleitung zu dem 
Paket schreiben, die dann einfach mit ins Software-Archiv kopiert werden 
kann.

Außerdem könnte man das gesamte Paket vorinstalliert in einer virtuellen 
Maschine zum Download bereithalten. Das würde den Einstieg sehr 
erleichtern.

von K. J. (Gast)


Lesenswert?

Uhu Uhuhu schrieb:
> @ Uwe E.:
> Das hat leider nichts mit "Forum zumnüllen" zu tun. Siehe folgenden
> Text.
>
> @theborg:
> Ich finde es wirklich schade, daß du dein Licht so unter den Scheffel
> stellst und nichts dafür tust, den Zugang zu deinem Programm möglichst
> leicht zu machen.
>

Hm ich benutze immer grundsätzlich die Google suche auf der Hauptseite 
die ist wesentlich besser.

Naja das hat auch gründe ich habe lange lange zeit OS SW geschrieben da 
aber grundsätzlich ca.98% unproduktiv meckern hab ich da einfach keine 
Lust mehr zu.

Ich Programmiere schon lange nicht mehr für andere sondern nur noch für 
mich und das Veröffentlichen mach ich eigentlich nur noch nebenbei wenn 
irgentwo mal zufällig Interesse besteht.


Part-DB RW - Lagerverwaltung

von K. J. (Gast)


Lesenswert?

Klar wenn ihr was erarbeitet binde ich das natürlich gerne mit ein.

von Uwe E. (dg7bbu)


Lesenswert?

Mahlzeit....

>
> Wenn du willst, kann eine richtig schöne Installationsanleitung zu dem
> Paket schreiben, die dann einfach mit ins Software-Archiv kopiert werden
> kann.

Das iss ja doll, ich beteilige mich auch gerne vieleicht als Quer oder 
Korrekturleser oder so.... (iss sowieso mein Job)..

> Außerdem könnte man das gesamte Paket vorinstalliert in einer virtuellen
> Maschine zum Download bereithalten. Das würde den Einstieg sehr
> erleichtern.

Da habe ich keine Ahnung von... aber beim Programm kann ich auch noch 
son paar Sachen mithelfen. Bin zwar kein Held in PHP und MySQL finde 
aber ab und zu auch nen paar Macken:-)))

Haupsächlich bin ich an dem Programm interessiert. Ich ziehe gerade mit 
meiner kleinen Hobby Werkstatt um und musste feststellen das ich diverse 
Bauteile nun doppelt und dreifach habe..  7805 habe ich jetzt 35 Stück.
Letzte Woche habe ich mir beim hiesigen Dealer noch welche gekauft. 
grummel

Das Programm ist gut und nach meinem Geschmack..

@K.J.  wenn ich was ändere schicke ich es Dir...
mfg Uwe...

von K. J. (Gast)


Lesenswert?

hm wen du mir ne mail schreibst schikke ich dir gerne wen du möchtest 
die aktuelle dev Version rüber den musst du vieles nicht nochmal machen.

von Uhu U. (uhu)


Lesenswert?

Ok, abgemacht, ich kümmere mich um die Installationsanleitung und da ich 
meine DB sowieso in einer VM installieren will, dokumentiere ich gleich 
noch, wie ich sie zusammen gebaut habe und wie man sie zum Laufen 
bringt.

von Uhu U. (uhu)


Lesenswert?

Welche Web-Server benutzt ihr denn, um part-db zu betreiben?

Ich bin im Moment dabei, das Paket auf einer TurnKey MySql-Applience zum 
Laufen zu bekommen. Dort ist Lighttpd (Ligthy) vorinstalliert. Dieser 
Server läuft auch unter Windows.

von Robin T. (rotoe) Benutzerseite


Lesenswert?

XAMPP

von Uwe E. (dg7bbu)


Lesenswert?

Moin....


Uhu Uhuhu schrieb:
> Welche Web-Server benutzt ihr denn, um part-db zu betreiben?

@uhu
Ich nehme immer meine lokale linux Möhre.
ein schnelles opensuse 11.... ohne den grafischen schnickschnack. Das 
ist meist in einer viertelstunde auf einem vorhandenen ausgemusterten 
Rechner installiert.

Mysql einschalten
Apache einschalten
phpmyadmin draufspielen
zugangsdaten draufspielen
partdb raufkopieren, mittels samba die htdocs freigemacht,
passwortgeschnösel rausgeschmissen, da ist linux zu sicher das will ich 
nicht.

Dann kannste von Windoof mittels Notepad++ an den php dateien spielen 
und via webserver die Partdb bearbeiten.

Also das geht so gut bei mir.. das meine Söhne sich da jetzt auch schon 
reinfummeln...

@K.J.
Meine EmailAddressen habe ich Dir per PM durch dieses Forum 
geschickt....

So iss Sonntagnachmittag muss die Frau raustreiben..


Gruss Uwe

von Uhu U. (uhu)


Lesenswert?

@ Uwe E.

Ich hab sowas schon öfters gemacht und ich muß doch sagen, daß es oft 
nicht so glatt geht. Obwohl es relativ simpel gestrickt ist, steckt bei 
bei part-db der Teufel im Detail und mit den bestehenden Beschreibungen 
kommt man halt nicht weiter, wenn es auf Anhieb nicht klappt.

Deswegen ziehe ich für derlei Geschichten virtuelle Maschinen vor. Die 
brauchen keine eigene Hardware und man kann sie in wenigen Minuten von 
einer Systemplatte auf eine andere schieben.

Meine alte Version habe ich auf einer selbst zusammenkonfigurierten 
Kommandozeilen-Linux-Version laufen. Hat aber den Nachteil, daß die 
virtuelle Maschine relativ fett ist und damit kaum übers Web zu 
verschicken ist.

Die TurnKey-Version kann man sich fertig mit Lighty, MySql, PhpMyAdmin 
und Webmin als ~150 MB Zipfile herunter laden.

Allerdings rudere ich noch mit part-db, die die vorhandene und befüllte 
DB aus irgendwelchen komischen Gründen nicht ansprechen will. Wenn ich 
die angemeckerten Queries in PhpMyAdmin eingebe, dann funktionieren die 
tadellos.

von Uhu U. (uhu)


Lesenswert?

Mittlerweile läuft die Mühle...

von Uwe E. (dg7bbu)


Lesenswert?

nabend

>Uhu Uhuhu schrieb:

> Ich hab sowas schon öfters gemacht und ich muß doch sagen, daß es oft
> nicht so glatt geht. Obwohl es relativ simpel gestrickt ist, steckt bei
> bei part-db der Teufel im Detail und mit den bestehenden Beschreibungen
> kommt man halt nicht weiter, wenn es auf Anhieb nicht klappt.

Bei der Part-DB ist eben noch alles recht einfach gestrickt. Aber man 
erkennt schon die Grundzüge wie bei Joomla /Wordpress /oder anderen 
solchen Websystemen, da hat man dann schon seine Erfahrung her.
Daher kann man schon erkennen, wenn es manchmal harkt. Nachdem die 
Datenbankfehler dann alle weg waren, fehlte mir noch das Menü. Irgendwo 
in diesem langen Tread hatte das auch schon jemand beschrieben (ein PHP 
dingens fehlte noch irgendwo oder war falsch).
Ich habe das dann mal nachgetragen und ab da funktionierte das System. 
Es ist zwar manchmal etwas eckig aber dafür ist es noch gut zu 
überschauen.

> Deswegen ziehe ich für derlei Geschichten virtuelle Maschinen vor. Die
> brauchen keine eigene Hardware und man kann sie in wenigen Minuten von
> einer Systemplatte auf eine andere schieben.

Habe ich noch nie gemacht... VMs waren mir bis jetzt immer zu mächtig

> Allerdings rudere ich noch mit part-db, die die vorhandene und befüllte
> DB aus irgendwelchen komischen Gründen nicht ansprechen will. Wenn ich
> die angemeckerten Queries in PhpMyAdmin eingebe, dann funktionieren die
> tadellos.

Hmmm, ich quäle mich gerade durch den HTML krams um die Menüs ein wenig 
in eine andere Form zu bringen.... Ich hatte auch schon daran gedacht 
eine Art AdminMode oder Menü für Datensicherungszwecke an/einzubauen

Nun ist das Wochenende vorbei mal sehen was die nächste Woche noch so 
bringt...Das befüllen der Datenbank passiert schon gleichzeitig... :-)

Gruss Uwe

von Uhu U. (uhu)


Lesenswert?

@theborg0815:

Firefox wird beim Betrieb von PartDB sehr schnell gähnend langsam. Ich 
habe deshalb mal die Funktion "Validate Local HTML" des Add-ons 
WebDeveloper gestartet und für die Anzeige von Teilen 8 Validation 
Errors erhalten.

Es sind wohl im Wesentliche Tippfehler und fehlende Klammern, aber das 
sind die Gurken, die FF erfahrungsgemäß zum Schleudern bringt.

von TB (Gast)


Lesenswert?

Hi magste mir die Fehler ausgabe mal schikken ? hab zuhause leider 
momentnan kein internet ca. ne woche noch alerdinks kann ich dan 
schonmal vorarbeiten.

^^ sobald das inet bei mir wieder geht schike ich euch die mails mit der 
aktuellen dev-version.

mfg tb

von Uhu U. (uhu)


Angehängte Dateien:

Lesenswert?

Hier sind die Validator-Outputs für html und css

von Uhu U. (uhu)


Lesenswert?

@theborg0815: Hab dir ne PM geschickt.

von tb (Gast)


Lesenswert?

at uhu

Gutte idee ich hab schon angefangen damit mach den auch gleich die 
anderen Daten mit rein die in der liste fehlen.

von Uhu U. (uhu)


Lesenswert?

Pack nicht zu viel rein - das gelbe Fensterchen verschwindet nach kurzer 
Zeit wieder. Wenn da zu viel Text drin ist, wirds nervig den zu lesen.

Das kannst du hier direkt ausprobieren: 
Beitrag "Re: PART-DB RW 1.2"

Cursor über den Link halten...

von Uhu U. (uhu)


Angehängte Dateien:

Lesenswert?

@theborg0815:

Ich habe nochmal eine andere VM - diesmal mit apache2 - aufgesetzt und 
stehe jetzt schon wieder vor demselben Problem, wie am Sonntag.

Folgendes habe ich nach dem Konfigurieren der VM gemacht:

- Über PhpMyAdmin eine Datenbank part-db angelegt
- Die Tabellen angelegt
- Meine Daten in part-db importiert
- Über Webmin einen User part-db ohne Paßwort angelegt
- Über PhpMyAdmin dem User part-db alle Änderungsrechte auf Daten in
  der DB part-db gegeben

In PhpMyAdmin kann ich die Datenbank browsen. Siehe Screenshot2

- Part-DB-0.1.3b.tar.gz in /var/www entpackt
- das Verzeichnis /var/www/Part-DB umbenannt in /var/www/part-db
- chown -R www-data:www-data /var/www/part-db
- nano /var/www/part-db/lib.php
  und dort folgende Änderungen in function partdb_init() gemacht:
    $link = mysql_connect ("localhost", "part-db", "");
    mysql_select_db ("part-db");

Wenn ich jetzt http://<ipadresse>/part-db aufrufe, dann kommt das Bild 
wie im Anhang.

Was ist da kaputt?

von Uhu U. (uhu)


Lesenswert?

Nachtrag:
Unter Lagerorte, Footprints, Kategorien, Lieferanten zeigt part-db keine 
Einträge an, obwohl die DB dafür Daten enthält. (Sieht man im obigen 
Screenshot2 daran, daß in der Spalte Action das Browse-Icon (das erste) 
nicht ausgegraut ist.

von Uhu U. (uhu)


Angehängte Dateien:

Lesenswert?

OK, Ursache gefunden:

Man muß dem User part-db in PhpMyAdmin als Host localhost zuweisen

Part-DB RW - Lagerverwaltung

von DG7BBU (Gast)


Lesenswert?

Moin... nen bischen komisch geschrieben.....

Um auf eine Datenbank zuzugreifen, muss man sich bei der Datenbank 
anmelden.

Mit Ipadresse/Hostname, Name, Passwort, Datenbankname.

Das wird im PHP Programm lib.php um die Zeile 50 herum gemacht.

Allerdings muss man auch seine Datenbank (MySQL) mit diesen Daten 
einrichten.

Ich (grins) falle da jedesmal wieder drauf rein.... Wenn mal Zeit ist 
muss man mal ein Admintool schreiben... Welches einen dabei hilft die 
Vergesslichkeit zu verringern :-).....


Gruss Uwe

von Uhu U. (uhu)


Lesenswert?

Ich bin gerade dabei, eine haarkleine Installationsanleitung zu 
stricken...

von Uhu U. (uhu)


Lesenswert?

Part-DB RW - Lagerverwaltung

Ich hoffe, daß man damit klarkommen kann...

von Georg (Gast)


Lesenswert?

Hallo,

ich bin von der Part-DB sehr begeistert und würde diese 
bauteilverwaltung gern in unserem Modellbahnverein einsetzten.
Vor keinigen Wochen konnte ich die Software live auf einer Ausstellung 
bewundern.
Ein Aussteller hatte diese Software weitentwickelt. Er hatte 
Exportfilter für PDF und Excel integriert, sowie eine Druckfunktion 
direkt aus dem Browser heraus.
Diese version hatte auch eine Benutzerverwaltung und ein 
Projektmanagment, man konnte Bauprojekte verwalten und die teile aus der 
Datenbank wurden einbezogen.
Leider ist mir die Visitenkarte des Entwicklers verloren gegangen. Ich 
weiß nur noch, dass er Frank wunderlich heißt und aus Dresden kam. Wir 
hatten uns unterhalten und er sagte mir, dass er über dieses Forum auf 
die Software aufmerksam wurde.
Vielleicht kennt hier jemand den Entwickler und kann mir seine 
Kontaktdaten geben.

Danke.

von Florian F. (vollbio)



Lesenswert?

Suche mal bei dastelefonbuch.de mit Karten-Suche

von Julian O. (juliano)


Angehängte Dateien:

Lesenswert?

Guten Morgen

Ich bin gerade dabei Part-DB ein wenig für den Eigenbedarf anzupassen. 
Dabei habe ich festgestellt, dass es sehr mühsam ist Widerstände und 
Ähnliche Bauteile einzupflegen. Grund: der Footprint, Lagerort usw. 
setzt sich nach jedem Bauteil wieder zurück.

Abhilfe: newpart.php und showparts.php angepasst. Man kann jetzt über 
Checkboxen auswählen ob und wenn ja welche Daten im "neues Teil" 
Formular gespeichert werden

Einfach die zwei vorhandenen Dateien überschreiben (und ggf. 
Sicherheitskopien erstellen).

Viel Spass damit

von K. J. (Gast)


Lesenswert?

Uhu Uhuhu schrieb:
>
> Wenn ich jetzt http://<ipadresse>/part-db aufrufe, dann kommt das Bild
> wie im Anhang.
>
> Was ist da kaputt?

Normal du kanst in der config von MYSQL mehrere hostnamen angeben dann 
klapt das auch z.b. DNS+Localhost+Locale IP....

Ist ne sicherheitzfunktion von MYSQL ebentso kanste aber auch ganze IP 
bereiche da angeben.

Damit halt nicht jeder von überall Zugriff hat

von Uwe E. (dg7bbu)


Lesenswert?

Moin.....


Julian O. schrieb:
> Guten Morgen

> Abhilfe: newpart.php und showparts.php angepasst. Man kann jetzt über
> Checkboxen auswählen ob und wenn ja welche Daten im "neues Teil"
> Formular gespeichert werden
>
> Einfach die zwei vorhandenen Dateien überschreiben (und ggf.
> Sicherheitskopien erstellen).
>
> Viel Spass damit


Danke, funktioniert.....


Gruss Uwe

von K. J. (Gast)


Lesenswert?

Wolle noch anmerken wen jemand mitmachen möchte oder Aktuelle Betas 
testen möchte kann mal unter folgenden Link schauen.

http://code.google.com/p/part-db/

von Kille H. (kille)


Lesenswert?

Hallo K. J.

hab gleich mal die Beta installiert. Was bei mir nicht geht, umbenennen 
von Fotprints.

Bei der 1.3b hab ich noch ein weiteres Problem (geht auch nicht bei der 
Beta):
Hab von ner alten Version noch vom Christoph geupdatet. Irgendwie 
bekomme ich es nicht hin, das er mir die schon vorhandenen Bilder der 
Fotprints anzeigt.

Danke für deine Arbeit. Part-DB schaut so wirklich hervorragend aus!

Grüße,
   Kille

von K. J. (Gast)


Lesenswert?

Kille H. schrieb:
> Hallo K. J.
>
> hab gleich mal die Beta installiert. Was bei mir nicht geht, umbenennen
> von Fotprints.
>

Ja ist bekannt hänge da noch fest komme mit dem HTML Quatsch nicht klar 
;(

> Bei der 1.3b hab ich noch ein weiteres Problem (geht auch nicht bei der
> Beta):
> Hab von ner alten Version noch vom Christoph geupdatet. Irgendwie
> bekomme ich es nicht hin, das er mir die schon vorhandenen Bilder der
> Fotprints anzeigt.

jo da hat sich einiges geändert die Bilder die du selber Hochgeladen 
hast müssen nach ../img dann solte es wieder gehen.

Die Bilder die bei den Footprints schon mitgeliefert werden da steht 
grob in der hilfe wie das geht.

wen du nen Fotprint bild hast /tools/foo..../ssop16.png z.b. dann wird 
das nur angezeigt wen der Footprint ssop16 heist (Gross und 
Kleinschreibung beachten).

von Kille H. (kille)


Lesenswert?

K. J. schrieb:

> Die Bilder die bei den Footprints schon mitgeliefert werden da steht
> grob in der hilfe wie das geht.
>
> wen du nen Fotprint bild hast /tools/foo..../ssop16.png z.b. dann wird
> das nur angezeigt wen der Footprint ssop16 heist (Gross und
> Kleinschreibung beachten).

Ahh danke für den Hinweis. Die Hilfe hab ich natürlich gelesen. 
Allerdings hab ich das mit der Gross und Kleinschreibung nicht beachtet. 
Jetzt funzts!

Was noch cool wär, wenn Du noch den Dateinamen unter Tools Fotprints 
einblenden kannst.

Grüße
  Kille

von K. J. (Gast)


Lesenswert?

Ja ist eins der vielen Sachen hätte die Liste da gerne PHP generiert und 
nicht statisch wie es jetzt ist.

von Kille H. (kille)


Lesenswert?

K. J. schrieb:
> Ja ist eins der vielen Sachen hätte die Liste da gerne PHP generiert und
> nicht statisch wie es jetzt ist.

Dynamisch wär natürlich fein. Aber die Sachen die man selber hinzufügt 
sollte man ja kennen.

Jetzt Hab ich mal meine Fotprints manuell umbenannt. Jetzt ist alles gut 
;-)!

Grüße,

  Kille

von Uwe E. (dg7bbu)


Lesenswert?

Uwe E. schrieb:
> Moin.....
>
>
> Julian O. schrieb:
>> Guten Morgen
>
>> Abhilfe: newpart.php und showparts.php angepasst. Man kann jetzt über
>> Checkboxen auswählen ob und wenn ja welche Daten im "neues Teil"
>> Formular gespeichert werden
>>
>> Einfach die zwei vorhandenen Dateien überschreiben (und ggf.
>> Sicherheitskopien erstellen).
>>
>> Viel Spass damit
>
>
> Danke, funktioniert.....
>
>
> Gruss Uwe
Grmppf funktioniert doch nicht.... Der Mindestbestand wird trotz 
gesetztem Häckchen immer wieder auf "0" gesetzt obwohl ne 5 
o.ä.eingegeben wurde....

Gruss Uwe

von Uwe E. (dg7bbu)


Lesenswert?

Moin... Hat das schon mal jemand mit den Bildern hinbekommen ????

Ich habe mir ein Artikel Bild in JPG gebau und bei der Teile Eingabe 
hochgeladen...  Das Bild wird nirgendwo gezeigt.... Das Bild ist auch 
nicht sehr gross (6KB)

Was ist eigentlich mit einem "FOOTPRINT" gemeint?

Ich brauche den eigentlich nicht, muss Ihn aber überall zwingend 
eingeben.
Da ich alles an  Material in die Datenbank drücke, auch Dübel und 
Schrauben, sehe ich den Sinn für ein Footprint nicht, wofür ist denn 
dann das Bild (welches gerade im Moment bei mir nicht funktioniert).

Gruss Uwe

von K. J. (Gast)


Lesenswert?

Uwe E. schrieb:
> Moin... Hat das schon mal jemand mit den Bildern hinbekommen ????
>
> Ich habe mir ein Artikel Bild in JPG gebau und bei der Teile Eingabe
> hochgeladen...  Das Bild wird nirgendwo gezeigt.... Das Bild ist auch
> nicht sehr gross (6KB)
>
> Gruss Uwe

Hi das mit den bildern funktioniert bei mir jedenfalls sowohl bei der 
0.1.3b als auch bei der SVN Version, gezeigt werden sollte es bei der 
bauteielliste links neben dem Link zum editieren.

eventuel haste die rechte von /img nicht richtig ? liegt das Bild denn 
da drinnen ?

von Uwe E. (dg7bbu)


Lesenswert?

Moin....

K. J. schrieb:

>> Ich habe mir ein Artikel Bild in JPG gebau und bei der Teile Eingabe
>> hochgeladen...  Das Bild wird nirgendwo gezeigt.... Das Bild ist auch
>> nicht sehr gross (6KB)
>>

> Hi das mit den bildern funktioniert bei mir jedenfalls sowohl bei der
> 0.1.3b als auch bei der SVN Version, gezeigt werden sollte es bei der
> bauteielliste links neben dem Link zum editieren.
>
> eventuel haste die rechte von /img nicht richtig ? liegt das Bild denn
> da drinnen ?

Die Rechte des Verzeichnisses sind hoch (47777) daran wir es nicht 
liegen (hoffe ich) die Dateien sind in de Rechte auch sehr hoch und 
liegen im Verzeichniss /img mit den Verzeichnisst Footprint und noch 
zwei weitere...

Beide Browser IE8 und FF3.5 zeigen keine Bilder... Interessant ist das 
der IE8 auch das CSS nicht richtig auseinanderfusselt. Bei IE8 ist der 
Hintergrund komplett grün beim FF3.5 ist der Farbverlauf einwandfrei zu 
sehen...

mfg Uwe

von K. J. (Gast)


Lesenswert?

ah merkwürdig ka wo dran das liegt mitm IE8 hab ichs nicht getestet aber 
eigentlich solte es gehen jedenfals nen merkwürdiges Fenomain.

von Julian O. (juliano)


Angehängte Dateien:

Lesenswert?

Hi Uwe,

>>> der Footprint, Lagerort usw. setzt sich nach jedem Bauteil wieder zurück.
>>> Abhilfe: newpart.php und showparts.php angepasst. Man kann jetzt über
>>> Checkboxen auswählen ob und wenn ja welche Daten im "neues Teil"
>>> Formular gespeichert werden
>>
>> Danke, funktioniert.....
>>
> Grmppf funktioniert doch nicht.... Der Mindestbestand wird trotz
> gesetztem Häckchen immer wieder auf "0" gesetzt obwohl ne 5
> o.ä.eingegeben wurde....

habs gefixt. War ein ck statt einem c in einem Variablennamen. 
Vielleicht sollte ich in Zukunft doch früher ins Bett...

@theborg:
>Wolle noch anmerken wen jemand mitmachen möchte oder Aktuelle Betas
>testen möchte kann mal unter folgenden Link schauen.
>http://code.google.com/p/part-db/

ähm: wie kann man da partizipieren? Gibts da irgend eine art 
"To-Do"-Liste?

von TB@work (Gast)


Lesenswert?

ah ja da bei issu glaub ich hab das googel ding nicht net ganz 
durchschaut.

von Uwe E. (dg7bbu)


Lesenswert?

Moin...


Ich habe auch ein File angepasst, ich habe nur das Aussehen von der 
Maske versucht anzupassen,...  bin halt auch kein HTML in PHP Freak....

Ansonst werde ich mal mit Subversion rumspielen und hoffe da es uns 
helfen kann unsere Files besser bereit zustellen...

aber die Zeit die Zeit.....

gruss Uwe

von K. J. (Gast)


Lesenswert?

Hi kanst auch gerne die dateien / diffs hier Posten ich schau mir an 
finde es auch wichtig das nicht alles übernommen wird sondern nur das 
was sinnvoll ist

von Michael B. (mb_)


Lesenswert?

Es gibt eine neue Version von PartDB-Autoprice; dem Script zum 
automatischen Preis-download.

http://bu3sch.de/partdb-autoprice/partdb-autoprice-004.py

Im Vergleich zur Version 003 gibts minimale Bugfixes.

von K. J. (Gast)


Lesenswert?

So hab grade mal nen neues Paket gepackt allerdings sind immer noch 
einige Fehler drinnen.

z.b.
Umbenennen der Footprints
Das mit den Titel popups geht noch nicht.

und es hat sich was geändert die Config Daten stehen jetzt in der 
config.php das macht das updaten einfacher, also beim einspielen drauf 
achten das man die Daten da einträgt.

http://part-db.googlecode.com/files/Part-DB-0.1.4RC1.tar.gz

von Kille H. (kille)


Lesenswert?

Hallo theborg,

vielen Dank für eine neue Version.

Habs mal gleich getestet! Wo genau liegen da die unterschiede?

Was mir aufgefallen ist:
  Es lassen sich kategorien löschen wenn sie unterkategorien haben.
  Bilder für reichelt und datasheet gehen jetzt.
  Die Part-DB Version die oben angezeigt wird ist noch 1.3...

Ansonsten find ichs Prima!

Grüße,
 Kille

von K. J. (Gast)


Lesenswert?

Hi das Paket ist die aktuelle SVN Version.

von Armin B. (baumix) Benutzerseite


Lesenswert?

Hallo zusammen,

ich weiss, der Beitrag ist schon älter, aber meine Wünsche passen eben 
gut in diesen Thread :-)

Ich nutze die Part-DB schon seit über zwei Jahren und habe kürzlich erst 
die neue Version von theborg installiert - ein wahrer Fortschritt!

Da ich kaum Ahnung von PHP habe, würde ich mir wünschen, dass folgende 
Funktion implementiert wird:

- Auflisten der Bauteile an einem bestimmten Lagerort

Ich benutze eine Kiste als Lagerort, in der Neuzugänge erst mal gelagert 
werden, bevor sie einsortiert werden. Oft würde ich gerne wissen, was 
denn noch in der Kiste drin ist - verliere oft den Überblick :-(

Andere Wünsche wurden schon genannt, z.B: mehrere Lagerorte pro Bauteil 
(z.B. 5 Stk. im Kleinteilemagazin, 2 Stk zum Einsortieren und 1000 Stk 
in der Überbestandskiste). Die Bauteile nochmal mit anderen Lagerorten 
anzulegen hat diverse Nachteile (z.B. Mindestbesstand, Bestelliste).

Vielleicht kann man das in den nächsten Evolutionsschritt mit einbauen, 
wäre eine echte Bereicherung.

Ciao ...

Baumix

von K. J. (Gast)


Lesenswert?

Hi, ja momentan ist die zeit etwas knap bei mir aber ich schau mal was 
ich hinbekomme

von Dennis L. (w124dennis)


Lesenswert?

Hallo Zusammen,
wollt auch nochmal nen Wunsch mitteilen, wäre es möglich, eine Historie 
darüber zu erstellen wann Bauteile geändert/hinzugefügt/entnommen 
wurden?
Ein weiter Wunsch, der auch schon mal gewünscht wurde, wäre mehrere 
Lagerorte gleichzeitig zu Erstellen z.B. Kiste1_[1..100] erstellt 
Kiste1_1 Kiste1_2 ... Kiste1_100

Gruß Dennis

von Dennis L. (w124dennis)


Lesenswert?

Und noch was, ein Button Entnehmen/Hinzufügen hinter jedem gefunden 
Bauteil in der Suchergebnistabelle wäre doch auch Nützlich oder? Das 
erspart einem oft das Öffnen, Menge eingeben und Entnehmen/Hinzufügen 
klicken

Gruß Dennis
(ps sorry editieren geht nicht)

von Pascal N. (hellraider)


Lesenswert?

Hallo zusammen,

Erstmal großes Lob an die Leute die das Projekt am Leben erhalten und 
weiterführen! Habs auf meinen Server hochgeladen und funktioniert auch 
alles tadellos. Das einzige Problem was ich habe ist das ich das Python 
Script, um die Preise zu updaten, nicht zum laufen bekomme. Muss ich das 
hochladen und im Browser irgendwie aufrufen oder in der index.php oder 
irgendeiner anderen php seite ausführen? Wenn ja mit welcher Codezeile 
bewerkstellige ich das? Vielen dank schonmal im vorraus

von Pascal N. (hellraider)


Lesenswert?

Vorsicht! Helft bloß keinem Anfänger! Ihr könntet euch beim tippen 
schließlich nen Finger brechen!

von mip (Gast)


Lesenswert?

Jo du hast es erfast bei mir reicht ein ./<script> <param> in der 
comandozeile oder ein perl -e <script> <param> ....

von mip (Gast)


Lesenswert?


von Pascal N. (hellraider)


Lesenswert?

Wow, richtig fix die Leute hier! Gerade mal einen Monat musste ich auf 
ne brauchbare Antwort warten. Reife Leistung wenn man bedenkt das ein 
Großteil der Leute hier das Teil schon zum laufen gebracht hat. Traurig 
das nur mit nachdruck die Ignoranz der User hier zu durchbrechen ist. 
Das ist im übrigen nicht nur hier der Fall sondern auch in vielen 
anderen Threads in diesem Forum (also für den Fall das jetzt jemand auf 
die Idee kommt mich hier als kleinlich zu betiteln)

Bevor mir jetzt irgendeiner wutentbrannt diverse Posts um die Ohren haut 
was mir wohl einfallen würde mich hier über eine Nichtbeantwortung 
meiner Anfängerfrage aufzuregen:

Ja mir ist klar das das hier kein Supportcenter ist


achja: Der Beitrag ist mir bekannt. Es steht schließlich nicht umsonst 
über dem Eingabefenster: " - erst lesen, dann posten!"

von Uhu U. (uhu)


Lesenswert?

Pascal N. schrieb:
> Das ist im übrigen nicht nur hier der Fall sondern auch in vielen
> anderen Threads in diesem Forum (also für den Fall das jetzt jemand auf
> die Idee kommt mich hier als kleinlich zu betiteln)

Andreas nimmt gerne deine Accountabmeldung entgegen - dann hast du 
keinen Grund mehr, dich hier langweilen zu lassen.

von Dennis L. (w124dennis)


Lesenswert?

Uhu Uhuhu schrieb:
> Andreas nimmt gerne deine Accountabmeldung entgegen - dann hast du
> keinen Grund mehr, dich hier langweilen zu lassen.

so sehe ich die Sache auch.

von Pascal N. (hellraider)


Lesenswert?

Braucht jemand Hilfe, wartet man einen Monat. Äussert man seine Meinung 
wird binnen einer Stunde auf dem Post reagiert... Was läuft hier falsch, 
das der kleine unwissende user grundlos mit ignoranz gestraft wird wenn 
er hilfe braucht?

Langweilen lassen? Auch für dich gilt: " - erst lesen, dann posten!".
Kann mich nicht daran erinnern etwas von langweilen lassen geschrieben 
zu haben. Naja es ist schon ein schweres Los wenn einen die ganzen 
Buchstaben verwirren...

Überrascht mich jetzt nicht das hier direkt mit Accountlöschung reagiert 
wird, das war abzusehen....

von K. J. (Gast)


Lesenswert?

Hm, verstehe dein Problem nicht genau du hast es erfasst es steht da 
oben irgentwo alles weitere musste halt schauen nicht jeder hat die zeit 
hier permanent rein zuschauen zumal die posts in diesen forum anhand der 
menge auch mal untergehen, b.z.w. wie du das mit php/crontab ... und co. 
ausführst hat nichts mit der Part-DB direkt zu tun sondern ehr mit 
deinen Server oder deinen eigenden intebsionen.

Per PHP direkt oder über die part db wird das nie gehen weil das eine 
funktion wehre die sicherheitztechnisch fragwürdig ist b.z.w. auch nicht 
unterstützt wird (savemode...)

von Pascal N. (hellraider)


Lesenswert?

Ach so ist das,

Okay danke für die Antwort, damit kann ich was anfangen!


MfG

Hellraider

von Dennis L. (w124dennis)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich habe ein paar Features eingebaut, hier die Hauptänderungen:
- Buttons zum Entnehmen/Hinzufügen in Such und Listenansicht hinzugefügt
- Suche nach Lagerorten hinzugefügt
- Suchliste zeigt jetzt auch thumbnails an
- Im Teile Hinzufügen Dialog direkteingabe von Lagerorten, Footprints 
und Lieferanten möglich (nicht existierende werden erzeugt)
- Beim Hinzufügen eines Teils kann jetzt auch gleich ein Bild angehängt 
werden


Gruß Dennis

von Dennis L. (w124dennis)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

Hier noch ein paar Verbesserungen,
- Dialoge sind jetzt modal
- Dialoge werden automatisch nach submit geschlossen
- Haupttabelle wird nach eine Änderung automatisch neu geladen

Gruß Dennis

von K. J. (Gast)


Lesenswert?

Hi, thx sieht gut aus einige kleinere Sachen die mir so aufgefallen sind 
aber da schaue ich am we nochmal drüber, b.z.w. ich tu mich mit den html 
form Geschichten immer etwas schwer so als Idee konnte man statt den 
Buttons nicht einfach nen up/down Pfeil machen die sind kleiner und man 
kann sie direkt neben der mengenangabe platzieren.

mfg k.j.

von Thomas K. (muetze1)


Lesenswert?

Ach Mist - nun habe ich zu lange gewartet. Ich hatte die PART-DB 
schonmal umgeschrieben auf OOP und CSS Nutzung, aber das nun wieder 
einzumischen wäre ein Horror.

So, nun habe ich dann mal den aktuellen Stand besorgt. Ich hätte ein 
Bitte für ein Feature (was ich bei mir auch noch nicht implementiert 
hatte): Bei den Ablageorten würde ich meine Sortierkästen eintragen (da 
diese durchnummeriert sind) und würde gerne die Fachnummer mit angeben. 
Gleiches für die hier bei Biozym bestellten SMD Boxen. Somit fehlt mir 
bei den Ablageorten eine Unterinformation. Deluxe Edition wäre dann 
natürlich, wenn man Ablagetypen definiern kann (Also Typ + Fächer) und 
dann einfach bei den Ablageort den Typ angibt und somit gleich die 
Fächer hat.

Ich weiss nur nicht wann ich mal wieder Zeit finde, weil dann würde ich 
nochmal schauen die CSS und OOP Änderungen erneut zu implementieren.

von Dennis L. (w124dennis)


Lesenswert?

K. J. schrieb:
> ich tu mich mit den html
> form Geschichten immer etwas schwer

ging mir ähnlich ^^ vorallem das man forms nicht verschachteln kann;)

K. J. schrieb:
> so als Idee konnte man statt den
> Buttons nicht einfach nen up/down Pfeil machen die sind kleiner und man
> kann sie direkt neben der mengenangabe platzieren.

Ja das ist keine schlechte Idee;) werde nächste Woche mal danach 
schauen.



Thomas K. schrieb:
> Bei den Ablageorten würde ich meine Sortierkästen eintragen (da
> diese durchnummeriert sind) und würde gerne die Fachnummer mit angeben.

Hm klingt nicht schlecht ich habe eigentlich das gleiche Problem, mal 
schauen ob das einfach geht ^^

Gruß Dennis

von txt (Gast)


Lesenswert?

Hallo,

ich habe PartDB jetzt auf auf einem neuen Webspace installiert. Wie kann 
ich die bisherigen Einträge importieren, in welcher Datei sind diese 
Einträge gespeichert.

Wie kann ich den Zugriff auf die PartDB vor unbefugten Personen 
schützen?

Danke

Gruß txt

von snipor (Gast)


Lesenswert?

Hallo,

ich würde mich auch freuen wenn mir einer sagen könnte wie ich das 
Perlscript zum laufen bekomme.

Dank

Gruß snipor

von K. J. (Gast)


Lesenswert?

txt schrieb:
> Hallo,
>
> ich habe PartDB jetzt auf auf einem neuen Webspace installiert. Wie kann
> ich die bisherigen Einträge importieren, in welcher Datei sind diese
> Einträge gespeichert.
>
> Wie kann ich den Zugriff auf die PartDB vor unbefugten Personen
> schützen?
>
> Danke
>
> Gruß txt


Wenn du das schon auf nen alten Server hattest musst du einfach nur die 
MSQL DB auf den neuen übertragen.

Wenn nicht das SQL file in eine frische DB laden und die Daten in der 
config.php anpassen.

von txt (Gast)


Lesenswert?

K. J. schrieb:
> Wenn du das schon auf nen alten Server hattest musst du einfach nur die
>
> MSQL DB auf den neuen übertragen.
>
>
>
> Wenn nicht das SQL file in eine frische DB laden und die Daten in der
>
> config.php anpassen.

Hat jetzt geklappt, danke. Auch die Zugriffsbeschränkung mit htaccess 
läuft.

Gruß txr

von T. F. (ansgard)


Lesenswert?

Hi,

vielen Dank für das gute Tool. Mir ist beim eingeben meiner Teile in 
part-db aufgefallen, dass man eingegebene Teile nicht in eine andere 
Kategorie verschieben kann. (Fatal error: Call to undefined function 
ebug_print() in /var/www/part-db/editpartinfo.php  on line 54). (Part-DB 
V0.1.4RC2 und VM: Turnkey lamp).

Gruss Ansgard

von Dennis L. (w124dennis)


Angehängte Dateien:

Lesenswert?

Hallo Ansgard,

da hat sich wohl der Fehlerteufel eingeschlichen,
ich kann aktuell kein Update des svn rep. machen, daher im Anhang die 
gefixte file. Einfach die alte mit der im file im Anhang überschreiben.

Gruß Dennis

von T. F. (ansgard)


Lesenswert?

Hi Dennis,

Danke für die schnelle Antwort.

Gruss Ansgard

von Dmxfreaky (Gast)


Angehängte Dateien:

Lesenswert?

Hallo

Alles läuft bei mir bis auf das script für die Preise.
Wenn ich das starten will kommt eine Fehlermeldung(siehe Bild). Die 
angegebene Datei existiert gar nicht. Ich habe mal nach der Datei 
gesucht und sie im Verzeichnis /opt/lampp/var/mysql/ gefunden.

Kann man das Script irgendwie unschreiben das es im anderen Verzeichnis 
sucht?

mfg
Dmxfreaky

von Frank L. (florenzen)


Lesenswert?

Wenn ich mich nicht täusche wird ~/.my.cnf ausgewertet. Wo das unter 
Windows zu finden ist kann ich dir aber nicht sagen.
Spricht etwas dagegen "-H 127.0.0.1" an das Script zu übergeben?

Gruß
f

von Stas (Gast)


Lesenswert?

Hallo,
ist es bei euch möglich das zu erweitern,

wollte das beim
"Neues Teil in der Kategorie" Footprint ,Lieferant und Lagerort per 
eingab durchgeführt werden können und nicht wie jetzt durch vor 
erstellte Auswahl.

und das bei der "Anzeige der Kategorie" die Typen Footprint ,Lieferant 
und Lagerort erscheinen!

geht das!

wehre Nett wen sich einer meldet

ich benutze die 1.4 Version

von Dimma (Gast)


Angehängte Dateien:

Lesenswert?

weist einer warum bei mir die Bilder nicht dargestellt werden!
siehe Anhang

von K. J. (Gast)


Lesenswert?

Dimma schrieb:
> weist einer warum bei mir die Bilder nicht dargestellt werden!
> siehe Anhang

Hi, mach mal rechte Maustaste auf das Bild und dann Bildereigenschaften 
und schau ob der Link passt, normalerweise ist für Dioden standardmäßig 
kein Footprintbild gesetzt haste das bild selber hochgeladen ?

von Dimma (Gast)


Lesenswert?

Ja

von Dimma (Gast)


Lesenswert?

Das ist der Link:
http://localhost/micontrol/getimage.php?pid=2

muss man dafür Java extra Installieren

von K. J. (Gast)


Lesenswert?

ne Javascript im Browser reicht eventuell sind bei dir die 
Schreibberechtigungen für denn upload ordner nicht richtig gesetzt

von Dimma (Gast)


Angehängte Dateien:

Lesenswert?

also ich habe die Rechte alle an!

von K. J. (Gast)


Lesenswert?

nein die dateien werden nicht in der db abgelegt sondern in nem ordner 
auf der platte und php, der webserver und der user müssen dadrinne 
schreib und leserechte haben b.z.w. schreibrechte die partdb setzt die 
leserechte nach dem upload automatisch

von Dimma (Gast)


Lesenswert?

also es speichert schon das Bild ab img_18c533be3503ff977aeb702d5b469368
und ich habe unter Eigenschaften zu dem Ordner alle rechte freigegeben.

von Dimma (Gast)


Lesenswert?

und ich benutze die Version 1.4RC2

von Dimma (Gast)


Angehängte Dateien:

Lesenswert?

und benutze XAMPP

von K. J. (Gast)


Lesenswert?

hm in der dm frag mich grade nicht in welcher Tabelle schau mal ob da 
unter pid2 das richtige file abgelegt wurde

von Dimma (Gast)


Angehängte Dateien:

Lesenswert?

Pfad des Bildes:
C:\xampplite\htdocs\derinner\img

der Link des Bildes:
javascript:popUp('getimage.php?pid=2')

von Dennis L. (w124dennis)


Lesenswert?

Stas schrieb:
> Hallo,
> ist es bei euch möglich das zu erweitern,
>
> wollte das beim
> "Neues Teil in der Kategorie" Footprint ,Lieferant und Lagerort per
> eingab durchgeführt werden können und nicht wie jetzt durch vor
> erstellte Auswahl.
>
> und das bei der "Anzeige der Kategorie" die Typen Footprint ,Lieferant
> und Lagerort erscheinen!
>
> geht das!
>
> wehre Nett wen sich einer meldet
>
> ich benutze die 1.4 Version

Hallo,

in der neusten version ist das doch bereits integriert?
Einfach in das Eingabefeld neben der Auswahlliste den zb lagerort 
eingeben, wenn dieser nicht existiert, wird er angelegt.

Vielleicht könnte k.j. mal das aktuelle repository packen und verlinken?

Gruß Dennis

von Dimma (Gast)


Lesenswert?

ist es möglich meine Problem zu Lösen, das die Grafik hoch geladen wird!
wer echt der Hammer wenn's funktionieren würde!

von Dimma (Gast)


Angehängte Dateien:

Lesenswert?

und ist es noch möglich das anzupassen,das wenn ich ein Kommentar 
verfasse dieser auch die den Zeilensprung(durch Enter)im Fenster 
Detailinfo mit übernommen wird und nicht einfach dahinter gesetzt wird.

Das mir der Grafik Upload wäre auch noch wichtig:welche Infos benötigt 
Ihr dazu von mir.

von K. J. (Gast)


Lesenswert?

Dennis L. schrieb:
>
> in der neusten version ist das doch bereits integriert?
> Einfach in das Eingabefeld neben der Auswahlliste den zb lagerort
> eingeben, wenn dieser nicht existiert, wird er angelegt.
>
> Vielleicht könnte k.j. mal das aktuelle repository packen und verlinken?
>
> Gruß Dennis

jap werde ich heute Abend mal machen

von K. J. (Gast)


Lesenswert?

Hi,

So das Komplette SVN von heute als Paket bekommt ihr unter 
http://code.google.com/p/part-db/downloads/detail?name=Part-DB-0.1.4RC3.tar.gz&can=2&q=

mfg tb

von Dimma (Gast)


Lesenswert?

kann mir einer ein Ansatz geben wo ich die Sache mit den Kommentar finde 
(den Code oder Datei dafür) um es selber ändern zu können!

und den Code oder Datei mit den Bild Uploaden

von Dominique G. (dgoersch)


Lesenswert?

Moin moin,

ich teste gerade auch mal partDB (0.1.4RC3) und habe ein paar Fragen 
dazu:

- Die Footprints sind nur rein informativ, werden also nirgends mit den 
Bauteilen verknüpft?
- Wofür sind die Logos? Werden die irgendwo verwendet?
- Wie kann man abschalten, dass die Popups modal sind? In Zeiten von 
tabbed browsing ist das eher kontraproduktiv finde ich.
- Gibt es Vorlagen für Kategorien oder kann/muss die sich jeder selber 
anlegen?

Ansonsten gefällt mir das Ding bisher recht gut, tolle Arbeit!

Gruß
Dominique Görsch

von SandboxGangster (Gast)


Lesenswert?

Dominique Görsch schrieb:
> - Die Footprints sind nur rein informativ, werden also nirgends mit den
> Bauteilen verknüpft?

Anhand der Fottprint daten d.h. du hast ein das SOIC16W heist ist das 
automatisch mit dem bild SOIC16W.png verknüpft in /tools/footprints.

> - Wofür sind die Logos? Werden die irgendwo verwendet?

Rein informatif es ist eine samlung aus IC logos + Hersteller

> - Wie kann man abschalten, dass die Popups modal sind? In Zeiten von
> tabbed browsing ist das eher kontraproduktiv finde ich.

Gibt keine Funktion dafür.

> - Gibt es Vorlagen für Kategorien oder kann/muss die sich jeder selber
> anlegen?

Muss sich jeder selber anlegen.

von Dennis L. (w124dennis)


Lesenswert?

Dominique Görsch schrieb:
> - Wie kann man abschalten, dass die Popups modal sind? In Zeiten von
> tabbed browsing ist das eher kontraproduktiv finde ich.

Die modale darstellung wird benötigt um die Seite nach einer Änderung zu 
aktualisieren, allerdings gefällt mir das handling auch nicht besonders, 
da man ja gerne mal noch was schauen möchte, abhilfe wäre den browser 
zweimal zu starten.


Dennis

von Gelöscht (kami89)


Lesenswert?

So jetzt muss ich hier auch mal meinen Senf dazugeben :D

Aber erstmal ein grosses Lob, das "Programm" ist echt super gelungen!

Was mich momentan aber noch etwas stört ist die Tatsache, dass man beim 
anlegen eines neuen Teiles den Preis nicht angeben kann. Man muss ja 
immer erst das Teil anlegen, Danach auf den entsprechenden Eintrag in 
der Liste klicken, auf "Ändern" klicken, und kann erst dann den Preis 
angeben.

Das wäre doch keine grosse Sache, das noch zu machen oder?
Leider bin ich in PHP nicht wirklich fit, sonst würde ich das auch 
selber machen ;)

Was auch noch ganz genial wäre, wenn man bei der "config.php" Die 
Währung bestimmen könnte, damit die Schweizer (wie ich^^) nicht nach 
jedem Update überall das "&euro;" durch "SFr." ersetzen müssen :D
Aber das wäre natürlich das "Tüpfchen auf dem I".

Das soll einfach als Anregung gedacht sein. Wenn es zeitlich nicht 
drinliegt da noch was zu machen (ich weiss nicht wie aktuell das Projekt 
noch ist?!) dann wirds halt eben nicht gemacht ;)

Grüsse aus der Schweiz
Urban

von Dennis L. (w124dennis)


Lesenswert?

Hallo Urban,

das dürfte einfach machbar sein, werde es mir am Wochenende mal 
anschauen.

Gruß Dennis

von Gelöscht (kami89)


Lesenswert?

Alles klar, danke dir schonmal im voraus :)

Jetzt kommt endlich etwas Ordnung in mein ganzes Sortiment... Bin schon 
stuuundenlange am Teile eingeben, umsortieren, beschriften usw. aber ich 
denke mal das lohnt sich total :)

von Jürgen S. (jsachs)


Lesenswert?

Hallo,

erst mal von mir auch ein großes LOB !

Heute habe ich auf den letzten Stand vom SVN upgedated.
Dabei stellte ich fest das es nicht mehr funktionierte. Lag an meiner 
mysql config, nur wurde kein Fehler ausgegeben, da dies bisher nicht 
ausgewertet wird.

Mein Vorschlag wäre die config.php so abzuändern:
1
  function partdb_init()
2
  {
3
    /* Enter your MySQL username and password here. For
4
       optimal protection you should adjust the UNIX perms
5
       of this file in a way only the PHP interpreter can read
6
       it. But this does not protect your data from malcious
7
       users. Each user should run his PHP scripts with his
8
       own user id. */
9
    $link = mysql_connect ("localhost", "partdb", "PartDb.");
10
    if ($link)
11
      mysql_select_db ("partdb");
12
    else
13
    {
14
      echo "connect to DB failed",
15
            mysql_errno(),
16
            "<br>",
17
            mysql_error(),
18
            "<br>";
19
    }
20
  }
Hierdurch erfolgt eine Fehlerausgabe und man weis wo man suchen muss.
Bisher hat man einfach keine Einträge mehr.

von SandboxGangster (Gast)


Lesenswert?

Danke !!! Ist schon mal im SVN drinnen, werde es aber noch etwas 
erweitern mal schauen wann ich dazu komme wollte das Projekt eh mal 
wieder auskamen.

mfg tb

von K. J. (Gast)


Lesenswert?

So hab wieder etwas gebastelt, nicht viel aber ich werde mich in Nester 
zeit wieder etwas darum kümmern.


DL: 
http://code.google.com/p/part-db/downloads/detail?name=Part-DB-0.1.4RC5.tar.gz&can=2&q=

Hab die Logos Überarbeitet (noch nicht ganz fertig)(suche da noch Hilfe 
wie man die Bilder transparent bekommt per Skript)

Tool -> Footprints werden automatisch gelistet.

DBcheck THX to jsachs

von Ansgard (Gast)


Lesenswert?

Hi,

habe heute versucht, die neue Version aufzuspielen. Leider gelang es mir 
nicht sofort. Der Browser öffnete sich mit richtiger Bezeichnung, aber 
die Seite war leer. Nach längeren suchen stellte ich fest, das in der 
config.php die Zeile  "if ($link)" nach "$link = mysql_connect 
("localhost", "part-db", "PARTdb")" fehlte. Durch einsetzen der Zeile 
funktioniert es jetzt auch bei mir.

Gruß Ansgard

von K. J. (Gast)


Lesenswert?

Danke !!! ist im SVN behoben.

von Dominique G. (dgoersch)


Lesenswert?

Nachdem ich nun endlich dazu gekommen bin mich intensiver damit zu 
befassen, habe ich auf die schnelle zwei kleinere Bugs entdeckt:
- bei den Footprints werden führende Nullen abgeschnitten. So wird aus 
"0805" nachher "805".
- Liste zum Bearbeiten der Kategorien ist nicht alphabetisch sortiert

Wishlist:
- Name des Footprints als Tooltip über den Bildern unter 
Tools/Footprints
- Footprint, Lagerort und Lieferant keine Pflichtangaben
- Nachfragen wie "Wirklich löschen?" alternativ per Javascript anstatt 
der Seite als Zwischenschritt. Vielleicht auch alternativ ganz 
deaktivierbar?

Gruß Domi

von Dominique G. (dgoersch)


Lesenswert?

Auch nach über drei Wochen kein Kommentar dazu? Schade!

von K. J. (Gast)


Lesenswert?

Dominique Görsch schrieb:
> Auch nach über drei Wochen kein Kommentar dazu? Schade!

Hi, ja ist bekannt momentan habe ich aber einfach nicht die Zeit dafür, 
aber steht auf der ToDo liste.

von Dominique G. (dgoersch)


Lesenswert?

OK kein Problem, das reicht ja schon als Feedback. Nur so ganz 
kommentarlos fand ich doof :)
Nicht falsch verstehen bitte.

von K. J. (Gast)


Lesenswert?

Hi, hab die Footprints Tabellen gefixt damit führende Nullen drinnen 
bleiben

Entweder ihr stellt es in der DB auf longtext(15) um, oder ihr ladet 
einfach die createtabels.sql (aus dem SVN) neu in die DB, Backup machen 
nicht vergessen.

von Peter S. (psch)


Lesenswert?

Hi,
ich habe gerade erfolgreich die Version 0.1.3 installiert und ein wenig 
damit rumgespielt. Dabei bin ich darüber gestolpert, daß ich ein BAuteil 
nur eintragen kann, wenn auch ein Lieferant eingetragen ist. Klar kann 
ich einen Dummy erzeugen, wenn ich keinen Lieferanten habe, aber 
leerlassen des Feldes sollte auch gehen.

Ansonsten gefällt mir das Program schon recht gut. Möglicherweise finde 
ich dann demnächst auch mal meinen ganzen Kleinkram wieder:-)
Gruß

von K. J. (Gast)


Lesenswert?

hm da du noch eine alte Version drauf hast magst mal testen ob mit FF4 
das menü noch geht ?

bei mir will es nicht mehr bin mir aber nicht sicher ob es an FF4 liegt 
oder woanders dran.

@ deiner Anmerkung ja das ist mir auch schon negativ aufgefallen.

von A. M. (bacarni) Benutzerseite


Angehängte Dateien:

Lesenswert?

Dominique Görsch schrieb:
> - Name des Footprints als Tooltip über den Bildern unter Tools/Footprints

Ich hab die footprints.php mal dahingehend angepasst, dass nun die 
Bezeichnungen als Tooltips angezeigt werden.
Einfach die die vorhandene Datei ersetzen und es sollte funktionieren.
Getestet mit V0.1.4RC5.

von A. M. (bacarni) Benutzerseite


Lesenswert?

Dimma schrieb:
> und ist es noch möglich das anzupassen,das wenn ich ein Kommentar
> verfasse dieser auch die den Zeilensprung(durch Enter)im Fenster
> Detailinfo mit übernommen wird und nicht einfach dahinter gesetzt wird.

Dazu in der Datei partinfo.php die Zeile 96 durch folgendes ersetzen
1
print "<tr><td valign=\"top\"><b>Kommentar:</b></td><td>". nl2br(smart_unescape($d[10])) ."&nbsp;</td></tr>";

Nun sollten die Umbrüche korrekt dargestellt werden.

von Dennis L. (w124dennis)


Lesenswert?

@K.J.
Im FF4 gehts das menu nicht wegen folgender Zeile 80 und 93 in nav.php


gruß dennis

von K. J. (Gast)


Lesenswert?

@barcani
@ w124dennis

THX hab eure Änderungen übernommen.

von Gelöscht (kami89)


Lesenswert?

Hallo,

Ich habe mir gerade die neuste Version vom SVN runtergeladen und 
installiert unter Ubuntu 11.04.

Nun funktioniert aber das Menü nicht mehr, also ich kann es nicht mehr 
aufklappen. Alles andere funktioniert. Muss also irgendwie ein Problem 
mit Javascript sein oder?

Ich habe die Dateien nach /var/www/part-db kopiert und folgende Befehle 
ausprobiert:

sudo chown www-data:www-data -R /var/www/part-db
sudo chgrp -R www-data /var/www
sudo chmod g+w /var/www
sudo chmod 0775 /var/www
sudo /etc/init.d/apache2 restart

Mein Benutzer ist Mitglied der Gruppe www-data.

Ich muss sagen, ich bin nicht so vertraut mit den oben genannten 
Terminal-Befehlen. Stimmt da etwas nicht?

Ich glaube sogar, dass der Fehler seit dem Update auf Ubuntu 11.04 
auftritt.

Weiss da vielleicht jemand was man da machen kann?

mfg

von theborg1 (Gast)


Lesenswert?

hi benutzt du Firefox4 ?

wen nicht welchen browser ?

von Gelöscht (kami89)


Lesenswert?

theborg1 schrieb:
> hi benutzt du Firefox4 ?
>
> wen nicht welchen browser ?

Hoppla, ganz vergessen zu erwähnen ;)
Jap, benutze Firefox 4.0.1

Habe schon bei Google und direkt auf ubuntuusers.de gesucht, konnte aber 
nichts passendes finden.
Wenn sich das Problem länger nicht lösen lässt, werde ich wohl mal im 
Ubuntu Forum nachfragen.

mfg

von theborg1 (Gast)


Lesenswert?

Hi lade dir mal die nav.php aus dem svn die sollte unter 4.0.1 
funktionieren, es gibt leider noch andere Probleme leider die ich 
momentan nicht fixen kann da ich kein javascript kann.

z.b. läd die seite wen man ein Footprintbild anklickt...

ansonsten hat sich generell im SVN die letzten tage eine menge getan.

von Ansgard (Gast)


Lesenswert?

Hallo,

wollte heute das mit der "Footprints" Tabelle ausprobieren. Datenbank 
gelöscht und neu erstellt, Import createtables.sql. Leider kommt beim 
Import folgender Fehler.

-- Table structure for table `footprints`
--
CREATE TABLE `footprints` (
`id` int( 11 ) NOT NULL AUTO_INCREMENT ,
`name` longtext( 15 ) NOT NULL ,
PRIMARY KEY ( `id` )
) TYPE = MYISAM ;

MySQL meldet: Dokumentation
#1064 - You have an error in your SQL syntax; check the manual that 
corresponds to your MySQL server version for the right syntax to use 
near '(15) NOT NULL,
  PRIMARY KEY  (`id`)
) TYPE=MyISAM' at line 9

Viele Grüße

Ansgard

von theborg1 (Gast)


Lesenswert?

Hi, ist gefixt wen du das von hand machen möchtest in der .sql

zeile 49 muss wie folgt ausehen ansonste ist es jetzt auch im SVN.

  `name` longtext NOT NULL,

mfg theborg

von Gelöscht (kami89)


Lesenswert?

theborg1 schrieb:
> Hi lade dir mal die nav.php aus dem svn die sollte unter 4.0.1
> funktionieren, es gibt leider noch andere Probleme leider die ich
> momentan nicht fixen kann da ich kein javascript kann.
>
> z.b. läd die seite wen man ein Footprintbild anklickt...
>
> ansonsten hat sich generell im SVN die letzten tage eine menge getan.

Hallo,

OK also habe nochmal das komplette Paket "Part-DB-0.1.4RC5" 
runtergeladen und nach "/var/www" kopiert.

Leider hat das nichts gebracht, das Menü funktioniert nach wie vor 
nicht. Ich kann zwar Hauptkategorien anklicken und die Teile werden 
angezeigt, aber aufklappen kann ich das Menü nicht.

Mit der Datenbank kann das ja nichts zu tun haben, oder? Sonst könnte 
ich mal die DB neu installieren.

Übrigens funktioniert die "config.php" nur, wenn ich den else-Zweig 
entferne. Wenn dieser drin ist, lädt überhaupt nichts, nur weisser 
Bildschirm.

Gruss
Urban

von K. J. (Gast)


Lesenswert?

hi, in dem Archiv ist der FIX noch nicht drinnen du musst schon die 
nav.php aus dem svn nehmen, werde die tage aber noch nen neues Paket 
zusammen Packen.

von Gelöscht (kami89)


Lesenswert?

Ach soo, jetzt habe ich das erst richtig verstanden mit dem SVN^^ Ich 
dachte, das Archiv wird auch automatisch aktualisiert...

Jetzt mit der neuen nav.php funktioniert das Menü wieder!!

Vielen Dank! :D

von Björn G. (tueftler)


Lesenswert?

Hi da.

Würde die Anwendung mir gerne einmal anschauen.
Auf der Homepage dieser steht:
"Seit 27.02.06 gibt es die Möglichkeit, die part-db online 
auszuprobieren"

Leider ist die Online-Demo scheinbar gerade nicht verfügbar oder dyndns 
löst nicht richtig auf.

Kann der Besitzer hiergegen evtl. etwas machen?

Gruß, Björn

von K. J. (Gast)


Lesenswert?

hm du meinst sicher die Seite von cl-Projekts die ist schon seit 
Ewigkeiten tot zum online ausprobieren gibt es momentan nichts werde 
mich mal darum kümmern vielleicht schaffe ich das nachher noch.

neuer DL: 
http://code.google.com/p/part-db/downloads/detail?name=Part-DB-0.1.4RC6.tar.gz&can=2&q=

das ist jetzt erst mal aktuell aber immer noch etwas buggy.

von K. J. (Gast)


Lesenswert?

Hi, so hab es jetzt geschaft eine Testversion aufzusetzen diese findet 
ihr unter http://partdb.grautier.com/ viel spass beim testen.

Die Testdatenbank wird einmal die Woche automatisch aus dem SVN geholt

von DaHummel (Gast)


Angehängte Dateien:

Lesenswert?

Hab mal die Part-DB V0.1.5 von sämtlichen html Fehlern bereinigt, die 
openlist in openlist und list geteilt damit man der Fram korrekt 
Programmiert ist.
Die seite ist jetzt W3C Tidy.

Die editpartinfo.php hab ich leider noch nicht, da sind sehr viele PHP 
PrintF drin. In der Partanzeige(showpart wie openlist-> list) sind jetz 
der Kommentar im VOlltext. Bei bedarf setze ich die Änderungen auf das 
Orig zurück mit W3C Tidy.

von theborg1 (Gast)


Lesenswert?

Danke werde es die tage mal einpflegen hab nur momentan kein Internet 
daher kann das etwas dauern.

von Jürgen S. (jsachs)


Lesenswert?

Ein wirklich schönes Feature wäre, wenn man eine Bestückungsliste 
anlegen könnte. Darin enthalten sind einfach die Artikel, die ich zum 
Herstellen einer bestimmten Platine benötige. Zumindest ich baue eine 
Platine nicht nur einmal auf.

Das könnte so aus sehen, das man pro Artikel folgende Felder hat:
- Artikel (Aus PartDB)
- Artikel Bezeichnung (Aus PartDB)
- Optionales Feld Bestück Positionen wie "R21,R4,R17"
- Anzahl des Artikel
- Alternativposition oder Hauptposition (siehe unten)

Wird das ganze geprüft, wird einem Angezeigt, was noch im Lager 
vorhanden ist, und die "Bestückung auf einmal zu entnehmen oder auch nur 
Positionsweise.
Man sieht so sofort was man noch bestellen muss. Zudem ist das entnehmen 
von "Hühnerfutter" doch recht mühselig und würde so vereinfacht werden.

Es sollte natürlich berücksichtigt werden das es auch Alternativen zu 
einem Bauteil geben kann. Daher kann man markieren ob dies eine 
Alternative Position ist oder eine Hauptposition.

Es gäbe hierzu nochmal eine Liste "Bestückungen" mit den Funktionen 
"prüfen", "bearbeiten", "löschen", "neu"

Ich habe mir das schon ein paar mal überlegt und auch mal angesehen ob 
ich das umsetzen kann, allerdings fehlt mir da der Überblick und die 
Zeit.

Mir ist klar das die PartDB dadurch schon zu einer kleinen WaWi wird, 
aber es wäre einfach Praktisch.

Gruss
Juergen

von Dennis L. (w124dennis)


Angehängte Dateien:

Lesenswert?

Hallo Jürgen,

ich habe sowas wie du beschreibst auch schon lange im Kopf. Ich habe die 
letzten tage mal was gebastelt was die Grundfunktionen von deiner Idee 
enthält. Aktuell steht alles im SVN, jemand müsste mal noch ein archiv 
davon in den Downloadordner stellen. Um die "Baugruppen"-Funktion nutzen 
zu können müssen zwei neue MYSQL Tabellen angelegt werden, Script 
befindet sich im "Readme" Ordner.

Gruß Dennis

von Jürgen S. (jsachs)


Lesenswert?

Hallo,

ist ja super :)

Hab eben mal eine svn update gemacht und das script 
createdevicetables.sql ausgeführt.
Leider tut es nicht so richtig.
Und sobald ich auf "Baugruppen" klicke, bekomme ich folgende 
Fehlermeldung:
1
"PHP Notice:  Undefined index: action in device.php on line 28, referer: nav.php"

Wähle ich eine Baugruppe aus, hagelt es gleich richtig :(
1
PHP Notice:  Undefined index: action in deviceinfo.php on line 30, referer: device.php
2
[Mon Jan 23 22:16:46 2012] [error] [client 10.6.2.201] PHP Notice:  Undefined index: action in deviceinfo.php on line 65, referer: device.php
3
[Mon Jan 23 22:16:46 2012] [error] [client 10.6.2.201] PHP Notice:  Undefined index: action in deviceinfo.php on line 79, referer: device.php
4
[Mon Jan 23 22:16:46 2012] [error] [client 10.6.2.201] PHP Notice:  Undefined index: action in deviceinfo.php on line 86, referer: device.php
5
[Mon Jan 23 22:16:46 2012] [error] [client 10.6.2.201] PHP Notice:  Undefined index: action in deviceinfo.php on line 92, referer: device.php
6
[Mon Jan 23 22:16:46 2012] [error] [client 10.6.2.201] PHP Notice:  Undefined index: action in deviceinfo.php on line 98, referer: device.php
7
[Mon Jan 23 22:16:46 2012] [error] [client 10.6.2.201] PHP Warning:  mysql_fetch_row() expects parameter 1 to be resource, boolean given in deviceinfo.php on line 272, referer: device.php
8
[Mon Jan 23 22:16:46 2012] [error] [client 10.6.2.201] PHP Notice:  Undefined variable: lieferanten in deviceinfo.php on line 386, referer: device.php
9
[Mon Jan 23 22:16:46 2012] [error] [client 10.6.2.201] PHP Notice:  Undefined index: sup_id in deviceinfo.php on line 387, referer: device.php
10
[Mon Jan 23 22:16:46 2012] [error] [client 10.6.2.201] PHP Notice:  Undefined index: sup_id in deviceinfo.php on line 387, referer: device.php
11
[Mon Jan 23 22:16:46 2012] [error] [client 10.6.2.201] PHP Notice:  Undefined index: sup_id in deviceinfo.php on line 387, referer: device.php
12
[Mon Jan 23 22:16:46 2012] [error] [client 10.6.2.201] PHP Notice:  Undefined index: sup_id in deviceinfo.php on line 387, referer: device.php
13
[Mon Jan 23 22:16:46 2012] [error] [client 10.6.2.201] PHP Notice:  Undefined index: sup_id in deviceinfo.php on line 387, referer: device.php
14
[Mon Jan 23 22:16:46 2012] [error] [client 10.6.2.201] PHP Notice:  Undefined index: action in deviceinfo.php on line 402, referer: device.php
15
[Mon Jan 23 22:16:46 2012] [error] [client 10.6.2.201] PHP Notice:  Undefined index: action in deviceinfo.php on line 409, referer: device.php
16
[Mon Jan 23 22:16:46 2012] [error] [client 10.6.2.201] PHP Notice:  Undefined index: action in deviceinfo.php on line 418, referer: device.php
17
[Mon Jan 23 22:16:46 2012] [error] [client 10.6.2.201] PHP Notice:  Undefined index: action in deviceinfo.php on line 432, referer: device.php
18
[Mon Jan 23 22:16:46 2012] [error] [client 10.6.2.201] PHP Notice:  Undefined index: action in deviceinfo.php on line 508, referer: device.php
Eine schnelle Idee was da schiefgeht ? Es liegt wohl an meinen 
Tabellen...

Gruss
Juergen

von K. J. (Gast)


Lesenswert?

Dennis L. schrieb:
> jemand müsste mal noch ein archiv
> davon in den Downloadordner stellen. Um die "Baugruppen"-Funktion nutzen

Hab ich heute morgen gemacht mfg tb

http://code.google.com/p/part-db/downloads/detail?name=Part-DB-0.2.0RC1.tar.gz&can=2&q=

Jürgen Sachs schrieb:
> Hab eben mal eine svn update gemacht und das script
> createdevicetables.sql ausgeführt.
> Leider tut es nicht so richtig.

Hi, das Problem hab ich hier auch das liegt eventuell an den veralteten 
SQL Files werde die am WE nochmal überarbeiten, bekomme folgendes:

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL 
result resource in 
/var/www/vhosts/grautier.com/subdomains/partdb/httpdocs/deviceinfo.php 
on line 272

hatte aber auch Probleme die Tabellen zu erstellen siehe:

http://code.google.com/p/part-db/issues/detail?id=2#c0

von Dennis L. (w124dennis)


Lesenswert?

Hallo zusammen,

wurden denn die beiden Tabellen, devices und device_part richtig 
erstellt? Am besten mal einen Screenshot aus phpmyadmin posten oder so. 
Ich bin übrigens kein html/sql/php experte kann nur c programmieren ;) 
Zudem läuft auf meinem Server eine ziemlich alte MYSQL Version (4.1) da 
die neue auf meinem QNAP Server nicht richtig läuft.

Gruß Dennis

von Jürgen S. (jsachs)


Lesenswert?

So mal Vorschlag:
Eine Zusätzliche Information in die Datenbank mit der Datenbank Version. 
Das ist ein simpler Zahlenwert der bei Änderungen um eins erhöht wird.

Beim öffnen der Datenbank wird geprüft ob die Version der Datenbank 
denen im Skript gleich ist (php wird auch eine Datenbank Versions 
Konstante gepflegt.

Es gibt eine dbupdate.php in der die Versionsänderungen gepflegt werden. 
Das könnte dann wie folgt aussehen:
1
if(dbversion < mustdbversion)
2
{
3
 lock database //falls mehrere versuchen ein update zu machen
4
 while(dbversion < mustdbversion)
5
 {
6
  switch(dbversion)
7
  {
8
   case 1:
9
    //alles um version 1 auf 2 zu bringen
10
    break
11
   case 2:
12
    //alles um version 2 auf 3 zu bringen
13
    break
14
  .....
15
  } // switch
16
 } // while
17
} //if
18
 unlock database

Der Trick ist, erst die Version zu prüfen. Falls ein update notwendig, 
ein lock der Datenbank. Danach nochmals Version prüfen, diese kann sich 
ja bereits geändert haben. Ab jetzt hat man ja exklusiven Zugriff.
Nun die Datenbank von einer Version zur nächsten ändern. Der Vorteil 
ist, das man so von jeder Version zur nächsten kommt, es dauert eben ein 
wenig.

So wird das oft gemacht. Der Nutzer muss sich nicht mehr um Datenbank 
updates zu kümmern.

Schön ist es natürlich wenn noch eine Sicherheitsabfrage kommt und man 
eventuell angeboten bekommt eine sqldump downzuloaden. aber das ist dann 
schon das "i" Tüpfelchen....

Gruss
Juergen

von Jürgen S. (jsachs)


Lesenswert?

Dennis L. schrieb:
> Hallo zusammen,
>
> wurden denn die beiden Tabellen, devices und device_part richtig
> erstellt? Am besten mal einen Screenshot aus phpmyadmin posten oder so.
> Ich bin übrigens kein html/sql/php experte kann nur c programmieren ;)
> Zudem läuft auf meinem Server eine ziemlich alte MYSQL Version (4.1) da
> die neue auf meinem QNAP Server nicht richtig läuft.
>
> Gruß Dennis
1
describe part_device;
2
+-----------+---------+------+-----+---------+-------+
3
| Field     | Type    | Null | Key | Default | Extra |
4
+-----------+---------+------+-----+---------+-------+
5
| id_part   | int(11) | NO   |     | 0       |       |
6
| id_device | int(11) | NO   |     | 0       |       |
7
| quantity  | int(11) | NO   |     | 0       |       |
8
+-----------+---------+------+-----+---------+-------+
9
10
describe devices;
11
+-------+------------+------+-----+---------+----------------+
12
| Field | Type       | Null | Key | Default | Extra          |
13
+-------+------------+------+-----+---------+----------------+
14
| id    | int(11)    | NO   | PRI | NULL    | auto_increment |
15
| name  | mediumtext | NO   |     | NULL    |                |
16
+-------+------------+------+-----+---------+----------------+

ob das nun so sein muss ?

von Dennis L. (w124dennis)


Lesenswert?

Hallo Jürgen,

also die Tabellen sehen richtig aus. Besteht der Fehler denn noch? Ich 
gehe mal davon aus das du mit aktuellem php und mysql arbeitest, was ich 
ja nicht tue, daher vermutlich die fehler. Bei mir funktioniert es 
korrekt. Ich werde mal eine Virtual box mit aktuellem php und mysql 
aufsetzen und schauen ob ich deinen Fehler reproduzieren kann. Was für 
ein System benutzt du denn?
Das mit dem db updaten ist eine gute Idee ;) Wer macht es?


Gruß Dennis

von Jürgen S. (jsachs)


Lesenswert?

Also die Fehler in der device.php sind weg. Die kommen daher, dass beim 
Aufruf der "Baugruppen" aus der Sidebar "action" nicht gesetzt ist.

Mann sollte vor dem Zugriff prüfen, ob die überhaupt gesetzt wurden.

Dazu einfach ein "if (isset($_REQUEST["action"]))" um die Abfrage bauen 
und der Fehler ist weg. Ich sehe mir mal den Rest an.

Kann dir auch gerne ein svn diff schicken...

Gruss
Juergen

PS: mit dem Database Update, mal sehen, ich habe halt auch fast keine 
Zeit.

von Jürgen S. (jsachs)


Lesenswert?

Einen Fehler dem ich gerade verfolge ist ein mysql Fehler
Die ausgeführte Abfrage ist
1
SELECT parts.name, parts.comment, parts.id, footprints.name, part_device.quantity, parts.instock, storeloc.name, suppliers.name, preise.preis FROM parts JOIN part_device, footprints, storeloc, suppliers ON (parts.id = part_device.id_part AND footprints.id = parts.id_footprint AND storeloc.id = parts.id_storeloc AND suppliers.id = parts.id_supplier) LEFT JOIN preise ON (preise.part_id = parts.id)WHERE id_device = 4 ORDER BY parts.id_category,parts.name ASC;

und der Fehler von mysql
1
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ON (parts.id = part_device.id_part AND footprints.id = parts.id_footprint AND st' at line 1

Nur sehe ich im Moment keinen Fehler.

von Jürgen S. (jsachs)


Lesenswert?

Dennis L. schrieb:
> Hallo Jürgen,
>
> also die Tabellen sehen richtig aus. Besteht der Fehler denn noch? Ich
> gehe mal davon aus das du mit aktuellem php und mysql arbeitest, was ich
> ja nicht tue, daher vermutlich die fehler. Bei mir funktioniert es
> korrekt. Ich werde mal eine Virtual box mit aktuellem php und mysql
> aufsetzen und schauen ob ich deinen Fehler reproduzieren kann. Was für
> ein System benutzt du denn?
> Das mit dem db updaten ist eine gute Idee ;) Wer macht es?
>
>
> Gruß Dennis

Ich kann mir das mit den DB update am Wochenende mal ansehen.
Natürlich nur den Weg bereiten, die zukünftigen Updates muss dann der 
jeweilige Entwickler eintragen.

Dachte mir das so:
- Beim laden des "index.php", wird einmalig der DB Status geprüft und 
ggf. aktualisiert.
- Die Aktualisierungs Routinen kommen alle in eine eigne php Datei, z.B. 
"db_update.php"
- Ich versuche das so zu machen, das man nur eine Variablen Array mit 
allen notwendigen Schritten füllt und danach alles Step by Step 
ausgeführt wird UND auch auf Fehler überwacht.

Allerdings sollte ich wissen ob schon jemand daran arbeitet, bevor ich 
loslege :-)

Gruss
Juergen

von Dennis L. (w124dennis)


Lesenswert?

Hallo Jürgen,
jetzt hab ich nochmal etwas genauer Hin-geschaut und doch was gefunden.
Der aktuelle MYSQL Server mag wohl eine Klammer bei der JOIN Anweisung, 
daher die PHP Fehler. Ich habe es in trunk eingespielt und ein SVN 
update sollte deine Probleme fixen;)

Gruß Dennis

von Jürgen S. (jsachs)


Lesenswert?

Danke Dennis,

Funktioniert tadellos :-)

Was jetzt noch prima wäre, wenn man noch Positionsbezeichnungen eingeben 
könnte. Also "R24,R25,R23", "C12,C1".
Das würde es vereinfachen.
Es wäre hier vermutlich nur Sinnvoll jede Position einzeln in der 
Datenbank zu speichern. Hintergrund ist, dass Layout Programme wie 
Eagle, eine Bauteilliste erstellen kann, hier sind die Positionen aber 
einzeln aufgeführt. So könnte man in der Zukunft über ein Importscript 
die Daten übernehmen :-)

Gruss
Juergen

PS: Ich sehe mir das jetzt mal mit dem DB Update an....

von Jürgen S. (jsachs)


Lesenswert?

So, ich habe das mit dem DB Update mal Entwickelt und getestet und für 
gut befunden.

Jetzt ist nur die Frage, wie und ob das so übernommen werden soll....

Ich denke es nun sehr einfach das einzupflegen, da immer nur 2 Stellen 
angepasst werden müssen in einer Datei.
Der Aufruf sollte in startup.php passieren, so wird nicht zu oft 
geprüft.

Gruss
Juergen

von Dennis L. (w124dennis)


Lesenswert?

Hallo Jürgen,

ich habe die Positionsbezeichnung mal implementiert. Allerdings erstmal 
nur als einzelnen DB Eintrag. Es lässt sich also ein beliebiger String 
speichern.  Ich wüsste nicht wofür ich eine Einzelne Zuordnung 
gebrauchen könnte, höchstens vielleicht noch zum Speichern eines 
Bauteilewerts, dieser könnte man aber genauso in den String mit 
aufnehmen.
Zusätzliche habe ich die Exportfuntion erweitert und für "zu Bestellende 
Teile" implementiert. Somit lasse sich jetzt schnell Warenkörbe bei 
Reichelt importieren.

Gruß Dennis

p.s. Es gibt natürlich wieder ein Script um die Tabellen zu erweitern, 
siehe Readme Ordner

von Jürgen S. (jsachs)


Lesenswert?

Dennis L. schrieb:
> Hallo Jürgen,
>
> ich habe die Positionsbezeichnung mal implementiert. Allerdings erstmal
> nur als einzelnen DB Eintrag. Es lässt sich also ein beliebiger String
> speichern.  Ich wüsste nicht wofür ich eine Einzelne Zuordnung
> gebrauchen könnte, höchstens vielleicht noch zum Speichern eines
> Bauteilewerts, dieser könnte man aber genauso in den String mit
> aufnehmen.
> Zusätzliche habe ich die Exportfuntion erweitert und für "zu Bestellende
> Teile" implementiert. Somit lasse sich jetzt schnell Warenkörbe bei
> Reichelt importieren.
>
> Gruß Dennis
>
> p.s. Es gibt natürlich wieder ein Script um die Tabellen zu erweitern,
> siehe Readme Ordner
Oder Du machst es mit meiner db_update.php.
Wäre ein guter Test.

Ist seit einer Stunde im svn. Das Comitten hat mich nerven gekostet, bis 
ich bemerkt habe, das Google so ein komisches Passwort Würfelt...

Ich kann mir das ja mal kurz ansehen und umsetzen :-)

Gruss
Juergen

von Jürgen S. (jsachs)


Lesenswert?

Hallo Dennis,

Super, das ist was mir noch fehlte.
Ich hab SVN so angepasst das er gleich das Update für deine Änderung mit 
durchführt.

Gruss
Juergen

von Ansgard (Gast)


Lesenswert?

Hi,

habe mir eben part-db aus der SVN aktualisiert. Leider bekommen ich 
folgenden Fehler angeizeigt.

"DBVersion: 1, benötigt ein Update.

your Database version 1 is outdated an will now be updated to 3
Get lock of database
CREATE command denied to user 'part-db'@'localhost' for table 'internal'
Table 'part-db.internal' doesn't exist
Update failed, aborting
Unlocking Database
Update Failed"

Ich habe meine Part-db Datenbank gelöscht. Mit dem Script 
"createtables-FOR-V0.2.1.sql" neue Tabellen erstellt und dann mit 
mysqldumper die Daten wiederhergestellt. Wo liegt der Fehler?

Vielen Dank

Gruß Ansgard

von Sven Wagner (Gast)


Lesenswert?

Ansgard schrieb:
> CREATE command denied to user
Da liegt das Problem. Er kann die neue Tabelle nicht anlegen.
Du müßtest die Rechte für den User 'part-db' erweitern.

Grüße
Sven

von Jürgen S. (jsachs)


Lesenswert?

Ja, part-DB kann zwar nun die Datenbank selbstständig aktualisieren, 
aber der Nutzer braucht natürlich die entsprechenden Rechte.

In der "createtables-FOR-V0.2.1.sql" ist die fehlende Tabelle nicht 
vorhanden, da diese ja Theoretisch selbstständig angelegt wird.

Der partdb mysql Nutzer sollte schon mindestens zusätzlich die Rechte:
- create table
- alter table
haben.

Delete Table oder gar Database sind hingegen nicht notwendig.

Ist das ein Problem ?
Sonst müsste man das so machen, das das Datenbankupdate
- Nur optional aktiv ist
- Unter einem anderen Nutzer durchgeführt wird, der höhere Rechte hat

Gruss
Juergen

von K. J. (Gast)


Lesenswert?

Wie wehre es das nicht automatisch zu machen sondern über eine abfrage 
also mit Userbestätigung ?

Aber eigentlich sollte das kein Problem sein in der Standartnutzung sind 
DBs rein Userbasiert.

von Jürgen S. (jsachs)


Lesenswert?

Ich werde das Morgen so Umbauen, das man über ein Setting das Explizit 
aktiveren muss, oder abschalten kann...
Theoretisch ist das einfach, aber es gibt bei partDB noch keine 
"Webseite" für die Konfiguration, wo ich so etwas unterbringen kann.

Mit dem Benutzer Fragen ist so eine Sache. Wenn der Nein sagt zum 
Update, geht es ja auch nicht, da die Datenbank nicht zur partDB passt. 
Daher der Gedanke es soll Automatisch geschehen.
Mann könnte dann zwar einen Fehler ausgeben oder gar den Zugriff ganz 
sperren (wäre nicht so schön).
Es wäre Interessant was die Nutzer gerne hätten:
- Lieber alles von Hand updaten
- Auf Wunsch Automatisch (Würde ich mir Wünschen :-) )

Daher wäre mein Ansatz das über eine Konfigurations Seite abschaltbar zu 
machen. Das habe ich schon vorgesehen. Nur fehlt die Konfig Seite in 
Part DB bisher. So konnte ich das nicht einbauen. Dazu muss man nur die 
Navigationsleiste ändern und eine neue Seite einfügen.

Das Setting (und andere) kann man dann in der neuen Tabelle "internal" 
unterbringen.

Gruss
Juergen

von Ansgard (Gast)


Lesenswert?

Hi,

vielen Dank für die schnelle Antwort von heute Nachmittag. Konnte die 
Rechte jetzt erst einrichten. Leider erscheint jetzt im Schritt 2 
folgender Fehler.

"DBVersion: 2, benötigt ein Update.

your Database version 2 is outdated an will now be updated to 3
Get lock of database
Duplicate column name 'mountname'
Update failed, aborting
Unlocking Database
Update Failed"

Ich habe meine alte DB mit MySQLDumper zurückgespielt, danach das Script 
"updatetables-FOR-V0.2.1" gestartet. phpMyAdmin meldet danach ""ALTER 
TABLE `part_device` ADD `mountname` mediumtext NOT NULL AFTER `quantity` 
;". Danach tritt obiger Fehler auf.

Vielen Dank

Gruß Ansgard

von Jürgen S. (jsachs)


Lesenswert?

Hallo Ansgard,

das liegt daran, das Du bereits eine aktuelle Datenbank hast, aber der 
notwendige Hinweis in der Datenbank fehlt.

Bitte aktualisiere nochmals den SVN und sei so nett und leg die 
Datenbank nochmal neu an mit "createtables-FOR-V0.2.1.sql" Ab dann 
sollte es gehen.
Die Update Logic denkt du hast noch eine alte Datenbank und versucht das 
Update durchzuführen. Tatsächlich hast Du schon eine aktuelle Variante, 
daher geht es schief.
Hierdurch wird jetzt der fehlende Eintrag generiert.

Von jetzt ab sollte es Problemlos Funktionieren.

Sorry, diese Konstellation hatte ich nicht bedacht.

Gruss
JSachs

von Ansgard (Gast)


Lesenswert?

Danke,

ich habe meine Datenbank komplett gelöscht, sie mit sqlDumper 
wiederhergestellt und die part-db Seite ohne einen Import der 
"Createtable..." Dateien aufgerufen. Danach tritt der Fehler nicht mehr 
auf. (SVN aktualisiert auf R227)

Vielen Dank

Gruß Ansgard

von Ansgard (Gast)


Lesenswert?

Hi,

vielen Dank nochmal für die gestrige Hilfe, so kann ich jetzt weiter 
meine Bauteile einpflegen.
Dazu hätte ich noch 2 Fragen. Wenn ich das Bauteil µA7805 anlege, 
erscheint kein Name im Feld und ich kann dieses erst mit phpMyAdmin 
weiter bearbeiten. Erstens in dem man es löscht (dann hat man eine Lücke 
in der vortlaufenden ID) oder man erstellt den Namen direkt in der 
Tabelle.
Daraus ergibt sich eine weitere Frage. Ich möchte mir ein Bauteil von 
Reichelt anlegen, welches ich an seinem Namen erkenne. Die Abfrage des 
Datenblattes schlägt dann fehl.(z.B. einen RJ12 Stecker, die 
Bestellnummer ist aber MP 6-6).
Könnte man den Aufruf eines Datenblattes dei Reichelt mit einer Abfrage 
versehen, welche als erstes die Bestellnummer prüft und wenn das Feld 
leer ist dann den Namen nutzt?

Danke

Gruß Ansgard

von Dennis L. (w124dennis)


Lesenswert?

Hallo Ansgard,
leider kann ich dein Problem nicht nachvollziehen. In welchem Feld 
erscheint keine Name? Also ich kann ohne Probleme ein Bauteil mit dem 
Namen µA7805 anlegen und bearbeiten.
Die Datenblatt Sache lässt sich ändern.

Gruß Dennis

von Guido R. (gvidas)


Lesenswert?

Hallo!

Gibt es auch eine Möglichkeit die Lagerorte weiter zu unterteilen?
Wenn ich z.B. als Lagerort Sortimentskasten 1 angebe, dann hat dieser 
auch weitere einzelne Fächer.
Diese sind bei mir alle mit einem Nummernsystem versehen.
Wenn ich nun alle (weit über 100) Fächer hinzufüge, dann wären das in 
meinen Augen zu viele Lagerorte. Ebenso wäre bei der Eingabe neuer 
Bauteile in einen Lagerort mir Unterfach auch ein Haken für "voll" 
sinnvoll, denn dann könnte man die Eingabe in so weit optimieren, dass 
nur leere Lagerfächer angegeben werden.

Wenn man nun dem Ganzen nun noch die Krone aufsetzen darf, wäre folgende 
weiterführende Funktion genial:
Wenn ich sagen wir einen 1K Widerstand ins System eingeben möchte und 
ich selbst aber nicht weiß ob er schon da ist, könnte er mir bei der 
Eingabe auch das Fach nennen wo er schon drin liegt und mich darauf 
hinweisen. Setzt vermutlich aber eine exakte Eingabe voraus.

von Ansgard (Gast)


Lesenswert?

Hallo Dennis,

liegt wahrscheinlich an meiner SQL Version (5.1). Wenn ich die Spalte 
auf UTF-8_unicode_ci wechsle zeigt er mir zumindest etwas an. Mit 
Umlauten ist es genau so. Muss mal sehen ob ich meine QNAP updaten kann.

Danke

Gruß Ansgard

von b.r (Gast)


Lesenswert?

Guido R. schrieb:
> Gibt es auch eine Möglichkeit die Lagerorte weiter zu unterteilen?
> Wenn ich z.B. als Lagerort Sortimentskasten 1 angebe, dann hat dieser
> auch weitere einzelne Fächer.
> Diese sind bei mir alle mit einem Nummernsystem versehen.
> Wenn ich nun alle (weit über 100) Fächer hinzufüge, dann wären das in
> meinen Augen zu viele Lagerorte.
Ich fürchte das wird in der Bedienung zu komplex. Die 100 Fächer 
hinzuzufügen ist ja inzwischen kein Problem mehr (Serienfunktion).
Vielleicht verwaltest Du die Sortimentskastennummer mit im Kommentar?
Dank selektiver Suchfunktion sollte das ein gangbarer Weg sein.

> Ebenso wäre bei der Eingabe neuer
> Bauteile in einen Lagerort mir Unterfach auch ein Haken für "voll"
> sinnvoll, denn dann könnte man die Eingabe in so weit optimieren, dass
> nur leere Lagerfächer angegeben werden.
Geht es Dir nur um die einfachere Eingabe, oder drum zu sehen das dort 
voll ist? Für Letzteres würde ich den Lagerort umbennenen: "Kiste"zu 
"Kiste_voll"...

> Wenn man nun dem Ganzen nun noch die Krone aufsetzen darf, wäre folgende
> weiterführende Funktion genial:
> Wenn ich sagen wir einen 1K Widerstand ins System eingeben möchte und
> ich selbst aber nicht weiß ob er schon da ist, könnte er mir bei der
> Eingabe auch das Fach nennen wo er schon drin liegt und mich darauf
> hinweisen. Setzt vermutlich aber eine exakte Eingabe voraus.
Wenn ich bei mir in der Suche "1K" eingebe, finde ich ein halbes Duzend. 
Wie soll das sinnvoll in die Eingabemaske passen?

Grüße
b

von Guido R. (gvidas)


Lesenswert?

Hi,

naja komplex würde ich jetzt nicht mal sagen. Bei den Kategorien ist es 
ja schon vorhanden!
So etwas müsste man ja "nur" kopieren. Bisher ist ja nur eine 
Dropdown-Liste vorhanden. Wenn nun 2 hinter einander wären. Erste für 
Lagerort, zweite für Lagerkiste.
Da ich nicht so Programmiergewand bin, kann ich es nicht alleine :-).
Die php abändern so, dass sie wie die Kategorie funktioniert, habe ich 
testweise schon gemacht. Ich habe bisher aber nicht einen Erfolg bei der 
Eingabe verzeichnen können.


Haken für Kiste voll:
Da geht es  mir in der tat nur darum um zu sagen, dass die Kiste voll 
ist. Oder belegt. Sie muss ja nicht physikalisch voll sein, sondern nur 
für das System voll, damit dort keine neuen Bauteile eingelagert werden.

Was ich als zweites meine war, dass die Lagerkisten dann bei der neuen 
Eingabe ausgeblendet werden. Das Umbenennen des Lagerplatzes halte ich 
da für umständlich. Es wäre eine elegantere Lösung, wenn die "vollen" 
Lagerplätze ausgeblendet werden.

von Jürgen S. (jsachs)


Lesenswert?

Guido R. schrieb:
> naja komplex würde ich jetzt nicht mal sagen. Bei den Kategorien ist es
> ja schon vorhanden!
> So etwas müsste man ja "nur" kopieren. Bisher ist ja nur eine
> Dropdown-Liste vorhanden. Wenn nun 2 hinter einander wären. Erste für
> Lagerort, zweite für Lagerkiste.
> Da ich nicht so Programmiergewand bin, kann ich es nicht alleine :-).
> Die php abändern so, dass sie wie die Kategorie funktioniert, habe ich
> testweise schon gemacht. Ich habe bisher aber nicht einen Erfolg bei der
> Eingabe verzeichnen können.
Die Idee finde ich auch nicht schlecht.

> Haken für Kiste voll:
> Da geht es  mir in der tat nur darum um zu sagen, dass die Kiste voll
> ist. Oder belegt. Sie muss ja nicht physikalisch voll sein, sondern nur
> für das System voll, damit dort keine neuen Bauteile eingelagert werden.
Im Prinzip willst Du quasy eine Liste aller deiner Lagerorte haben und 
eine Übersicht in welchem ein Bauteil zugewiesen ist ?
Reicht es nicht einen "Knopf" Freie Lagerorte zu haben und dann bekommt 
alle Lagerorte wo nichts hinterlegt ist ?
Kann hilfreich sein.

> Was ich als zweites meine war, dass die Lagerkisten dann bei der neuen
> Eingabe ausgeblendet werden. Das Umbenennen des Lagerplatzes halte ich
> da für umständlich. Es wäre eine elegantere Lösung, wenn die "vollen"
> Lagerplätze ausgeblendet werden.
Ja macht Sinn...

So kann man seine Regale effektiv nutzen.

Gruss
JSachs

von Guido R. (gvidas)


Lesenswert?

Jürgen Sachs schrieb:
> Guido R. schrieb:
>> naja komplex würde ich jetzt nicht mal sagen. Bei den Kategorien ist es
>> ja schon vorhanden!
>> So etwas müsste man ja "nur" kopieren. Bisher ist ja nur eine
>> Dropdown-Liste vorhanden. Wenn nun 2 hinter einander wären. Erste für
>> Lagerort, zweite für Lagerkiste.
>> Da ich nicht so Programmiergewand bin, kann ich es nicht alleine :-).
>> Die php abändern so, dass sie wie die Kategorie funktioniert, habe ich
>> testweise schon gemacht. Ich habe bisher aber nicht einen Erfolg bei der
>> Eingabe verzeichnen können.
> Die Idee finde ich auch nicht schlecht.

Schön, dass ich Zustimmung bekomme!

>> Haken für Kiste voll:
>> Da geht es  mir in der tat nur darum um zu sagen, dass die Kiste voll
>> ist. Oder belegt. Sie muss ja nicht physikalisch voll sein, sondern nur
>> für das System voll, damit dort keine neuen Bauteile eingelagert werden.
> Im Prinzip willst Du quasy eine Liste aller deiner Lagerorte haben und
> eine Übersicht in welchem ein Bauteil zugewiesen ist ?
> Reicht es nicht einen "Knopf" Freie Lagerorte zu haben und dann bekommt
> alle Lagerorte wo nichts hinterlegt ist ?
> Kann hilfreich sein.

Klar würde das reichen. Hauptsache man kann unterscheiden wo was liegt 
und wo nix liegt.
Meistens kennt man ja in etwa seine ganzen Tüten, Schubladen, Schachteln 
Sortimentskästen. Nur halt nicht im Detail.


>> Was ich als zweites meine war, dass die Lagerkisten dann bei der neuen
>> Eingabe ausgeblendet werden. Das Umbenennen des Lagerplatzes halte ich
>> da für umständlich. Es wäre eine elegantere Lösung, wenn die "vollen"
>> Lagerplätze ausgeblendet werden.
> Ja macht Sinn...
>
> So kann man seine Regale effektiv nutzen.

So stelle ich mir das vor.

von Ansgard (Gast)


Lesenswert?

Hi,

das Problem mit den Umlauten liegt im VServer der QNAP. Der 
Migrationsmanager hat Probleme mit den Umlauten in Mysql. Sobald man 
folgende Zeile ( <meta http-equiv="Content-Type" content="text/html; 
charset=utf-8"/> ) in den Header eingefügt hat, funktioniert es auch bei 
mir. Vielleicht könntet Ihr diese Zeile irgendwann mal mit einpflegen?

Vielen Dank

Gruß Ansgard

von K. J. (Gast)


Lesenswert?

hm naja ist eigentlich nicht so sinnvoll man stellt seine DB auf einen 
Zeichensatz ein wen jetzt das Skript was anderes Verlangt ist das 
Problematisch.

von Ansgard (Gast)


Lesenswert?

soweit habe ich nicht gedacht. Wie gesagt liegt das Problem nicht in der 
DB sondern im Virtalisierungsserver der QNAP. Vielleicht gibt es bis zur 
Lösung durch ein QNAP Update noch eine andere Variante (Verweis) diese 
Zeile für QNAP Nutzer einzufügen.

Gruß Ansgard

von Gelöscht (kami89)


Lesenswert?

Hallo,

Ich habe heute wiedermal die neuste Version vom SVN installiert. Schaut 
echt gut aus, da hat sich einiges getan seit dem letzten Update, vielen 
Dank dafür!

Ein Problem ist mir aber gleich aufgefallen: Das Kopieren von Baugruppen 
scheint nicht zu funktionieren. Es legt zwar die neue Baugruppe an, 
allerdings enthält sie keine Artikel.

Und dass man jetzt die Währung in der config.php angeben kann ist genial 
für uns Schweizer :-) Aber dort wo der Gesamtpreis einer Baugruppe 
angezeigt wird, wird diese Information nicht genutzt, da steht trotzdem 
Euro.

Und was ich persönlich noch schade finde, ist dass man den Preis nicht 
angeben kann beim Erstellen eines neuen Bauteiles. Ich habe meistens die 
Internetseite meines Elektronikhändlers noch offen nebenbei, dann wäre 
das keine grosse Sache den Preis noch mitanzugeben...

Gruss
Urban

EDIT: Ach ja, fast vergessen: Wäre es vielleicht sogar noch möglich, 
z.B. in der config.php die Grösse des PopUp-Fensters anzugeben, das beim 
Anlegen eines Teiles erscheint? Das Fenster ist standardmässig ziemlich 
klein geraten finde ich. Aber warum scrollen wenn doch noch Platz 
vorhanden wäre auf dem Bildschirm ;-)

von Dennis L. (w124dennis)


Lesenswert?

Urban B. schrieb:
> Ein Problem ist mir aber gleich aufgefallen: Das Kopieren von Baugruppen
> scheint nicht zu funktionieren. Es legt zwar die neue Baugruppe an,
> allerdings enthält sie keine Artikel.
Hm bei mir gehts:)

Urban B. schrieb:
> Und dass man jetzt die Währung in der config.php angeben kann ist genial
> für uns Schweizer :-) Aber dort wo der Gesamtpreis einer Baugruppe
> angezeigt wird, wird diese Information nicht genutzt, da steht trotzdem
> Euro.
Ändere ich am Wochenende

Urban B. schrieb:
> Und was ich persönlich noch schade finde, ist dass man den Preis nicht
> angeben kann beim Erstellen eines neuen Bauteiles. Ich habe meistens die
> Internetseite meines Elektronikhändlers noch offen nebenbei, dann wäre
> das keine grosse Sache den Preis noch mitanzugeben...
Das auch;) Nervt mich nämlich auch.

Urban B. schrieb:
> EDIT: Ach ja, fast vergessen: Wäre es vielleicht sogar noch möglich,
> z.B. in der config.php die Grösse des PopUp-Fensters anzugeben, das beim
> Anlegen eines Teiles erscheint? Das Fenster ist standardmässig ziemlich
> klein geraten finde ich. Aber warum scrollen wenn doch noch Platz
> vorhanden wäre auf dem Bildschirm ;-)
Bestimmt;)

Übrigens habe ich eine Bauteile Import Funktion für die Baugruppen 
geschrieben. Hauptsächlich gedacht für Eagle. Ich Speichere die Bauteile 
ID (Die jetzt auch angezeigt wird) als Attribute und exportiere diese 
mittels modifiziertem bom-ex.ulp.

Zudem lassen sich jetzt Bauteile ohne Lagerort / Footprint anlegen.

Gruß Dennis

von Gelöscht (kami89)


Lesenswert?

Genial, Danke! :-D

Das mit dem Kopieren muss ich dann wohl mal genauer anschauen, mach ich 
dann morgen oder am Wochenende.

Und das mit der Währung ist übrigens allgemein auf der ganzen 
Baugruppen-Seite, also auch in den Tabellen der Fall (habs zuerst nur 
ganz unten gesehen, beim Totalpreis^^)

Aber das mit dem Gesamtpreis passt mir gar nicht, jetzt merke ich dass 
meine Platinen eigentlich viel teurer sind als ich mir das vorgestellt 
habe^^ Eine config-Variable "hide_total_price" wär doch was^^ Nein 
Spass.

mfg

von K. J. (Gast)


Lesenswert?

Hm das mit den Baugruppen geht bei mir komplett nicht ich kann zwar 
Teile Adden aber sie werden nicht angezeigt auch mit ner komplett neu 
aufgesetzten DB geht das nicht.

siehe: partdb.grautier.com

EDIT: hat sich erledigt geht seit heute morgen :P

von Gelöscht (kami89)


Lesenswert?

Also bei mir funktioniert das Kopieren von Baugruppen wirklich nicht, 
aber vielleicht mach ich ja was falsch. Habe eine neue part-db 
folgendermassen angelegt (in einer VM mit Ubuntu):

Die neuste Version herunterladen
1
sudo svn checkout http://part-db.googlecode.com/svn/trunk/ /var/www/part-db

in phpmyadmin einen neuen Benutzer "part-db" anlegen (ohne Passwort, 
alle Rechte).

Dann eine neue Datenbank "part-db" anlegen, und die Datei 
/var/www/part-db/readme/createtables-FOR-V0.2.1.sql wählen. Wird 
erfolgreich Importiert.

Der Benutzer "part-db" bekommt alle Rechte an dieser datenbank (scheint 
er automatisch zu bekommen?!)

mit
1
sudo gedit /var/www/part-db/config.php
 das Passwort auf "" setzen (löschen), speichern.

Und dann ausprobieren: Ein Footprint, ein Lagerort, ein Lieferant und 
eine Baugruppe anlegen. Das Bauteil zur Baugruppe hinzufügen, 
funktioniert wunderbar und wird auch so gespeichert. Klick auf 
"Kopieren" --> Eine neue Baugruppe wird angelegt (KopieVon...), enthält 
aber kein Bauteil.

Was könnte hier falsch gelaufen sein?
Ansonsten scheint alles zu funktionieren in part-db.

Ich verwende die offiziellen Ubuntu-Pakete, also
- apache 2.2.17
- php5-mysql 5.3.5
- mysql-server 5.1.54

von b.r (Gast)


Lesenswert?

Urban B. schrieb:
> Die neuste Version herunterladen
Das sich momentan quasi täglich was ändert, müsstest Du hier die 
Revisionsnummer mit angeben.

Grüße
b

von Gelöscht (kami89)


Lesenswert?

OK also habe jetzt gerade nochmal die neuste Version installiert, und 
das war Revision 242. Da geht das kopieren immer noch nicht.

Also ich muss sagen, ich habe allgemein nicht soo viel Ahnung von dem 
Zeug (heisst: es ist schon möglich dass ich etwas falsch gemacht habe), 
aber wenn doch sonst alles funktioniert sollte doch auch das Kopieren 
gehen?

Gruss
Urban

von Guido R. (gvidas)


Lesenswert?

Da ich die Datenbank auf meinem Webspace laufen hab und er damit immer 
und überall erreichbar ist, habe ich mal einen Passwortschutz 
eingebastelt. War bissel nervig, da ich jede PHP anpassen musste :-(. 
Bis jetzt läuft es aber recht gut. Ist halt nur die Sache mit den 
Lagerorten die etwas unübersichtlich sind.
Ich weis nicht ob es für andere auch Interessant ist und ein Login 
langfristig mit eingepflegt wird.

von Björn G. (tueftler)


Lesenswert?

mit ner .htaccess im root müsste das doch im nu lösbar sein oder nicht?
Ansonsten fände ich es auch sehr wichtig das hier ein Login integriert 
würde.

Derzeit bin ich schwer am überlegen ob nun alle Daten in EleLa oder 
Part-DB besser aufgehoben wären.
Optisch gefällt mir dieses System besser.

Wäre voll cool gewesen wenn die Datenbankstrukturen gleich wären und man 
entweder oder nutzen kann :)

Bin echt hin und her gerissen mit Euren beiden Projekten...

Björn

von Dennis L. (w124dennis)


Lesenswert?

Hallo,

- kopier Funktion sollte jetzt überall funktionieren (DB Fix)
- Neue Bauteile lassen sich jetzt gleich mit einem Preis versehen

Gruß Dennis

von b.r (Gast)


Lesenswert?

Guido R. schrieb:
> Da ich die Datenbank auf meinem Webspace laufen hab und er damit immer
> und überall erreichbar ist, habe ich mal einen Passwortschutz
> eingebastelt. War bissel nervig, da ich jede PHP anpassen musste :-(.
Das hätte man vielleicht auch zentral in lib.php regeln können.

> Ist halt nur die Sache mit den
> Lagerorten die etwas unübersichtlich sind.
Ist seit Revision 250 geändert.

> Ich weis nicht ob es für andere auch Interessant ist und ein Login
> langfristig mit eingepflegt wird.
Prinzipiell ja, aber es muss konfigurierbar sein. Viele benötigen das 
Feature sicher gar nicht, da der Webserver lokal läuft und einigen 
reicht der Schutz durch die .htaccess.

Schick mal deinen Patch (https://code.google.com/p/part-db/people/list).

Grüße
b

von Gelöscht (kami89)


Lesenswert?

Dennis L. schrieb:
> Hallo,
>
> - kopier Funktion sollte jetzt überall funktionieren (DB Fix)
> - Neue Bauteile lassen sich jetzt gleich mit einem Preis versehen
>
> Gruß Dennis

Funktioniert, vielen Dank Dennis!
Und auch das mit der Pupup-Fenstergrösse ist genial!

Die nächste Idee wär dann eine Uploadfunktion für Footprint-Bilder, dann 
müsste man bei einem neuen Bild auch nicht extra auf den Server 
zugreifen :-)

Und bei den Baugruppen hätte ich noch eine Idee. Wenn man eine etwas 
längere Bauteilliste hat (so dass man nach unten scrollen muss), und 
weiter unten ein Teil hinzufügen oder löschen will (inkl. Änderung der 
Bestückunsdaten), dann muss man dieses Teil zwei mal in der Liste 
suchen. Zuerst um die Anzahl zu ändern, dann wird die Liste neu geladen, 
und dann muss man den Eintrag nochmal suchen um die Bestückungsdaten 
abzuändern.
Es gäbe jetzt mehrere Möglichkeiten, das zu verbessern. Einerseits 
könnte man alle Buttons entfernen, und nur noch in der letzten Spalte 
einen Button "Speichern" hinmachen, welcher dann alle gemachten 
Änderungen an diesem Eintrag speichert. Das würde aber heissen, dass man 
die Stückzahl wohl durch ein Eingabefeld austauschen müsste.
Andererseits könnte man ja auch alles so lassen wie es ist, ausser dass 
beim Klicken auf einen der Buttons "+" oder "-" auch gleich die 
Bestückungsdaten mitabgeändert werden. Ist aber irgendwie noch so ganz 
die "saubere" Art, weil wenn man nicht weiss dass das so funktioniert 
wird man diese Funktion auch nicht nutzen (nicht selbsterklärend).

Ich überlasse es mal euch, ob und wie ihr das realisiert :-)

Gruss
Urban

von Dennis L. (w124dennis)


Lesenswert?

Hallo Urban

ich werde den Button wegmachen und ein Speicherbutton unter der Tabelle 
einführen. Die vielen OKs nerven tierisch ;)

von Gelöscht (kami89)


Lesenswert?

Okay, bestens.

Und ich hätte auch schon den nächsten Vorschlag:
In der Baugruppen-Übersicht (Menüeintrag "Verwalten") wäre eine 
zusätzliche Spalte noch cool, in der die jeweiligen Gesamtpreise der 
Baugruppen angezeigt werden. Dann sieht man gleich in der Übersicht, was 
die einzelnen Platinen so kosten. Und wenn man mehrere 
Bestückungsvarianten (z.B. eine Variante "Vollbestückt" und eine 
"LowCost-Variante") von einer Platine abspeichert, sieht man auch gleich 
den Preisunterschied zwischen den einzelnen Bestückungsvarianten.

Ich hoffe ich nerve nicht mit den ganzen Vorschlägen :-) Wenn ich PHP 
könnte, würde ich sehr gerne auch selber Hand anlegen. Habe gestern mal 
(mehr aus Neugier) angefangen ein PHP Tutorial zu lesen, aber das kann 
noch eine Weile dauern bis ich soweit bin^^

Habe das mit der Preis-Spalte heute mal ausprobiert selber zu machen, 
die neue Spalte habe ich hingekriegt, aber den richtigen SQL-Befehl um 
den Gesamtpreis zu bekommen war dann ein bisschen zu viel für mich ;-)

mfg

von Ansgard (Gast)


Lesenswert?

Hallo,

ich hätte noch eine Frage zur Baugruppenverwaltung / Export. Ist es 
möglich, eigene Scripte für den CSV Export selber zu erstellen und 
eizufügen bzw in welcher Datei müsste man ändern? So könnte man z.B. mit 
der neuen Dymosoftware Etiketten für Bauteile bzw. Lagerort erstellen.

Gruß Ansgard

von K. J. (Gast)


Lesenswert?

Hi, hatte ich mich auch schon gefragt hab es mir mal angeschaut aber 
nicht verstanden, ich hätte gerne ne Exportfunktion fürs dokuwiki, werde 
es mir morgen mal genauer anschauen crustom per Script wird wohl nicht 
gehen aber man könnte einige Standarte einpflegen, den rest müste man 
halt per exel oder OOo nachformetieren.

von Björn G. (tueftler)


Lesenswert?

Hi.

Ich habe mir Euer Projekt einmal etwas genauer angeschaut.
Was mir aufgefallen ist:
1) Wenn ich in Chrome ein Bauteil öffne kommt ein neues Fenster welches
aber extrem klein oben links im Bildschirm geöffnet wird. Größe und
Position wird für das nächste Öffnen leider nicht gespeichert.

2) Lagerort ohne Fachnummer. Ich fände es übersichtlicher wenn man zu
einem Lagerort eine Fachnummer eintragen könnte. Wie nutzt Ihr das? Evtl
SchubladeA-1 für erstes Fach in der Schublade?

Kommt in Zukunft noch ein Etikettendruck Feature mit rein?
Wie schon geschrieben - bin grade zwischen EleLa und hier am
vergleichen.

Aber wahnsinn wie flott die Website so arbeitet :)

Gruß, Björn

PS.: Da ich irgendwie nicht mehr so ganz hinterher komme wer jetzt von 
Euch genau was an dem Projekt programmiert, spreche ich also alle 
Programmierer an :)
Schaut mal bitte auf diesen Thread:
Beitrag "Re: EleLa - Elektronik Lagerverwaltung ab V1.2.11A26"
Evtl. könnte man ja hier etwas tun...

von b.r (Gast)


Lesenswert?

Ansgard schrieb:
> Sobald man
> folgende Zeile ( <meta http-equiv="Content-Type" content="text/html;
> charset=utf-8"/> ) in den Header eingefügt hat, funktioniert es auch bei
> mir. Vielleicht könntet Ihr diese Zeile irgendwann mal mit einpflegen?
Siehe config.php ab Revision 267...

Grüße
b

von b.r (Gast)


Lesenswert?

Björn G. schrieb:
> Wenn ich in Chrome ein Bauteil öffne kommt ein neues Fenster welches
> aber extrem klein oben links im Bildschirm geöffnet wird. Größe und
> Position wird für das nächste Öffnen leider nicht gespeichert.
Die Demo-Datenbank (http://partdb.grautier.com/) macht das auch so.
Meine lokale Testinstallation funktioiert.

Ist die config.php auf dem neusten Stand?

Grüße
b

von Dennis L. (w124dennis)


Lesenswert?

Urban B. schrieb:
> Und ich hätte auch schon den nächsten Vorschlag:
> In der Baugruppen-Übersicht (Menüeintrag "Verwalten") wäre eine
> zusätzliche Spalte noch cool, in der die jeweiligen Gesamtpreise der
> Baugruppen angezeigt werden. Dann sieht man gleich in der Übersicht, was
> die einzelnen Platinen so kosten. Und wenn man mehrere
> Bestückungsvarianten (z.B. eine Variante "Vollbestückt" und eine
> "LowCost-Variante") von einer Platine abspeichert, sieht man auch gleich
> den Preisunterschied zwischen den einzelnen Bestückungsvarianten.
Ist in der aktuellen revision;)

Urban B. schrieb:
> Und bei den Baugruppen hätte ich noch eine Idee. Wenn man eine etwas
> längere Bauteilliste hat (so dass man nach unten scrollen muss), und
> weiter unten ein Teil hinzufügen oder löschen will (inkl. Änderung der
> Bestückunsdaten), dann muss man dieses Teil zwei mal in der Liste...
Das auch, ich glaube jetzt ist es etwas übersichtlicher.

Ansgard schrieb:
> ich hätte noch eine Frage zur Baugruppenverwaltung / Export. Ist es
> möglich, eigene Scripte für den CSV Export selber zu erstellen und
> eizufügen bzw in welcher Datei müsste man ändern? So könnte man z.B. mit
> der neuen Dymosoftware Etiketten für Bauteile bzw. Lagerort erstellen.
Die Export Funktion ist direkt in PHP geschrieben. Grundidee ist es 
mittels Bauteile Import in Onlineshops direkt die exportierten Teile zu 
importieren. Gleiche Exportfunktion gibt es ja für die "zu bestellende 
Teile".
Denkbar wäre natürlich auch eine Export für die Lagerorte.

Björn G. schrieb:
> 2) Lagerort ohne Fachnummer. Ich fände es übersichtlicher wenn man zu
> einem Lagerort eine Fachnummer eintragen könnte. Wie nutzt Ihr das? Evtl
> SchubladeA-1 für erstes Fach in der Schublade?
Genau so nutze ich es;) T1-15 -> Turm1 Fach15


Gruß Dennis

von Björn G. (tueftler)


Lesenswert?

@b.r.
Ich habe auch auf der Testinstalllation herum gespielt.
Dachte das müsste ja die aktuellste sein.

Björn

von b.r (Gast)


Lesenswert?

Björn G. schrieb:
> Lagerort ohne Fachnummer. Ich fände es übersichtlicher wenn man zu
> einem Lagerort eine Fachnummer eintragen könnte. Wie nutzt Ihr das? Evtl
> SchubladeA-1 für erstes Fach in der Schublade?
Du kannst seit neuestem die Lagerorte hierarchisch ordnen (so wie die 
Kategorien). Damit ist sowas machbar: ... -> Gebäude -> Raum -> Schrank 
-> Fach

> Kommt in Zukunft noch ein Etikettendruck Feature mit rein?
Wie stellst Du Dir das Feature vor?
Was soll auf die Etiketten drauf?

Grüße
b

von Gelöscht (kami89)


Lesenswert?

@Dennis
Das geht ja schnell hier!
Wenn jetzt das mit der Footprint-Uploadfunktion auch noch klappen würde, 
wäre ich vorerst mal ganz zufrieden :D

Ansonsten melde ich mich wieder ;-)

Vielen Dank und Grüsse
Urban

von b.r (Gast)


Lesenswert?

Ansgard schrieb:
> Könnte man den Aufruf eines Datenblattes dei Reichelt mit einer Abfrage
> versehen, welche als erstes die Bestellnummer prüft und wenn das Feld
> leer ist dann den Namen nutzt?
done. Revision 271

von Guido R. (gvidas)


Lesenswert?

b.r schrieb:
> Schick mal deinen Patch (https://code.google.com/p/part-db/people/list).

Viel verändert habe ich eigentlich nicht!
Ich habe von http://www.php-einfach.de/tuts_php_login_sessions.php den 
Code genommen und bissel dran rum gebastelt bis es funktionierte.

Jetzt hat sich in den Tagen doch arg viel getan... Wie kriege ich denn 
die ganzen Updates auf meine Version?

von b.r (Gast)


Lesenswert?

Guido R. schrieb:
> Wie kriege ich denn
> die ganzen Updates auf meine Version?
Recht elegant geht es unter Windows mit TortoiseSVN.
Dazu sind folgende Schritte notwendig:
* die damalige Version in ein neues Verzeichnis auschecken z.B.:
  svn checkout --revision 100 http://part-db.googlecode.com/svn/trunk/ 
part-db
* die geänderten Dateien in dieses Verzeichnis reinkopieren
* jetzt ein Update (svn update) durchführen, wenn es Konflikte gibt kann 
man bei TortoiseSVN per Doppelklick das Programm TortoiseMerge aufrufen 
und an den roten Stellen entscheiden, wie der zukünftige Code aussehen 
soll.
* wenn alles glatt geht, hat man eine aktuelle Version mit den eigenen 
Änderungen

Grüße
b

P.S.: Alternativ kannst Du auch die php-Dateien in ein .zip-File packen 
und hier reinstellen.

von Guido R. (gvidas)


Lesenswert?

Zu "meinem" Login:
Ich habe die Dateien aus dem Link oben auf meinem Webserver geladen und 
nach der beschreibung angepasst. jede php hatte dann noch
1
session_start();
2
if(!isset($_SESSION['username']))
3
   {
4
   echo (wegen Spamwarnung entfernt);
5
   exit;
6
   }
bekommen.
das wars eigentlich. Nun ist die Startseite halt in meinen Favoriten 
anders hinterlegt. Das ist in meinen Augen keine elegante Lösung. Ist 
aber die erste die funktionierte :-D



Da ich überwiegend mit Apple arbeite und die DB auf einem externen 
Webserver liegt und hier nur via FTP erreicht wird, klappt das wohl mit 
TortoiseSVN nicht :-(

von b.r (Gast)


Lesenswert?

Guido R. schrieb:
> Da ich überwiegend mit Apple arbeite und die DB auf einem externen
> Webserver liegt und hier nur via FTP erreicht wird, klappt das wohl mit
> TortoiseSVN nicht :-(
Alles klar. Kein Problem. Kannst Du bitte ein .zip-File hier einstellen?

Grüße
b

von K. J. (Gast)


Lesenswert?

Björn G. schrieb:
> @b.r.
> Ich habe auch auf der Testinstalllation herum gespielt.
> Dachte das müsste ja die aktuellste sein.
>
> Björn

Ja ist sie allerdings muss die config.php immer per Hand upgedatet 
werden das kann ich bei den Änderungen momentan jeden Tag machen 
deswegen dauert das immer eine weile.

von Guido R. (gvidas)


Lesenswert?

b.r schrieb:
> Alles klar. Kein Problem. Kannst Du bitte ein .zip-File hier einstellen?

Von was genau? Dem gesamten Projekt? Wie gesagt das ist noch nicht mal 
die aktuellste Version und außer dem was ich oben geschrieben habe, habe 
ich nix verändert...
Sehe daher wenig Sinn drin hier den Inhalt als Zip anzuheften :-)

von Björn G. (tueftler)


Lesenswert?

@K.J.:
Danke der Info.
Nun funktioniert es dort auch wieder.

von Björn G. (tueftler)


Lesenswert?

b.r schrieb:
>> Kommt in Zukunft noch ein Etikettendruck Feature mit rein?
> Wie stellst Du Dir das Feature vor?
> Was soll auf die Etiketten drauf?

In etwa so:
http://www.mikrocontroller.net/attachment/116345/Bild1.png

Hier habe ich mit Markus zusammen das für EleLa gebastelt:
Beitrag "Re: EleLa - Elektronik Lagerverwaltung"

Funktioniert nun wirklich sau gut.

Ich nehme nun z.B. einen neuen Widerstandstyp in meine Box auf und sag 
dem Programm das es mir einen "Schuber" dafür generieren sollte.
Aufzählrichtung, Größen und abzudruckende Daten kann man einstellen und 
schon kann man es ausdrucken.
Danach nur ausschneiden und in den Klarsichtdeckel der Box legen - 
fertig.
Auch kann man sehr einfach die Aufkleber für die einzelnen Schubladen 
von stehenden Sortimentskästen machen.
Hier einfach auf ein DINA4-Etikett drucken und kurz ausschneiden.
Sieht optisch dann auch schick aus im Bastelraum ;)

...sowas in der Art.
Björn

von b.r (Gast)


Lesenswert?

Guido R. schrieb:
> Von was genau? Dem gesamten Projekt?
Ja, bitte vom gesamten Projekt. Mir reichen die php-Dateien.

> Wie gesagt das ist noch nicht mal
> die aktuellste Version
Das macht nix.

> und außer dem was ich oben geschrieben habe, habe
> ich nix verändert...
Jaja. Das sagen alle ;-)

> Sehe daher wenig Sinn drin hier den Inhalt als Zip anzuheften :-)
Aber ich. So kann ich viel besser sehen, was wo eingefügt/verändert 
wurde, als die vage Beschreibung in Deinem Forumsbeitrag.

Soll das Feature nun mit rein in die offizielle Version, oder nicht? Ich 
brauche es nicht und werde es daher auch nicht selbst neu entwickeln.

Grüße
b

von b.r (Gast)


Lesenswert?

Björn G. schrieb:
>>> Kommt in Zukunft noch ein Etikettendruck Feature mit rein?
>> Wie stellst Du Dir das Feature vor?
>> Was soll auf die Etiketten drauf?
>
> In etwa so:
> http://www.mikrocontroller.net/attachment/116345/Bild1.png

Also ungefähr das Format
[Lagerort]
Name1: Footprint
Name2: Footprint
Namex: Footprint

sehe ich das richtig?

Sowas sollte sich machen lassen.

Grüße
b

von Björn G. (tueftler)


Lesenswert?

Ja, genau.
Evtl. noch die Produktbezeichnung falls man es braucht.

Wie man im Screenshot sieht wird die Schriftart angeglichen.

Gruß
Björn

von Gelöscht (kami89)


Lesenswert?

...und da bin ich auch schon wieder :-)

Jetzt wo ich schon ein paar Baugruppen angelegt habe, wirkt das Menü 
doch schon langsam etwas überfüllt. Man stelle sich vor, da wird für 
jede Baugruppe, die man "im Leben" so erstellt, ein Menüeintrag erzeugt. 
Das gibt eine ganz schön lange Liste.

Daher mein Vorschlag: Kategorien für Baugruppen, inkl. aufklappbares 
Menü, genau wie bei den Bauteilen. Wäre super wenn das klappt!

mfg
Urban

von K. J. (Gast)


Lesenswert?

Ja hab ich auch schon festgestellt, werde mich darum kümmern, finde eh 
man müsste das ganze Menü mal überarbeiten langsam wird das recht groß, 
ich setze das mal auf meine toodoliste.

von Gelöscht (kami89)


Angehängte Dateien:

Lesenswert?

heyy,

falls es dir was bringt, ich habe mich mal rangesetzt und mit copy&paste 
und search&replace die Baugruppen umfunktioniert, so dass sie jetzt auch 
hierarchisch eingeordnet werden können und ein Menü generiert wird.

Ich habe dabei die Datei "catmgr.php" Kopiert, und als "devmgr.php" 
abgespeichert. Diese ersetzt nun die Datei "devices.php".
Der Link "Verwalten" ist jetzt unten bei "Bearbeiten" im Menü, mit dem 
Namen "Baugruppen".
Das Datenbankupdate habe ich auch eingefügt, damit ein "parentnode" in 
der Tabelle "devices" erzeugt wird.

Was noch fehlt: Beim Kopieren einer Baugruppe wird die Info "parentnode" 
nicht in die neue Baugruppe übernommen, sie erscheint in der höchsten 
Ebene im Menü. Ich wäre froh, wenn du das noch machen könntest.

Ich habe mir Mühe gegeben, aber ich kann nicht garantieren dass sonst 
alles fehlerfrei ist. Wie ich schon erwähnte habe ich nahezu keinerlei 
Erfahrung mit php, aber ein bisschen Rumkopieren geht auch ohne die 
Erfahrung :-)

Bei mir scheint alles soweit zu funktionieren.

Ach ja, ich habe das Suchfeld links oben noch um 3 Stellen kürzer 
gemacht. Das bewirkt bei mir, dass der Button "Los!" noch rechts neben 
dem Suchfeld Platz hat, und das Menü wird wieder ein bisschen kürzer. 
Ich weiss aber nicht ob das nicht stark vom Browser und der 
Bildschirmauflösung abhängt, dann bringt das natürlich nichts wenn du 
das auch so übernimmst.

mfg

von Gelöscht (kami89)


Lesenswert?

ups, war schon spät gestern, da hab ich gar nicht gemerkt dass jetzt ja 
die Baugruppen-Übersicht weg ist. Also die Seite wo man schön die Preise 
aller Baugruppen sehen kann, das war natürlich nicht meine Absicht.

Mal schauen, vielleicht schaff ich es, die wieder einzubauen :-)

von Guido R. (gvidas)


Lesenswert?

Ich hab mal die aktuellste Version eingefügt und bekomme nun folgende 
Meldung:
1
DBVersion: 0, benötigt ein Update.
2
3
your Database version 0 is outdated an will now be updated to 5
4
Get lock of database
5
FEHLER: unbekannte Version 0 
6
Fehler, update von dieser Version ist nicht definiert. Check setDBUpdateSteps() für Version 0
7
Update failed, aborting
8
Unlocking Database
9
Update Failed

von Dennis L. (w124dennis)


Lesenswert?

Hallo Guido,

für den automatischen update muss einmalig das sql script 
(createtables-FOR-V0.2.1.sql) im readme Ordner ausgeführt werden.

Gruß Dennis

von Guido R. (gvidas)


Lesenswert?

Hi,

bringt mir ja nur nicht viel, wenn ich schon einiges an Daten in die 
Datenbank eingegeben habe und ich alles löschen muss, weil er mir bei 
der Ausführung sagt:
1
#1050 - Table 'categories' already exists

von Dennis L. (w124dennis)


Lesenswert?

Die Fehler könne ignoriert werden, es geht nur um die Erstellung der 
internal Tabelle:
Alternativ einfach das ausführen:

CREATE TABLE `internal` (
  `keyName` CHAR(30) CHARACTER SET ASCII UNIQUE NOT NULL,
  `keyValue` CHAR(30)
) ENGINE=MyISAM;

INSERT INTO `internal` SET `keyName`='dbVersion', `keyValue`='4';

von Guido R. (gvidas)


Lesenswert?

nun bekomme ich:
DBVersion: 4, benötigt ein Update.

your Database version 4 is outdated an will now be updated to 5
Get lock of database
Can't DROP 'PRIMARY'; check that column/key exists
Update failed, aborting
Unlocking Database
Update Failed

von Jürgen S. (jsachs)


Lesenswert?

Dennis L. schrieb:
> Die Fehler könne ignoriert werden, es geht nur um die Erstellung der
> internal Tabelle:
> Alternativ einfach das ausführen:
>
> CREATE TABLE `internal` (
>   `keyName` CHAR(30) CHARACTER SET ASCII UNIQUE NOT NULL,
>   `keyValue` CHAR(30)
> ) ENGINE=MyISAM;
>
> INSERT INTO `internal` SET `keyName`='dbVersion', `keyValue`='4';

Da sollte man nicht tun !

Die Update Routine erkennt das die Tabelle fehlt und legt diese 
selbstständig an.
Außerdem sollte man NIE die Datenbankversion selbst setzen. Das setzen 
auf "4" ist wirklich fatal.

Um das Automatische Update sicher zu machen, geht man von einer Version 
zur nächsten.
Ist die Aktuelle Version 1 und aktuell 5, mach das Skript erst update 
auf 2, dann auf 3, dann auf 4 und auf 5.
Dabei darf nie ein Fehler auftreten, sonst wird abgebrochen. Im Skript 
zu bewerten was schief geht und ob man weiter machen kann ist nicht 
einfach.

Setzt man jetzt die Datenbankversion händisch, also von 2 auf 4, dann 
funktioniert das nicht mehr.

Wichtig ist nur das der partDB Datenbanknutzer alle notwendigen Rechte 
hat.

Gruss
Juergen

von Jürgen S. (jsachs)


Lesenswert?

Guido R. schrieb:
> nun bekomme ich:
> DBVersion: 4, benötigt ein Update.
>
> your Database version 4 is outdated an will now be updated to 5
> Get lock of database
> Can't DROP 'PRIMARY'; check that column/key exists
> Update failed, aborting
> Unlocking Database
> Update Failed
mach mal bitte einen
- show tables;
- describe part_devices;

Dann wissen wir welchen stand deine Datenbank hat und können das 
anpassen...

Gruss
Juergen

PS: Nochmals die Bitte die Datenbankversion NIE selbst verändern.

von dennis (Gast)


Lesenswert?

Das automatische erzeugen hat bei mir jedenfalls noch nie funktioniert. 
Das auf Version 4 setzen war ungewollt sorry, hat irgendwer in die 
createtables gemacht.
Dennis

von Guido R. (gvidas)


Lesenswert?

Jürgen Sachs schrieb:
> Guido R. schrieb:
>> nun bekomme ich:
>> DBVersion: 4, benötigt ein Update.
>>
>> your Database version 4 is outdated an will now be updated to 5
>> Get lock of database
>> Can't DROP 'PRIMARY'; check that column/key exists
>> Update failed, aborting
>> Unlocking Database
>> Update Failed
> mach mal bitte einen
> - show tables;
> - describe part_devices;
>
> Dann wissen wir welchen stand deine Datenbank hat und können das
> anpassen...
>
> Gruss
> Juergen
>
> PS: Nochmals die Bitte die Datenbankversion NIE selbst verändern.

Ich hab hier PHPMyAdmin...
möchtest du, dass ich dir eine Liste der Tabellen gebe, sowie die 
Spalten der part_devices?

Gruß

von Dennis L. (w124dennis)


Lesenswert?

@Guido,

dein Fehler deutet darauf hin das deine Tabellen nicht mit dem gleichen 
Ausgangszustand angefangen haben wie die Versionierung. Gehe in 
part_device und setzte part_id als primary key und öffne part-db neu. 
Dann müsste es gehen.


Gruß Dennis

von K. J. (Gast)


Lesenswert?

Urban B. schrieb:
> ...und da bin ich auch schon wieder :-)
>
> Jetzt wo ich schon ein paar Baugruppen angelegt habe, wirkt das Menü
> doch schon langsam etwas überfüllt. Man stelle sich vor, da wird für
> jede Baugruppe, die man "im Leben" so erstellt, ein Menüeintrag erzeugt.
> Das gibt eine ganz schön lange Liste.
>
> Daher mein Vorschlag: Kategorien für Baugruppen, inkl. aufklappbares
> Menü, genau wie bei den Bauteilen. Wäre super wenn das klappt!
>
> mfg
> Urban

Ist drinnen, allerdings noch ohne Catigurin

http://partdb.grautier.com/

von Gelöscht (kami89)


Lesenswert?

hmm aber die nav.php scheint noch Fehler zu enthalten, bei mir lädt sich 
das Menü nicht und es kommt irgend so ein Scriptfehler von Firefox.

Einerseits gibt es einen Konflikt mit dem Menüeintrag "Verwalten", denn 
diesem hast du ja die ID 1 zugewiesen. Bei mir existiert aber schon eine 
Baugruppe mit dieser ID, das kollidiert dann natürlich. Man sollte 
vielleicht ein DB-Update einbauen, das die ID 1 freiräumt.

Und dann hast du in der Funktion "baugruppentree" ganz am Schluss die 
Zeile
1
 buildtree ($d[0], $pid);
drin, welche aber ja die Funktion von den Kategorien aufrufen würde. Das 
müsste wohl
1
 baugruppentree ($d[0], $pid);
heissen. Allerdings verweigert mein Firefox das Laden immernoch, wenn 
ich diese Zeile auskommentiere funktioniert es. Das kann aber daran 
liegen, dass eben die ID 1 schon von einer Baugruppe verwendet wird...

von K. J. (Gast)


Lesenswert?

Urban B. schrieb:
> hmm aber die nav.php scheint noch Fehler zu enthalten, bei mir lädt sich
> das Menü nicht und es kommt irgend so ein Scriptfehler von Firefox.
>
> Einerseits gibt es einen Konflikt mit dem Menüeintrag "Verwalten", denn
> diesem hast du ja die ID 1 zugewiesen. Bei mir existiert aber schon eine
> Baugruppe mit dieser ID, das kollidiert dann natürlich. Man sollte
> vielleicht ein DB-Update einbauen, das die ID 1 freiräumt.
>
Oh ja nicht bedacht.

> Und dann hast du in der Funktion "baugruppentree" ganz am Schluss die
> Zeile
>
1
 buildtree ($d[0], $pid);
> drin, welche aber ja die Funktion von den Kategorien aufrufen würde. Das
> müsste wohl
>
1
 baugruppentree ($d[0], $pid);
> heissen. Allerdings verweigert mein Firefox das Laden immernoch, wenn
> ich diese Zeile auskommentiere funktioniert es. Das kann aber daran
> liegen, dass eben die ID 1 schon von einer Baugruppe verwendet wird...

hm bei mir geht es hab es nochmal geändert ich schau mir das aber 
nochmal an.

von Gelöscht (kami89)


Lesenswert?

K. J. schrieb:
> hm bei mir geht es hab es nochmal geändert ich schau mir das aber
> nochmal an.

Ja, jetzt wo es noch keine Kategorien gibt in den Baugruppen sollte die 
Zeile
1
buildtree ($d[0], $pid);
noch keinen Einfluss haben. Sobald aber die Kategorien hinzukommen wird 
diese Zeile aber ein Fehlverhalten verursachen wenn ich das soweit 
richtig verstanden habe.

Irgendwie ist der Skriptfehler aber wohl doch nicht wegen der ID 1. Wenn 
ich die ID für den Eintrag "Verwalten" auf 99 setze (es existiert keine 
Baugruppe mit dieser ID) meckert der Firefox trotzdem. Muss das mal 
genauer anschauen was da los ist...Vielleicht habe ich mittlerweile auch 
irgendwo was selber verbastelt, werde mal eine komplette Neuinstallation 
versuchen.

von K. J. (Gast)


Lesenswert?

Urban B. schrieb:
> K. J. schrieb:
>> hm bei mir geht es hab es nochmal geändert ich schau mir das aber
>> nochmal an.
>
> Ja, jetzt wo es noch keine Kategorien gibt in den Baugruppen sollte die
> Zeile
>
1
buildtree ($d[0], $pid);
> noch keinen Einfluss haben. Sobald aber die Kategorien hinzukommen wird
> diese Zeile aber ein Fehlverhalten verursachen wenn ich das soweit
> richtig verstanden habe.
>
Ja genau ist jetzt raus

> Irgendwie ist der Skriptfehler aber wohl doch nicht wegen der ID 1. Wenn
> ich die ID für den Eintrag "Verwalten" auf 99 setze (es existiert keine
> Baugruppe mit dieser ID) meckert der Firefox trotzdem. Muss das mal
> genauer anschauen was da los ist...Vielleicht habe ich mittlerweile auch
> irgendwo was selber verbastelt, werde mal eine komplette Neuinstallation
> versuchen.

Ja ist normal wen es die Node nicht gibt schmiert das Script ab die 99 
gibt es nicht hab mich den halben morgen damit rumgeärgert.

Hab Grade nen Bugfix eingepflegt die IDs des Menüs sind jetzt die der 
driveid+1 mir ist das nicht aufgefallen ich hab keine driveid = 1

in etwa müsste folgendes raus kommen:

                baugruppen = new dTree('baugruppen');
                baugruppen.add(0,-1,'');
                baugruppen.add(1,0,'Verwaltung','device.php"','','content_frame');
                baugruppen.add(2,1,'test','deviceinfo.php?deviceid=1','','content_frame' 
);
baugruppen.add(5,1,'KopieVontest','deviceinfo.php?deviceid=4','','conten 
t_frame');
baugruppen.add(7,1,'KopieVonKopieVontest','deviceinfo.php?deviceid=6','' 
,'content_frame');
baugruppen.add(8,1,'KopieVonKopieVonKopieVontest','deviceinfo.php?device 
id=7','','content_frame');
                document.write(baugruppen);

von Gelöscht (kami89)


Lesenswert?

aaah ja jetzt läuft es :-D
Der Fehler hat meine Virtuelle Maschine voll in die Knie gezwungen, 
konnte kaum mehr neu starten :-)

Bei den IDs hatte ich ein Durcheinander mit den IDs vom Menü und den IDs 
von den Baugruppen. So wie du es jetzt gemacht hast ist es natürlich 
ganz simpel und logisch xD

Meine Idee, wie man das mit den kategorisierten Baugruppen machen 
könnte, wäre folgende:

* Ein DB-Update einbauen, das bei den devices noch die Spalte 
"parentnode" einfügt. Ein paar Beiträge früher habe ich ja eine 
Zip-Datei angehängt, da habe ich das Update schon eingebaut.
* Zum Verwalten der Baugruppen könnte man genau die gleiche Seite nehmen 
wie bei den Kategorien (catmgr.php), einfach mit dem Namen devmgr.php. 
In meiner ZIP-Datei wäre genau eine solche devmgr.php drin. 
Funktionieren sollte sie, habe es schon getestet.
* Im Baugruppenmenü gibt es dann kein "Verwalten" mehr auf oberster 
Ebene, wenn man das haben möchte legt man einfach eine solche Kategorie 
an.
* Sobald man im Baugruppenmenü nun einen Eintrag anklickt, erscheinen 
entweder die darin enthaltenen Teile, oder aber wenn diese Baugruppe 
noch Unterbaugruppen besitzt, dann erscheint die Übersichtsseite, welche 
dann die darin enthaltenen Unterbaugruppen auflistet.

Verstehst du wie ich das meine? Eventuell könnte man auch die Seite für 
die Baugruppenübersicht und die Seite zum Bearbeiten der Baugruppen 
(devmgr) als eine Seite Zusammenfassen.

Was meinst du dazu?

von Guido R. (gvidas)


Lesenswert?

Dennis L. schrieb:
> @Guido,
>
> dein Fehler deutet darauf hin das deine Tabellen nicht mit dem gleichen
> Ausgangszustand angefangen haben wie die Versionierung. Gehe in
> part_device und setzte part_id als primary key und öffne part-db neu.
> Dann müsste es gehen.
>
>
> Gruß Dennis

Danke!
Das war's gewesen!


Zu den Baugruppen:

Jetzt mal ganz ober Krass wären noch Daten für die Baugruppe. So was wie 
Schaltpläne, Anleitungen. Ein Foto für die Baugruppe wäre auch noch 
nice!

von Ansgard (Gast)


Lesenswert?

Hallo,

schön wäre auch die Spalte Datenblätter in der Baugruppenansicht zu 
haben. Das würde den Aufbau bzw. die Inbetriebnahme erleichtern, da man 
ja in dieser Ansicht alle benötigten Bauteile dieser Baugruppe hat.

Gruß Ansgard

PS.: könntet Ihr mir bitte erklären, wie ich eine eigene CSV Datei 
erstellen kann und wo ich sie einfügen muss (Etikettendruck mit 
Dymosoftware).

Danke

von Jürgen S. (jsachs)


Lesenswert?

Ich habe mal in SVN einen Anfang für die Konfig Seite eingebaut.
Zu erreichen unter "Verwaltung/Tools->Bearbeiten->partDB Konfiguration".

Das ist erst mal so, damit ich nicht immer den Änderungen "Hinterher 
Hinke" :-)

Ich überlege im Moment ob es nicht Sinn macht, im Fall eines benötigten 
Updates diese Seite, statt der Start Seite auf zu rufen. Der Benutzer 
würde Informiert und könnte Selbst entscheiden ob er weiter machen 
möchte.

Nur mal als Idee.

Gruss
Juergen

von Jürgen S. (jsachs)


Lesenswert?

Das Automatische Datenbank Update kann nun Ein und Ausgeschaltet werden.
Per Default ist es Ausgeschaltet.

Bei Problemen bitte kurzes Feedback...

Gruss
Juergen

von K. J. (Gast)


Lesenswert?

Hm kann des sein das du vergessen hat zu comitten ? die config.php ist 
da (funkt aber nicht) aber keine Änderung der nav.php ?

von Jürgen S. (jsachs)


Lesenswert?

Eben nochmal gechecked. ich habe alles commited.

Rev 297 https://part-db.googlecode.com/svn/trunk/

von b.r (Gast)


Lesenswert?

@k.j.
Bitte keine Commits ohne Message.

b

von b.r (Gast)


Lesenswert?

Ansgard schrieb:
> PS.: könntet Ihr mir bitte erklären, wie ich eine eigene CSV Datei
> erstellen kann und wo ich sie einfügen muss (Etikettendruck mit
> Dymosoftware).
Ein Beispiel für CSV-Export gibt es auf der Suchergebnisseite.
Wie muß denn das Format für Dymo aussehen?

b

von b.r (Gast)


Lesenswert?

Guido R. schrieb:
> Jetzt mal ganz ober Krass wären noch Daten für die Baugruppe. So was wie
> Schaltpläne, Anleitungen. Ein Foto für die Baugruppe wäre auch noch
> nice!
Es wäre sowieso zu überlegen, das man zu jedem Bauteil statt Bilder + 
Datenblattlinks sowas wie interne (png, jpg, gif, pdf) und externe 
Dokumente (Links) macht. Das wäre eine Funktionalität die sich auch für 
die Baugruppen verwenden läßt.

b

von b.r (Gast)


Lesenswert?

Guido R. schrieb:
>> - show tables;
>> - describe part_devices;
>
> Ich hab hier PHPMyAdmin...
> möchtest du, dass ich dir eine Liste der Tabellen gebe, sowie die
> Spalten der part_devices?
Ja, genau.
Du kannst die beiden SQL-Befehle auch über phpMyAdmin ausführen lassen.

Aber das Problem dürfte ja bei Dir schon behoben sein.

b

von b.r (Gast)


Lesenswert?

Jürgen Sachs schrieb:
> Die Update Routine erkennt das die Tabelle fehlt und legt diese
> selbstständig an.
> Außerdem sollte man NIE die Datenbankversion selbst setzen. Das setzen
> auf "4" ist wirklich fatal.
Jepp.

Die mitgelieferte readme/createtables-FOR-V0.2.1.sql ist für 
Neuinstallationen gedacht. Damit der Benutzer gleich eine komplett 
aktuelle Datenbank hat.

b

von Dennis L. (w124dennis)


Lesenswert?

b.r schrieb:
> Jepp.
>
> Die mitgelieferte readme/createtables-FOR-V0.2.1.sql ist für
> Neuinstallationen gedacht. Damit der Benutzer gleich eine komplett
> aktuelle Datenbank hat.
>
> b
Ok gut zu wissen.

von K. J. (Gast)


Lesenswert?

b.r schrieb:
> @k.j.
> Bitte keine Commits ohne Message.
>
> b

Jap Sorry war heute Morgen etwas Frustriert.

Aber ne andere Frage hab ne Exportfunktion für die suche gemacht fürs 
Dokuwiki das geht auch hervorragend hätte das gleiche gerne für, die 
Bauteileverwaltung blike da aber nicht durch.

von Ansgard (Gast)


Lesenswert?

Hallo

Danke für den Tip. Die benötigte CSV-Datei für Dymo-Label ist einfach 
durch Semikolions getrennt (Standart). Mir ging es darum, wie ich mir 
eine eigene CSV-Maske erstellen kann , in der ID; Name; Footprint; 
Lagerort; enthalten sind z.B. wie CSV Export CSV Reichelt oder CSV 
Farnell unter der Rubrik "zu bestellende Teile". Da ich die Namen meiner 
Lagerorte relativ kurz gehalten habe, würde ich gern auch die 
übergeordneten Lagerorte mit ausdrucken.

Beim testen ist mir aufgefallen, dass wenn man unter "zu bestellende 
Teile" man den einfachen CSV Export benutzt, der Footprint und nicht der 
Name ausgegeben wird.

Bei der Suche wäre es vielleicht nützlich, wenn man im Ergebnisfeld die 
Teile markieren könnte die Man als CSV oder XML Datei exportieren möchte

Vielen Dank

Gruß Ansgard

von Dennis L. (w124dennis)


Lesenswert?

Ansgard schrieb:
> Beim testen ist mir aufgefallen, dass wenn man unter "zu bestellende
> Teile" man den einfachen CSV Export benutzt, der Footprint und nicht der
> Name ausgegeben wird.
Hab ich schon gefixt aber noch nicht commited, werde ich heute Abend 
tun;)

von b.r (Gast)


Lesenswert?

K. J. schrieb:
> Jap Sorry war heute Morgen etwas Frustriert.
Programmieren soll doch Spaß machen :D

b

von b.r (Gast)


Lesenswert?

Urban B. schrieb:
> Baugruppen umfunktioniert, so dass sie jetzt auch
> hierarchisch eingeordnet werden können und ein Menü generiert wird.
Hab den Patch mal eingebaut: revision 310

Da sind sicher noch ein paar kleine Bugs drin, sieht aber schon mal 
nicht ganz schlecht aus.

b

von b.r (Gast)


Lesenswert?

@K. J.:
Vielleicht könntest Du in der Demo-Datenbank die SVN-Revisionsnummer 
hinterlegen. Entweder im Titel, oder über die Banner-Funktion auf der 
Startseite.

Grüße
b

von Gelöscht (kami89)


Lesenswert?

b.r schrieb:
> Urban B. schrieb:
>> Baugruppen umfunktioniert, so dass sie jetzt auch
>> hierarchisch eingeordnet werden können und ein Menü generiert wird.
> Hab den Patch mal eingebaut: revision 310
>
> Da sind sicher noch ein paar kleine Bugs drin, sieht aber schon mal
> nicht ganz schlecht aus.

Jo, sieht gut aus!

Jetzt könnte man noch folgendes machen:

In der "nav.php" die funktion "build_devices_tree" so umbauen, dass nur 
Baugruppen ohne Unterbaugruppen auf die Seite "devicesinfo.php" 
verlinken. Baugruppen, welche noch Unterbaugruppen enthalten, sollen auf 
die Seite "device.php" verlinken, mit einem Parameter für die device-ID.

In der "device.php" den SQL-Filter so abändern, dass nur noch Baugruppen 
angezeicht werden, deren Parent-ID der übergebenen ID entsprechen und 
keine weiteren Unterbaugruppen besitzen.

mfg

von K. J. (Gast)


Lesenswert?

b.r schrieb:
> @K. J.:
> Vielleicht könntest Du in der Demo-Datenbank die SVN-Revisionsnummer
> hinterlegen. Entweder im Titel, oder über die Banner-Funktion auf der
> Startseite.
>
> Grüße
> b

Grade Gemacht
1
echo "<?PHP" > /var/www/vhosts/grautier.com/subdomains/partdb/httpdocs/rev.php && \
2
svn --non-interactive checkout http://part-db.googlecode.com/svn/trunk/ /var/www/vhosts/grautier.com/subdomains/partdb/httpdocs/ \
3
|grep Revision | sed 's/Ausgecheckt, /$startup_title = "SVN: /g' >> /var/www/vhosts/grautier.com/subdomains/partdb/httpdocs/rev.php && \
4
echo "\"?>" >> /var/www/vhosts/grautier.com/subdomains/partdb/httpdocs/rev.php

Etwas gebastelt aber geht ;P

von b.r (Gast)


Lesenswert?

K. J. schrieb:
> Etwas gebastelt aber geht ;P
Sieht reichlich komplex aus :-)

Ich hatte an sowas gedacht:
1
    function version()
2
    {
3
        $filename = ".svn/entries";
4
        if(is_file($filename))
5
        {
6
            if($handle = fopen ($filename, "r"))
7
            {
8
                $zeile1 = fgets($handle, 4096);
9
                $zeile2 = fgets($handle, 4096);
10
                $zeile3 = fgets($handle, 4096);
11
                $subversion_version = fgets($handle, 4096);
12
                fclose($handle);
13
            }
14
            else
15
            {
16
                 die("Datei <b>".$filename."</b> konnte nicht geöffnet werden.");
17
            }
18
        }
19
        else
20
        {
21
            die("Datei <b>".$filename."</b> ist nicht vorhanden.");
22
        }
23
                
24
        $subversion_version = trim($subversion_version);
25
        
26
        return $subversion_version;
27
    }

b

von b.r (Gast)


Lesenswert?

Urban B. schrieb:
> In der "nav.php" die funktion "build_devices_tree" so umbauen, dass nur
> Baugruppen ohne Unterbaugruppen auf die Seite "devicesinfo.php"
> verlinken. Baugruppen, welche noch Unterbaugruppen enthalten, sollen auf
> die Seite "device.php" verlinken, mit einem Parameter für die device-ID.
Ist drin. Revision 314.

Grüße
b

von b.r (Gast)


Lesenswert?

@K. J.:
Da ist noch ein Bug im Navigationsmenü (rev 319). Datenbank erscheint 
unter Lieferanten und unter Config. Außerdem zeigt er jetzt gar keine 
Baugruppen mehr an.

Willst Du selber erstmal schauen?

b

von K. J. (Gast)


Lesenswert?

Jap mach mich grade dadran

EDIT: fertig allerdings hab ich ein anderes Problem dabei gefunden wen 
man eine Baugruppe herauslöscht funktioniert das ganze nicht mehr 
richtig.

von Gelöscht (kami89)


Lesenswert?

b.r schrieb:
> Urban B. schrieb:
>> In der "nav.php" die funktion "build_devices_tree" so umbauen, dass nur
>> Baugruppen ohne Unterbaugruppen auf die Seite "devicesinfo.php"
>> verlinken. Baugruppen, welche noch Unterbaugruppen enthalten, sollen auf
>> die Seite "device.php" verlinken, mit einem Parameter für die device-ID.
> Ist drin. Revision 314.
>
> Grüße
> b

Wunderbar, danke!

Jetzt wär noch schön wenn beim Kopieren einer Baugruppe auch gleich die 
Eigenschaft "parentnode" mitkopiert wird, damit diese Baugruppe auch 
gleich in der gleichen Baugruppenkategorie erscheint.

Und hat das ein Grund, dass es unter "Bearbeiten" -> "Baugruppen" noch 
ein Eintrag "Erstellen/Löschen" gibt? Erstellen und Löschen kann man ja 
auch direkt unter "Bearbeiten" -> "Baugruppen".

Ach ja, und was meint ihr, wäre auf der Startseite nicht vielleicht ein 
Link auf diesen Thread noch sinnvoll? Dann muss man nicht grossartig im 
Internet suchen wenn man eine Frage stellen oder Änderungen vorschlagen 
möchte.

mfg
Urban

von b.r (Gast)


Lesenswert?

Revision 330.

Urban B. schrieb:
> Ach ja, und was meint ihr, wäre auf der Startseite nicht vielleicht ein
> Link auf diesen Thread noch sinnvoll? Dann muss man nicht grossartig im
> Internet suchen wenn man eine Frage stellen oder Änderungen vorschlagen
> möchte.
Das geht an K.J.
Dafür würde sich das Banner in der config.php anbieten.

Grüße
b

von Gelöscht (kami89)


Angehängte Dateien:

Lesenswert?

Sehr schön.

Und nun schon die nächste Kleinigkeit. Auf der Seite "Teile ohne Preis" 
wären noch Spalten für den Lieferanten und die Bestellnummer 
wünschenswert, die braucht man ja um den Preis heraussuchen zu können.

Ich hab das mal selber gemacht, müsste man nur noch auf den SVN-Server 
laden.

mfg
Urban

EDIT: Iregdwas ist da noch nicht ganz korrekt merke ich gerade, Bei 
Teilen ohne Bestellnummer wird eine Null angezeigt in der Tabelle. Was 
fehlt da noch?

von Gelöscht (kami89)


Lesenswert?

Urban B. schrieb:
> EDIT: Iregdwas ist da noch nicht ganz korrekt merke ich gerade, Bei
> Teilen ohne Bestellnummer wird eine Null angezeigt in der Tabelle. Was
> fehlt da noch?

Hab nichts gesagt...Die Null war bei den Bauteilen auch als Null 
eingetragen ;-) Auf die Idee kam ich gar nicht, dachte grad ich hätte 
was falsch geändert in der nopriceparts.php, weil auf einer anderen 
Seite waren keine Nullen drin in dieser Spalte. War aber nur Zufall hab 
ich jetzt gemerkt :-)

Jetzt, wo ich grad noch Preise am komplettieren bin, fällt mir auf dass 
meine Bezugsquellen schon das ein oder andere Produkt aus dem Sortiment 
genommen haben. Da wäre es doch gut wenn man dem Bauteil auch eine 
Eigenschaft "nicht mehr erhältlich" zuweisen könnte.

Diese könnten dann folgende Eigenschaften haben:
- Sie werden auf den Seiten "Zu bestellende Bauteile" und "Teile ohne 
Preis" automatisch nicht mehr aufgeführt
- Sie bekommen eine neue Seite "Nicht mehr erhältliche Teile"
- Sie werden überall dort, wo sie in einer Tabelle aufgelistet werden, 
mit einer rötlichen Farbe hinterlegt (oder sonstwie markiert), damit man 
sofort sieht dass das Bauteil nicht mehr erhältlich ist. Vorallem bei 
Baugruppen wäre das von Vorteil, da man sieht dass dort für Ersatz 
gesorgt werden muss.

Gibt aber bestimmt eine Menge Arbeit...

von b.r (Gast)


Lesenswert?

Urban B. schrieb:
> Ich hab das mal selber gemacht, müsste man nur noch auf den SVN-Server
> laden.
Revision 334 ;-)

Grüße
b

von Guido R. (gvidas)


Lesenswert?

Ich hab jetzt so kleine Sorgen wie das nun mit den Footprints genau 
funktioniert. Da sind doch etliche Bilder hinterlegt. warum muss ich die 
dann alle einzelnd als footprints deklarieren?
Also ich meine, dass bei meiner noch recht frisch aufgesetzten part-db 
zwar unter footprints zig Bildchen sind aber in der Bearbeitung keiner 
drinne steht. Also das ist für mich etwas widersprüchlich.
Kann man das nicht automatisieren, dass man einmal neue Bilder uploaden 
kann und deren Dateiname dann als Footprintbezeichnung zur Verfügung 
steht, sowie bei der Eingabe neue Bauteile eine Möglichkeit hat dort 
(wenn man feststelle, dass man noch kein Bildchen hat) eins Uploaden 
kann?
Schön wäre es an dieser Stelle auch, wenn die Bilder beim Aufrufen eines 
Bauteils rechts zu sehen wären. Bisher erscheinen die Bilder ja 
anscheinend nur in der Übersicht. Hab dafür extra noch mal auf der 
Testseite nachgeschaut...

von b.r (Gast)


Lesenswert?

Guido R. schrieb:
> Also ich meine, dass bei meiner noch recht frisch aufgesetzten part-db
> zwar unter footprints zig Bildchen sind aber in der Bearbeitung keiner
> drinne steht. Also das ist für mich etwas widersprüchlich.
Das ist mir auch schon aufgefallen. Ich hab auch ich schon ein paar 
Ideen, wie man das verbessern könnte.

> Schön wäre es an dieser Stelle auch, wenn die Bilder beim Aufrufen eines
> Bauteils rechts zu sehen wären.
Ist notiert.

Grüße
b

von K. J. (Gast)


Lesenswert?

b.r schrieb:
> Guido R. schrieb:
>> Also ich meine, dass bei meiner noch recht frisch aufgesetzten part-db
>> zwar unter footprints zig Bildchen sind aber in der Bearbeitung keiner
>> drinne steht. Also das ist für mich etwas widersprüchlich.
> Das ist mir auch schon aufgefallen. Ich hab auch ich schon ein paar
> Ideen, wie man das verbessern könnte.
>
Hi das ist nicht drinnen wegen der Herstellerspezifischen Bezeichnungen, 
außerdem wehre des recht unübersichtlich wenn man mehr drinnen hat als 
man braucht da ist man ewig am suchen.

von Guido R. (gvidas)


Lesenswert?

K. J. schrieb:
> Hi das ist nicht drinnen wegen der Herstellerspezifischen Bezeichnungen,
> außerdem wehre des recht unübersichtlich wenn man mehr drinnen hat als
> man braucht da ist man ewig am suchen.

Einfach: Man lädt von Anfang an nur die rein die man effektiv Braucht
Erweitert: Man kann alles hinzufügen und alle so verwalten, dass man sie 
aktiv oder inaktiv setzen kann...

von K. J. (Gast)


Lesenswert?

b.r schrieb:
> Revision 330.
>
> Urban B. schrieb:
>> Ach ja, und was meint ihr, wäre auf der Startseite nicht vielleicht ein
>> Link auf diesen Thread noch sinnvoll? Dann muss man nicht grossartig im
>> Internet suchen wenn man eine Frage stellen oder Änderungen vorschlagen
>> möchte.
> Das geht an K.J.
> Dafür würde sich das Banner in der config.php anbieten.
>
> Grüße
> b

Ist drinnen auf der Hauptseite, hab nochmal die Updateintervalle der 
Test-DB erhöht die wird jetzt alle 6h upgedatet soviel wie momentan 
Passiert ist das sinnig.

Werde mich nochmal, ans Wiki, Footprints, label.php, und ne neue TEST-DB 
machen, bei den Rest hab ich irgendwie den überblick verloren muss mich 
da erst mal wieder einlesen.

mfg tb

von Gelöscht (kami89)


Angehängte Dateien:

Lesenswert?

Ja, das mit den Footprints hatte ich auch schon im Kopf, dass man da 
noch was ändern sollte.

Aber ich hatte auch schon lange eine andere Idee, die ich schon ein 
paarmal hätte brauchen können. Und zwar habe ich eigentlich zwei 
Lieferanten bei denen ich mein Zeug jeweils bestelle. Jetzt gibts 
natürlich sehr viele Teile, die bei beiden Lieferanten erhältlich sind, 
und es gibt Teile die nur einer der beiden Lieferanten hat.

So, und wenn ich jetzt dem Bauteil 1N4007 den Lieferanten A zugewiesen 
habe und einem exotischen Bauteil den Lieferant B (weil nur B dieses 
Teil im Sortiment hat), dann werden mir auf der Seite "Zu bestellende 
Teile" zwei verschiedene Lieferanten angezeigt, obwohl eigentlich eine 
Bestellung bei Lieferant B genügen würde (der hat natürlich auch 1N4007 
im Sortiment).

Bei zwei zu bestellenden Teilen ist das ja kein Problem, aber wenn da 
über 20 Teile in der Liste sind, ist das kaum mehr überschaubar.

Daher wäre es optimal wenn man jedem Bauteil mehrere Lieferanten und die 
dazugehörigen Bestellnummern und Preise eintragen könnte. Schön wäre 
natürlich wenn das ganze dynamisch ist, also die Anzahl der Lieferanten 
nicht beschränkt ist. Damit es beim Ausrechnen von Gesamtpreisen usw. 
kein Durcheinander gibt, könnte man das ja gleich machen wie bei den 
Bildern, so dass man halt ein "Master-Lieferant" wählt und nur mit 
diesem Preis wird dann auch gerechnet. Oder man nimmt den Durchschnitt 
aller Preise, ist aber nicht zwingend nötig.

Wie das in der Tabelle "Zu bestellende Preise" aussehen könnte seht ihr 
im Anhang. Ich fände das total geil wenn das so möglich wäre, da sieht 
man dann sofort dass man das Teil bei Lieferant A wie auch bei B 
bestellen könnte. Zusätzlich wär dann aber noch eine Spalte mit den 
Preisen interessant, dann kann man auch gleich noch vergleichen welcher 
Lieferant wieviel günstiger ist.

Mir ist klar dass das ein enormer Aufwand bedeutet. Aber würdet ihr 
diese Funktion nicht auch als äusserst nützlich betrachten?

mfg

von b.r (Gast)


Lesenswert?

K. J. schrieb:
> Ist drinnen auf der Hauptseite
Warum hast Du das nicht in die config.php[_template] (-->Banner) 
reingemacht?
Da könnte es sich jeder individuell editieren...

Grüße
b

von b.r (Gast)


Lesenswert?

Urban B. schrieb:
> optimal wenn man jedem Bauteil mehrere Lieferanten und die
> dazugehörigen Bestellnummern und Preise eintragen könnte
Ich werd's mal notieren. Eine solche Funktionalität ann nicht schaden.
Bei der Gelegenheit könnte auch gleich die Preistabelle mal aufgeräumt 
werden. Das sieht irgendwie komisch aus.

Grüße
b

von Guido R. (gvidas)


Lesenswert?

Gibt's eigentlich irgendwo ein Button um zur Startseite zurück zu 
kehren?

von b.r (Gast)


Lesenswert?

Guido R. schrieb:
> Gibt's eigentlich irgendwo ein Button um zur Startseite zurück zu
> kehren?
Nein. Ich drück immer F5 oder reload.

Grüße
b

von b.r (Gast)


Lesenswert?

K. J. schrieb:
> hab nochmal die Updateintervalle der
> Test-DB erhöht die wird jetzt alle 6h upgedatet
Kannst Du nicht nachschauen, ob was commited wurde und damit das Update 
anstossen?

Grüße
b

von Guido R. (gvidas)


Lesenswert?

b.r schrieb:
> Guido R. schrieb:
>> Gibt's eigentlich irgendwo ein Button um zur Startseite zurück zu
>> kehren?
> Nein. Ich drück immer F5 oder reload.
>
> Grüße
> b

Wäre dann sicherlich einfacher mit nem Button. bestimmt nicht die mega 
Arbeit. Könnte man ja bei Wunsch auf die endlos lange To-Do Liste 
schreiben

von b.r (Gast)


Lesenswert?

Guido R. schrieb:
> Wäre dann sicherlich einfacher mit nem Button. bestimmt nicht die mega
> Arbeit.
Ich weiß zwar nicht, was Du auf der Startseite willst, aber der Button 
ist drin (Revision 341).
Ich finde auf der Startseite keine Informationen, die für die tägliche 
Arbeit mit part-db relevant wären.

Grüße
b

von Guido R. (gvidas)


Lesenswert?

Vielen Dank!

Heute ist es aber verdammt ruhig hier... :-)

von Jürgen S. (jsachs)


Lesenswert?

Urban B. schrieb:
> Aber ich hatte auch schon lange eine andere Idee, die ich schon ein
> paarmal hätte brauchen können. Und zwar habe ich eigentlich zwei
> Lieferanten bei denen ich mein Zeug jeweils bestelle. Jetzt gibts
> natürlich sehr viele Teile, die bei beiden Lieferanten erhältlich sind,
> und es gibt Teile die nur einer der beiden Lieferanten hat.
>
> So, und wenn ich jetzt dem Bauteil 1N4007 den Lieferanten A zugewiesen
> habe und einem exotischen Bauteil den Lieferant B (weil nur B dieses
> Teil im Sortiment hat), dann werden mir auf der Seite "Zu bestellende
> Teile" zwei verschiedene Lieferanten angezeigt, obwohl eigentlich eine
> Bestellung bei Lieferant B genügen würde (der hat natürlich auch 1N4007
> im Sortiment).
>
> Bei zwei zu bestellenden Teilen ist das ja kein Problem, aber wenn da
> über 20 Teile in der Liste sind, ist das kaum mehr überschaubar.
>
> Daher wäre es optimal wenn man jedem Bauteil mehrere Lieferanten und die
> dazugehörigen Bestellnummern und Preise eintragen könnte. Schön wäre
> natürlich wenn das ganze dynamisch ist, also die Anzahl der Lieferanten
> nicht beschränkt ist. Damit es beim Ausrechnen von Gesamtpreisen usw.
> kein Durcheinander gibt, könnte man das ja gleich machen wie bei den
> Bildern, so dass man halt ein "Master-Lieferant" wählt und nur mit
> diesem Preis wird dann auch gerechnet. Oder man nimmt den Durchschnitt
> aller Preise, ist aber nicht zwingend nötig.
Daran habe ich auch schon gedacht. Aber das ist ein erheblicher Aufwand.
Vor allem wird das Verwalten dadurch komplizierter.
Man muss ja erst ein Bauteil Anlegen und dann die Bezugsquellen 
eintragen.

Aber wäre echt supper...

Gruss
Juergen

von Dennis L. (w124dennis)


Lesenswert?

Guido R. schrieb:
> Heute ist es aber verdammt ruhig hier... :-)

Alle am Fasnacht feiern ;)

von Dennis L. (w124dennis)


Lesenswert?

Hallo zusammen,
habe mal den Link zur Baugruppen Übersicht wieder in den Baum 
hinzugefügt. Bei mir wurde der nämlich nicht angezeigt.

Dennis

von b.r (Gast)


Lesenswert?

Dennis L. schrieb:
> hinzugefügt. Bei mir wurde der nämlich nicht angezeigt.
Hmm. Dafür fehlt jetzt wieder die Kategorisierung:
1
@@ -41,7 +42,7 @@
2
                 $count_row    = mysql_fetch_array( $count_result);
3
                 $count        = $count_row['count'];
4
                 
5
-                $target_url = ($count > 0) ? "','device.php?deviceid=" : "','deviceinfo.php?deviceid=";
6
+                $target_url = "','deviceinfo.php?deviceid=";
7
                 print "dev_tree.add(". smart_unescape( $d['id']) .",". 
8
                     smart_unescape( $pid) .",'".
9
                     smart_unescape( $d['name']).
War das Absicht?

Grüße
b

von Dennis L. (w124dennis)


Angehängte Dateien:

Lesenswert?

b.r schrieb:
> Hmm. Dafür fehlt jetzt wieder die Kategorisierung:

Hm also bei mir nicht, siehe Anhang.
Für was sollte denn die device.php die deviceid brauchen??
Oder hab ich da was falsch verstanden???

Gruß Dennis

von b.r (Gast)


Lesenswert?

Dennis L. schrieb:
>> Hmm. Dafür fehlt jetzt wieder die Kategorisierung:
>
> Hm also bei mir nicht, siehe Anhang.
> Für was sollte denn die device.php die deviceid brauchen??
> Oder hab ich da was falsch verstanden???
Ja.

Ich zitiere mal:

Urban B. schrieb:
> Jetzt könnte man noch folgendes machen:
>
> In der "nav.php" die funktion "build_devices_tree" so umbauen, dass nur
> Baugruppen ohne Unterbaugruppen auf die Seite "devicesinfo.php"
> verlinken. Baugruppen, welche noch Unterbaugruppen enthalten, sollen auf
> die Seite "device.php" verlinken, mit einem Parameter für die device-ID.
>
> In der "device.php" den SQL-Filter so abändern, dass nur noch Baugruppen
> angezeicht werden, deren Parent-ID der übergebenen ID entsprechen und
> keine weiteren Unterbaugruppen besitzen.

Grüße
b.

von b.r (Gast)


Lesenswert?

Schweigen bedeuted Zustimmung. Ich bau das mal wieder ein.

Grüße
b.

von Dennis L. (w124dennis)


Lesenswert?

b.r schrieb:
> Schweigen bedeuted Zustimmung. Ich bau das mal wieder ein.
>
> Grüße
> b.

Ja ;) Wollte es gestern machen  aber ... wie es halt so ist;)

Edit: aber bitte den link zur Gesamtübersicht drin lassen;)

von b.r (Gast)


Lesenswert?

Dennis L. schrieb:
> Edit: aber bitte den link zur Gesamtübersicht drin lassen;)
Jepp :-)

Grüße
b

von sandboxgangster (Gast)


Angehängte Dateien:

Lesenswert?

Hab mal angefangen einen kleinhelper für die näste Inventur Zu machen .

von Peter Sch. (Gast)


Lesenswert?

Hi,

hab gerade den aktuellen Release Kandidaten Part-DB-0.2.0RC1 
runtergeladen und nach Beschreibung im Wiki installiert. Leider bekomme 
ich beim Aufruf immer nur die Meldung: MySQL-Fehler: Keine Datenbank 
ausgewählt
Allerdings ist die Datenbank angelegt (sagt zumindest phpMyAdmin, 11 
Tables und der Name ist part-db)
Nachdem ich den User part-db ohne Password angelegt habe und das in 
config.php hinterlegte Password gelöscht habe ($db_password = "";) sind 
alle Fehlermeldungen, außer der oben beschriebenen weg...aber gehen tuts 
halt nicht. Könnte ich etwas übersehen haben?

Gruß
Peter

von b.r (Gast)


Lesenswert?

Peter Sch. schrieb:
> Nachdem ich den User part-db ohne Password angelegt habe und das in
> config.php hinterlegte Password gelöscht habe ($db_password = "";) sind
> alle Fehlermeldungen, außer der oben beschriebenen weg...aber gehen tuts
> halt nicht. Könnte ich etwas übersehen haben?
Kannst Du Dich denn manuell mit der Datenbank verbinden?
1
mysql -u part-db -pPARTdb part-db
2
3
show tables;

> aktuellen Release Kandidaten Part-DB-0.2.0RC1
> runtergeladen und nach Beschreibung im Wiki installiert
Ist bei schon dir config.php_template vorhanden?

Viele Grüße
b.r

von Guido R. (gvidas)


Lesenswert?

Hi

Was ist denn mit den Datei und Bilderanhängen in den Baugruppen 
geworden?
Wird sich da noch was tun?

Viele Grüße

von Peter Sch. (Gast)


Lesenswert?

Hi,
nu geht's. Aber ich weiß nicht wirklich, wo das Problem lag. Manuelles 
Verbinden ging nicht. Auch nach 'weglassen' des Passwortes nicht. Ich 
habe dann mehrfach den User neu angelegt und unterschiedliche Versionen 
(local, 127.0.0.1, mit Password ohne Password) probiert. Letztlich bin 
ich dann bei der local/mit Password Version fündig geworden, aber auch 
erst im 3. Anlauf. Scheint mit den Fingern heute nicht so gut zu 
klappen.

Danke für die Hilfe.

Gruß
Peter

von Peter Sch. (Gast)


Lesenswert?

Hi,

da es nun funktioniert und ich etwas runexperimentiert habe, habe ich 
gleich mal einen Verbesserungsvorschlag (natürlich ohne meckern zu 
wollen:-).

Wenn ich eine neue Kategorie anlege, wird die standardmäßig gegen die 
'root node' angelegt. Ich würde es als angenehmer empfinden, wenn ich 
jeweils die letzte Verwendete Kategorie vorgegeben bekäme, den Cursor im 
Kategoriennamen Eingabefeld und nach 'Enter' auch mit dem Cursor dort 
wieder lande.

Ähnliches für Lagerorte. Nach Eingabe des Namens, 'Enter' und einem 
wiedereinstellen des Cursors im Namenfeld, könnte man sofort den 
nächsten Lagerort eingeben. Geleiches trifft die Lieferanten und die 
Footprints.

Beim Eingeben eines Bauteils ist der Name scheinbar abhanden gekommen. 
Der Eintrag erscheint zwar in der Liste, kann ihn aber nicht zum 
Bearbeiten auswählen. Und wenn ich das richtig sehe, kann ich ein 
Bauteil nur in der Bearbeitungsansicht löschen...keine Bearbeitung, kein 
Löschen, oder?

Gruß
Peter

von Peter Sch. (Gast)


Lesenswert?

Hi,

noch ein Nachtrag:

Nach anlegen einer Baugruppe erscheint unter Zugeordneten Teilen die 
Meldung:

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL 
result resource in /var/www/htdocs/part-db/deviceinfo.php on line 272

Und ich bekomme auch keine Teile zugeordnet.

Gruß
Peter

von Ansgard (Gast)


Lesenswert?

Hi,

könntet Ihr mir Bitte erklären, warum das mit den Datenblättern nicht 
funktioniert. Ich habe den Eintrag unter Datenbätter gemacht und nichts 
passiert. Wenn ich aber den gleichen String in die Eingabezeile eingebe, 
funktioniert der Verweis und das Datenblatt wird im Firefox geöffnet.

Gruß Ansgard

von Peter Sch. (Gast)


Lesenswert?

Und nochwas für die ToDo Liste: Lagerort Serien erstellen sollte mit 
führenden Nullen gehen. z.B. Kiste-01 bis 11 sonst ist die Reihenfolge 
in der Auflistung Kiste-1, Kiste-10, Kiste-11, Kiste-2 usw. Nicht 
schlimm, aber unschön.

Gruß
Peter

von Peter Sch. (Gast)


Lesenswert?

Hi,
woran könnte es liegen, daß Umlaute als schwarze Raute mit 7 oder 
Fragezeichen drinn, dargestellt werden?
Gruß
Peter

von b.r (Gast)


Lesenswert?

Peter Sch. schrieb:
> Wenn ich eine neue Kategorie anlege, wird die standardmäßig gegen die
> 'root node' angelegt. Ich würde es als angenehmer empfinden, wenn ich
> jeweils die letzte Verwendete Kategorie vorgegeben bekäme, den Cursor im
> Kategoriennamen Eingabefeld und nach 'Enter' auch mit dem Cursor dort
> wieder lande.
>
> Ähnliches für Lagerorte. Nach Eingabe des Namens, 'Enter' und einem
> wiedereinstellen des Cursors im Namenfeld, könnte man sofort den
> nächsten Lagerort eingeben. Geleiches trifft die Lieferanten und die
> Footprints.
Wird geprüft ;-)

> Beim Eingeben eines Bauteils ist der Name scheinbar abhanden gekommen.
> Der Eintrag erscheint zwar in der Liste, kann ihn aber nicht zum
> Bearbeiten auswählen. Und wenn ich das richtig sehe, kann ich ein
> Bauteil nur in der Bearbeitungsansicht löschen...keine Bearbeitung, kein
> Löschen, oder?
Nimm mal die aktuelle Version aus dem SVN-Repository. Da ist der Fehler 
behoben. Vielleicht macht "The Borg" auch mal wieder einen aktuellen 
RC?!

Grüße
b.r

von b.r (Gast)


Lesenswert?

Guido R. schrieb:
> Was ist denn mit den Datei und Bilderanhängen in den Baugruppen
> geworden?
> Wird sich da noch was tun?
Ich denke schon. Geplant ist die Bilderänhänge zu Dokumentanhängen 
umzufunktionieren.

Grüße
b.r

von b.r (Gast)


Lesenswert?

Ansgard schrieb:
> könntet Ihr mir Bitte erklären, warum das mit den Datenblättern nicht
> funktioniert. Ich habe den Eintrag unter Datenbätter gemacht und nichts
> passiert. Wenn ich aber den gleichen String in die Eingabezeile eingebe,
> funktioniert der Verweis und das Datenblatt wird im Firefox geöffnet.
Kannst Du genau erklären, was Du gemacht hast, und was Du erwartest?
Außerdem wäre es hilfreich zu wissen, welchen Browser Du einsetzt und 
auf welchem Betriebssystem das Ganze läuft.

Grüße
b.r

von b.r (Gast)


Lesenswert?

Peter Sch. schrieb:
> woran könnte es liegen, daß Umlaute als schwarze Raute mit 7 oder
> Fragezeichen drinn, dargestellt werden?
Was ist als $http_charset in Deiner config.php eingetragen?

Grüße
b.r

von b.r (Gast)


Lesenswert?

Peter Sch. schrieb:
> Und nochwas für die ToDo Liste: Lagerort Serien erstellen sollte mit
> führenden Nullen gehen. z.B. Kiste-01 bis 11 sonst ist die Reihenfolge
> in der Auflistung Kiste-1, Kiste-10, Kiste-11, Kiste-2 usw. Nicht
> schlimm, aber unschön.
Ist drin. SVN-Revision: 376

Wer will kann die Serien jetzt auch mit Buchstaben anlegen: Ort_A bis 
Ort_Z

Grüße
b.r

von Gelöscht (kami89)


Lesenswert?

b.r schrieb:
> Guido R. schrieb:
>> Was ist denn mit den Datei und Bilderanhängen in den Baugruppen
>> geworden?
>> Wird sich da noch was tun?
> Ich denke schon. Geplant ist die Bilderänhänge zu Dokumentanhängen
> umzufunktionieren.
>
> Grüße
> b.r

Könnte man das dann aber vielleicht so machen, dass die Dateien auf dem 
Server die gleichen Dateinamen enthalten wie die ursprüngliche Datei? 
Bei den Bildern ist das jetzt ja nicht so. Ich fände es halt gut wenn 
man die Dateien auch auf dem Server mal durchstöbern kann, und da wirken 
die kryptischen Dateinamen etwas verwirrend.

Und ein direkt-Upload von Internetadressen wäre noch cool. Also dass ich 
z.B. eine URL von einem Bild eingeben kann, und das Bild dann 
automatisch auf dem Server abgespeichert wird. Da wäre dann aber eine 
automatische Bildanpassung (grosse Bilder verkleinern, evtl in anderes 
Format konvertieren) sehr komfortabel. Ich vermute mal, sowas sollte es 
doch schon als mehr oder weniger fertige PHP Skripte geben, oder täusche 
ich mich da?

Bei dieser Art von Hochladen wäre dann ein separates Eingabefeld für den 
Dateinamen der Zieldatei noch von Vorteil, weil solche Internetbilder 
häufig ja auch keine aussagekräftigen Dateinamen haben.

mfg

von Peter Sch. (Gast)


Lesenswert?

b.r schrieb:
> Peter Sch. schrieb:
>> woran könnte es liegen, daß Umlaute als schwarze Raute mit 7 oder
>> Fragezeichen drinn, dargestellt werden?
> Was ist als $http_charset in Deiner config.php eingetragen?
>
Ich gehe mal davon aus, dass du die config.php der part-db meinst...da 
kommt die Variable $http_charset nicht drin vor.

> Grüße
> b.r
Gruß
Peter

von Peter Sch. (Gast)


Lesenswert?

Hi,

Ich hab gerade das SVN eingespielt und folgende Probleme gehabt bzw 
gefunden:

Zwischen dem SVN und dem RC hat sich scheinbar das Datenbankformat 
geändert. Ich habe also die Datenbank per createtables-FOR-V0.2.1.sql 
neu erstellt. Der Inhalt war dann weg, aber es waren sowieso nur 
Spieldaten drin. Für die Zukunft würde mich aber schon interessieren, 
wie ich die Daten sichern kann, um sie anschließend auch zurückspielen 
zu können (Bitte daran denken, daß ich nicht wirklich Ahnung von 
Datenbanken habe:-).

Dann hab ich das Erzeugen von Lagerplätzen 01-11 ausprobiert... 
funktioniert auch. Nur das Löschen nicht. Wenn ich 1-5 angelegt habe und 
3 lösche, habe ich anschließend die 4 zweimal, aber die Liste wird nicht 
kürzer. Scheinbar ist das aber nur der Fall, wenn die Lagerorte an der 
Rootnode hängen.

Gruß
Peter

von Peter Sch. (Gast)


Lesenswert?

Hi,

getestet mit SVN Version 383

Bei Auswahl von Tools/Import erhalte ich:

Parse error: syntax error, unexpected T_VARIABLE in 
/var/www/htdocs/part-db/import.php on line 307

Das Phänomen der falsch angezeigten Umlaute finde ich nicht überall. Im 
Hauptmenu wird die Übersicht unter Baugruppen falsch angezeigt, Genauso 
wie die Überschriften und Texte in dieser Übersicht.

Auf der Seite 'zu bestellende Teile' werden alle Umlaute richtig 
angezeigt, außer dem ü auf der Bauteile exportieren 'ausführen' Taste.

Gruß
Peter

von Peter Sch. (Gast)


Lesenswert?

Aber das Löschen der Lagerort scheint jetzt zu funktionieren...danke
Peter

von K. J. (Gast)


Lesenswert?

Peter Sch. schrieb:
> Zwischen dem SVN und dem RC hat sich scheinbar das Datenbankformat
> geändert. Ich habe also die Datenbank per createtables-FOR-V0.2.1.sql
> neu erstellt.

hättest nicht machen brauchen, die Part-DB besitzt einen DB Updater, das 
einzige was manchmal Probleme machen kann ist nen Downgrade von SVN -> 
RC, andersherum ist das Problemlos wen man nicht eine ganz alte Ver. 
nutzt.





Hab die mobil Ver. mit in die Testdatenbank gepackt, allerdinks ist sie 
noch nicht mal ansatzweise brauchbar.

Direktlink: http://partdb.grautier.com/mobil/mobil.php
Oder per Smartfone: http://partdb.grautier.com/ aufrufen.

von b.r (Gast)


Lesenswert?

Peter Sch. schrieb:
> Zwischen dem SVN und dem RC hat sich scheinbar das Datenbankformat
> geändert. Ich habe also die Datenbank per createtables-FOR-V0.2.1.sql
> neu erstellt. Der Inhalt war dann weg, aber es waren sowieso nur
> Spieldaten drin. Für die Zukunft würde mich aber schon interessieren,
> wie ich die Daten sichern kann, um sie anschließend auch zurückspielen
> zu können (Bitte daran denken, daß ich nicht wirklich Ahnung von
> Datenbanken habe:-).
Die Datenbank kann automatisch aktualisiert werden (siehe: Konfiguration 
-> Datenbank). Das sollte mit etwas Erfahrung der Entwickler problemlos 
für die Daten sein.

> Dann hab ich das Erzeugen von Lagerplätzen 01-11 ausprobiert...
> funktioniert auch. Nur das Löschen nicht. Wenn ich 1-5 angelegt habe und
> 3 lösche, habe ich anschließend die 4 zweimal, aber die Liste wird nicht
> kürzer. Scheinbar ist das aber nur der Fall, wenn die Lagerorte an der
> Rootnode hängen.
Das Problem konnte ich nicht nachvollziehen. Evtl. war durch einen 
Fehler Deine Datenbank inkonsistent.

Grüße
b.r

von b.r (Gast)


Lesenswert?

Peter Sch. schrieb:
> Bei Auswahl von Tools/Import erhalte ich:
>
> Parse error: syntax error, unexpected T_VARIABLE in
> /var/www/htdocs/part-db/import.php on line 307
Danke für's finden. Ist in Revision 384 gefixt.

Für sowas wären automatisierte Tests ganz gut. Kennt sich damit jemand 
aus?

> Das Phänomen der falsch angezeigten Umlaute finde ich nicht überall. Im
> Hauptmenu wird die Übersicht unter Baugruppen falsch angezeigt, Genauso
> wie die Überschriften und Texte in dieser Übersicht.
>
> Auf der Seite 'zu bestellende Teile' werden alle Umlaute richtig
> angezeigt, außer dem ü auf der Bauteile exportieren 'ausführen' Taste.
Dann schau mal in der config.php_template, wie man $http_charset 
einstellen kann.
Du kannst auch mal einen Screenshot von "Konfiguration -> System" hier 
einstellen.

Grüße
b.r

von Peter Sch. (Gast)


Lesenswert?

Hi,

könnte es sein, daß in orderparts.php in Zeile 157 statt

            print "<tr>\n".
                "<td><input type=\"submit\" 
value=\"AusfXhren\"/></td>\n".
                "</tr>\n";

doch besser

            print "<tr>\n".
                "<td><input type=\"submit\" 
value=\"Ausf&uuml;hren\"/></td>\n".
                "</tr>\n";

stehen müßte?

&uuml; in nav.php Zeile 88
&auml; in device.php Zeile 67, 70, 83, 100
&ouml;                     113, 133

Gruß
Peter

von Peter Sch. (Gast)


Lesenswert?

Prompte Bedienung. Danke.
Peter

von Peter Sch. (Gast)


Lesenswert?

Hi,

derzeit forsche ich, warum das menugestützte Backup der Datenbank auf 
meinem System mit allen Datenbanken funktioniert, nur mit der part-db 
nicht (Fehlermeldung: /usr/local/mysql/bin/mysqlcheck: Got error: 1049: 
Unbekannte Datenbank 'part@002ddb' when selecting the database).

Bisher habe ich herausgefunden, dass die Menuanzeige eine Datenbank mit 
Namen part@002ddb anzeigt, phpMyAdmin aber mit dem Namen part-db. Kann 
es sein, dass da im Namen Sonderzeichen versteckt sind?

Laufendes System ist ein EIS2 (www.eisfair.org).

Gruß
Peter

von Peter Sch. (Gast)


Lesenswert?

Hi,
Problem geklärt. Der - ist es. Der scheint an unterschiedlichen Stellen 
unterschiedlich dargestellt zu werden. Hab die Datenbank per 'partdb' 
angelegt und alles funktioniert fein.

Gruß
Peter

von Peter Sch. (Gast)


Lesenswert?

Hi,
hab doch ein Problem gefunden. Unter bearbeiten/Footprints und 
bearbeiten/Baugruppen kann ich nur den übergeordneten Footprint oder die 
Baugruppe auswählen (was aber immer nur die Rootnode ist), kann aber 
keine neuen anlegen. Ich bin mir nicht sicher, aber sollten die 
Footprints da nicht schon alle zu finden sein?

Gruß
Peter

von Peter Sch. (Gast)


Lesenswert?

Vorschlag für die ToDo Liste:
wenn in der CSV Datei neue Footprints, Kategorien, Lagerorte oder 
Lieferanten auftauchen, könnten die in die entsprechende Liste z.B. 
unter einem Oberbegriff 'NEUE' aufgenommen werden, um sie dann 
anschließend sinnvoll einzuordnen oder zu modifizieren.

Gruß
Peter

von Peter Sch. (Gast)


Lesenswert?

Hi,
nehme alles zurück...hatte die neu angelegte Datenbank noch nicht auf 
Version 7 upgedated...daher kam das.

> hab doch ein Problem gefunden. Unter bearbeiten/Footprints und
> bearbeiten/Baugruppen kann ich nur den übergeordneten Footprint oder die
> Baugruppe auswählen (was aber immer nur die Rootnode ist), kann aber
> keine neuen anlegen. Ich bin mir nicht sicher, aber sollten die
> Footprints da nicht schon alle zu finden sein?

Gruß
Peter

von JSachs (Gast)


Lesenswert?

Das mit dem Backup ist nicht so einfach!
Ein Problem ist, das ein PHP Script nur ein begrenzte Zeit auf dem 
Server läuft und dann abgebrochen wird.
Es gibt eine gute Lösung die man einbindnen könnte. Nennt sich glaub ich 
mysqlbackup.

Das Rad nochmal zu erfinden für eine intgrierte Lösung lohnt sich 
vermutlich nicht.

Gruss
JSachs

von b.r (Gast)


Lesenswert?

Peter Sch. schrieb:
> wenn in der CSV Datei neue Footprints, Kategorien, Lagerorte oder
> Lieferanten auftauchen, könnten die in die entsprechende Liste z.B.
> unter einem Oberbegriff 'NEUE' aufgenommen werden, um sie dann
> anschließend sinnvoll einzuordnen oder zu modifizieren.
Danke für den Vorschlag. Ist drin --> Revision 388.

Grüße
b.r

von Peter Sch. (Gast)


Lesenswert?

Hi,

mal davon abgesehen, dass ich die Footprintverwaltung noch nicht richtig 
verstanden habe ('alle' Bilder sind drinn, aber wenn ich sie benutzten 
will, muß ich unter Footprints bearbeiten einen Eintrag mit einem Namen 
anlegen, der dem Bildnamen entspricht, um dieses Bild einem Bauteil 
zuordnen zu können?), habe ich einen Schönheitsfehler entdeckt.

Beispiel:
Angelegt einen Footprint DIP8 und einen DIP14
Sortierung ist unpassend...weil DIP8 hinter DIP14
Umbenennnen DIP8, Eingabe in Feld 'Neuer Name' DIP08, Enter
Und weg ist er. Die Löschtaste hat keine Sicherheitsabfrage und wird bei 
Enter gedrückt.
Kann das nicht so gemacht werden, dass bei einer Eingabe in das 'Neuer 
Name' Feld automatisch mit Enter die Umbenennen Taste gedrückt wird?

Gruß
Peter

von Peter Sch. (Gast)


Lesenswert?

Hi,

und noch einen:

Wenn kein Footprint ausgewählt ist und die Löschtaste gedrückt wird, 
kommt:
Fehler in der SQL-Syntax. Bitte die korrekte Syntax im Handbuch 
nachschlagen bei 'WHERE parentnode=''' in Zeile 1

Gruß
Peter

von b.r (Gast)


Lesenswert?

Peter Sch. schrieb:
> Wenn kein Footprint ausgewählt ist und die Löschtaste gedrückt wird,
> kommt:
> Fehler in der SQL-Syntax. Bitte die korrekte Syntax im Handbuch
> nachschlagen bei 'WHERE parentnode=''' in Zeile 1
Danke für's Testen. Gefixt. Revision 389.

Den Rest muß ich erstmal schauen.

Grüße
b.r

von b.r (Gast)


Lesenswert?

Peter Sch. schrieb:
> mal davon abgesehen, dass ich die Footprintverwaltung noch nicht richtig
> verstanden habe ('alle' Bilder sind drinn, aber wenn ich sie benutzten
> will, muß ich unter Footprints bearbeiten einen Eintrag mit einem Namen
> anlegen, der dem Bildnamen entspricht, um dieses Bild einem Bauteil
> zuordnen zu können?), habe ich einen Schönheitsfehler entdeckt.
Jepp. Die Bilder sind nur Vorschläge. Aber Du kannst sie jetzt (Revision 
390) per Klick hinzufügen bzw. löschen.

Grüße
b.r

von b.r (Gast)


Lesenswert?

Peter Sch. schrieb:
> Und weg ist er. Die Löschtaste hat keine Sicherheitsabfrage und wird bei
> Enter gedrückt.
> Kann das nicht so gemacht werden, dass bei einer Eingabe in das 'Neuer
> Name' Feld automatisch mit Enter die Umbenennen Taste gedrückt wird?
Wenn man mit der Maus auf Umbennenen klickt geht das.

Schau Dir mal an, ob das in Revision 391 so ok ist (Footprints).
Wenn ja, würde ich die anderen Bearbeiten-Dialoge auch anpassen.

Grüße
b.r

von Peter Sch. (Gast)


Lesenswert?

Hi,
Vorschlag für die ToDo Liste: Roter Hinweis auf der Startseite, wenn 
(nach einem Update) die Datenbankversion nicht aktuell ist und per 
Configseite upgedated werden muß... oder gleich eine Umleitung 
dahin...oder automatisch das Angebot, dass zu tun

Gruß
Peter

von Peter Sch. (Gast)


Lesenswert?

Hi,

getestet, aber...

Wenn ich auf die Löschtaste drücke wird gelöscht. Ist ja im Prinzip auch 
so richtig, aber es gibt keine Sicherheitsabfrage (wie an anderen 
Stellen).

Würde es nicht Sinn machen, gleich das Beibehalten der übergeordneten 
Kategorie beim mehrfachen Neuanlegen mit einzubauen? Das vereinfacht die 
Eingabe von Hierarchien doch sehr.

Ansonsten vielen Dank für den 'tollen Service':-)

Gruß
Peter

von b.r (Gast)


Lesenswert?

Peter Sch. schrieb:
> Wenn ich auf die Löschtaste drücke wird gelöscht. Ist ja im Prinzip auch
> so richtig, aber es gibt keine Sicherheitsabfrage (wie an anderen
> Stellen).
Mich nerven ja die vielen Sicherheitsabfragen eher...

> Würde es nicht Sinn machen, gleich das Beibehalten der übergeordneten
> Kategorie beim mehrfachen Neuanlegen mit einzubauen? Das vereinfacht die
> Eingabe von Hierarchien doch sehr.
Ist jetzt drin --> Revision 392.

> Ansonsten vielen Dank für den 'tollen Service':-)
Ebenfalls vielen Dank für's Testen und hier posten :-)

Grüße
b.r

von b.r (Gast)


Lesenswert?

Peter Sch. schrieb:
> Vorschlag für die ToDo Liste: Roter Hinweis auf der Startseite, wenn
> (nach einem Update) die Datenbankversion nicht aktuell ist und per
> Configseite upgedated werden muß... oder gleich eine Umleitung
> dahin...oder automatisch das Angebot, dass zu tun
Das war schonmal drin, ist durch die automatischen Updates deaktiviert 
worden.
Und ist jetzt wieder drin: Revision 393

Grüße
b.r

von Guido R. (gvidas)


Lesenswert?

b.r schrieb:
> Das war schonmal drin, ist durch die automatischen Updates deaktiviert
> worden.
> Und ist jetzt wieder drin: Revision 393
>
> Grüße
> b.r

Wurde bis jetzt immer automatisch upgedatet und nun muss man es wieder 
manuell machen?
mhm komisch...
Trotzdem bleibt die Datenbank genial :-D!

von K. J. (Gast)


Lesenswert?

b.r schrieb:
> Peter Sch. schrieb:
>> Vorschlag für die ToDo Liste: Roter Hinweis auf der Startseite, wenn
>> (nach einem Update) die Datenbankversion nicht aktuell ist und per
>> Configseite upgedated werden muß... oder gleich eine Umleitung
>> dahin...oder automatisch das Angebot, dass zu tun
> Das war schonmal drin, ist durch die automatischen Updates deaktiviert
> worden.
> Und ist jetzt wieder drin: Revision 393
>
> Grüße
> b.r

das ist Blöd also die auto Umleitung auf die updateseite ;-) wen man ne 
mehr user DB hat will man das nicht deswegen kann man das ja auch in der 
config.php aus dem Menü entfernen da mit die nicht drankommen vileich 
konfigurierbar machen, b.z.w. werden beim Autoupdate das nicht eh auf 
der statupseite angezeigt ?

von Peter Sch. (Gast)


Lesenswert?

Hi,

> das ist Blöd also die auto Umleitung auf die updateseite ;-) wen man ne
> mehr user DB hat will man das nicht deswegen kann man das ja auch in der
> config.php aus dem Menü entfernen da mit die nicht drankommen vileich
> konfigurierbar machen, b.z.w. werden beim Autoupdate das nicht eh auf
> der statupseite angezeigt ?

Ja, da stimme ich zu. Wenn es jetzt (wieder) automagical geht, ist ja 
alles fein.

Gruß
Peter

von b.r (Gast)


Lesenswert?

Peter Sch. schrieb:
> Wenn es jetzt (wieder) automagical geht, ist ja
> alles fein.
Das kannst Du gleich mal ausprobieren :-)

Es gibt eine neue Funktion/ neue Bauteileigenschaft:
obsolet (nicht mehr erhältlich)

Diese hat folgende Auswirkungen:
- obsolete Teile werden auf den Seiten "Zu bestellende Bauteile" und 
"Teile ohne
Preis" nicht mehr aufgeführt
- obsolete Teile haben eine eigene Seite: "Nicht mehr erhältliche Teile"
- obsolete Teile werden überall dort, wo sie in einer Tabelle 
aufgelistet werden, mit einer rötlichen Farbe hinterlegt, damit man
sofort sieht dass das Bauteil nicht mehr erhältlich ist. Vor allem bei
Baugruppen ist das von Vorteil, da man sieht dass dort für Ersatz
gesorgt werden muss.

Viel Spaß beim Ausprobieren!
b.r

von Gelöscht (kami89)


Lesenswert?

b.r schrieb:
> Es gibt eine neue Funktion/ neue Bauteileigenschaft:
> obsolet (nicht mehr erhältlich)

Genial, genau so habe ich mir das vorgestellt!

Nur die rote Farbe ist für mein Geschmack etwas zu knallig. Vor allem 
aber wird der Kontrast zwischen Schrift und Hintergrund kleiner, was für 
Leute mit Sehschwäche (wie mich...) etwas mühsam sein kann.

Ich habe mal ein bisschen rumprobiert und bin auf die Farbe #D19F9F 
gekommen, die finde ich perfekt. Ein leicht rötlicher Stich genügt ja um 
zu sehen dass das Bauteil nicht mehr erhältlich ist, und der Kontrast 
zwischen Schrift und Hintergrund bleibt trotzdem relativ gross.

Was meinst du dazu?
Von mir aus musst du es ja nicht einbauen, ich kann auch meine css 
selber anpassen. Aber vielleicht gibt es noch andere Leute denen das so 
besser gefällt.

Gruss
Urban

von Peter Sch. (Gast)


Lesenswert?

Hi,

der Autoupdate funktioniert auf alle Fälle, das andere habe ich noch 
nicht getestet.

Gruß
und schönes Wochenende
Peter

von b.r (Gast)


Lesenswert?

Urban B. schrieb:
> Ich habe mal ein bisschen rumprobiert und bin auf die Farbe #D19F9F
> gekommen, die finde ich perfekt. Ein leicht rötlicher Stich genügt ja um
> zu sehen dass das Bauteil nicht mehr erhältlich ist, und der Kontrast
> zwischen Schrift und Hintergrund bleibt trotzdem relativ gross.
Stimmt. Gefällt mir auch besser :-)
--> Revision 397

Grüße
b.r

von Gelöscht (kami89)


Lesenswert?

super :-)

Jetzt kam mir gerade noch was anderes in den Sinn, was ich auch schon 
lange mal schreiben wollte.
Und zwar ist bei vielen Footprint-Bilder viel Hintergrund und wenig 
Bauteil zu sehen. Fast bei jedem Bauteil ist noch viel transparenter 
Rand um das Bauteil herum, den man ohne Probleme wegschneiden könnte. 
Oder z.B. bei den Dioden (DO15 usw.) könnte man auch locker die Hälfte 
von den Beinchen wegschneiden.

Erstens wären dann bei vielen Bauteilen die kleinen Bildchen in den 
Tabellen schon besser erkennbar, und zweitens ist die vergrösserte 
Ansicht dann besser mit dem Bauteil ausgenutzt.

Von mir aus kann ich das auch selber mal in Angriff nehmen, wollte aber 
nicht die Arbeit machen ohne hier vorher zu fragen (vielleicht hat ja 
jemand etwas dagegen?)

Ach ja, müssen die Bilder unbedingt quadratisch sein? Beim Zuschneiden 
wäre natürlich schön, wenn die Bilder schlussendlich nicht quadratisch 
sein müssen. Ich glaube, da müsste man dann aber die part-db noch 
anpassen, so dass auch nicht-quadratische Bilder richtig angezeigt 
werden, oder?

mfg

von b.r (Gast)


Lesenswert?

Urban B. schrieb:
> Von mir aus kann ich das auch selber mal in Angriff nehmen, wollte aber
> nicht die Arbeit machen ohne hier vorher zu fragen (vielleicht hat ja
> jemand etwas dagegen?)
Ich hätte da nix dagegen.


> Ach ja, müssen die Bilder unbedingt quadratisch sein?
Ähm, die Bildchen sind alle mit Seitenverhältnis 4:3
1
$ file tools/footprints/*.png
2
tools/footprints/0204.png:              PNG image, 320 x 240, 8-bit/color RGBA, non-interlaced
3
tools/footprints/0207.png:              PNG image, 320 x 240, 8-bit/color RGBA, non-interlaced
4
tools/footprints/0309.png:              PNG image, 320 x 240, 8-bit/color RGBA, non-interlaced
5
tools/footprints/0405.png:              PNG image, 320 x 240, 8-bit/color RGBA, non-interlaced
6
...
Das würde ich auch erstmal so lassen wollen.

Und: Ich wiederhole auch gern meinen Vorschlag, statt "POV" auf die 
Bildchen den Name des Footprints draufzuschreiben.

Grüße
b.r

von Gelöscht (kami89)


Lesenswert?

b.r schrieb:
> Ähm, die Bildchen sind alle mit Seitenverhältnis 4:3

ups, ja stimmt. Habe gar nicht nachgeschaut, hab gedacht die wären 
quadratisch...
OK also das Seitenverhältnis soll 4:3 bleiben, und wie siehts mit der 
Grösse aus? müssen die zwingend 320 x 240 sein?

b.r schrieb:
> Und: Ich wiederhole auch gern meinen Vorschlag, statt "POV" auf die
> Bildchen den Name des Footprints draufzuschreiben.

Das wäre nicht schlecht. Mal schauen, vielleicht mach ich da auch noch 
was.

mfg

von Jürgen S. (jsachs)


Lesenswert?

Uii,

da ist man mal 2 Wochen am Malochen und nur on Tour und wenn man zurück 
kommt, so ein Fortschritt.
Muss erst mal sehen wo ich wieder einsteigen kann beim helfen :-)

Gruss
JSachs

von b.r (Gast)


Lesenswert?

Urban B. schrieb:
> OK also das Seitenverhältnis soll 4:3 bleiben, und wie siehts mit der
> Grösse aus? müssen die zwingend 320 x 240 sein?
Ich würde das als Mindestgröße lassen.

Bisher werden sie nach Bedarf verkleinert:
- bei den Tabellen auf 20*15
- wenn man mit der Maus drüberfährt auf 200*150
- und sonst auf eine Höhe von 70 Pixel

Eine einheitliche Größe (bzw. Seitenverhältnis) hätte den Vorteil, das 
man bei Erweiterungen erstmal nicht so viele Spezialfälle beachten muss.

Grüße
b.r

von Gelöscht (kami89)


Lesenswert?

OK dann kann ich wohl nicht einfach die Ränder abschneiden, sonst wird 
das Bild kleiner. Danach wieder vergrössern wäre auch nicht gerade 
schön.

Wie wurden denn die Bilder bisher eigentlich genau erzeugt?
Man könnte ja mit dem bisherigen Verfahren einfach etwas grössere Bilder 
erzeugen, dann zuschneiden und danach per Script alle Bilder wieder auf 
320x240 verkleinern.

mfg

von K. J. (Gast)


Lesenswert?

Urban B. schrieb:
> OK dann kann ich wohl nicht einfach die Ränder abschneiden, sonst wird
> das Bild kleiner. Danach wieder vergrössern wäre auch nicht gerade
> schön.
>
> Wie wurden denn die Bilder bisher eigentlich genau erzeugt?
> Man könnte ja mit dem bisherigen Verfahren einfach etwas grössere Bilder
> erzeugen, dann zuschneiden und danach per Script alle Bilder wieder auf
> 320x240 verkleinern.
>
> mfg

Hi die Bilder sind mit Eagle3D erzeugt deswegen geht das POV auch nicht 
weg es seiden du hast Lust 2k inc Einträge zu ändern ;P ich wollte erst 
mal das fertig machen was ich noch auf dem PC habe kannst da gerne 
helfen sind noch um 1k4 Bilder danach kümmre ich mich um den Rest :) die 
Bildgröße ist ein Kompromiss aus Größe und menge der am ende 
existierenden FPs, es ist auch nicht möglich viel weg zuschneiden ohne 
das das alles unsyncron wird.

von Gelöscht (kami89)


Lesenswert?

Ja, dass es mit Eagle3D gemacht wurde, ist klar.
Aber da ist erstmal nichts dabei, um einzeine Bauteile zu rendern oder?

Ich habe es mal damit versucht:
http://code.google.com/p/eagle-3d/source/detail?r=64
hast du es auch damit gemacht?
Mit dem kriege ich in der Standard-Einstellung schonmal 640x480 grosse 
Bilder, das würde bestimmt reichen um die Ränder zu entfernen und dann 
auf 320x240 zu verkleinern.

Das POV kriegt man doch sicher weg, wenn man eine ganze Platine rendert 
steht da ja auch nirgens POV drauf, sondern die Values.
Eventuell kriegt man das aber nicht gescheit automatisiert hin und muss 
in mühsamer Handarbeit jedes einzelne Teil rendern...

mfg

von Gelöscht (kami89)


Lesenswert?

Ich hab jetzt nochmal kurz ein bisschen rumprobiert.

Mit
1
convert -crop
(unter Linux) lassen sich die Bilder automatisch auf den eigentlichen 
Inhalt zuschneiden, das scheint soweit perfekt zu funktionieren. Nur ist 
dann das Seitenverhältnis natürlich ganz anders ;-(

Bisher habe ich noch keine gescheite Lösung, wie man diese Bilder nun 
wieder mittig in ein 4:3 Format bringt.

Aber irgendwie sehe ich nicht ganz ein warum das Seitenverhältnis 
zwingend 4:3 sein soll. Würde doch Sinn machen wenn das Verhältnis egal 
ist oder?

> Eine einheitliche Größe (bzw. Seitenverhältnis) hätte den Vorteil, das
> man bei Erweiterungen erstmal nicht so viele Spezialfälle beachten muss.

Verstehe ich nicht ganz...
Wäre es ein zu grosser Aufwand ein variables Seitenverhältnis 
zuzulassen?

mfg

von b.r (Gast)


Lesenswert?

Urban B. schrieb:
> Wäre es ein zu grosser Aufwand ein variables Seitenverhältnis
> zuzulassen?
Z.B. bei dem Hover-Bild müssen Höhe und Breite angegeben werden. Das 
funktoniert so wie es jetzt realisiert ist (mit css) nicht mit einem 
variablen Seitenverhältnis.

Grüße
b.r

von Gelöscht (kami89)


Angehängte Dateien:

Lesenswert?

ah okay.

Ich hab mal ein paar Bilder bearbeitet, siehe Anhang.
Sieht soweit doch gut aus, oder?

@K. J.
hast du die ganzen Footprints auch in höherer Auflösung vorhanden? Oder 
renderst du direkt im 320x240 Format?
Einige Bilder sind einfach zu klein, um da den ganzen Rand 
wegzuschneiden...

mfg

von Ansgard (Gast)


Lesenswert?

Hi,

entschuldigt die späte Antwort auf die Frage mit den Datenblättern. Ich 
habe mehrere Varianten probiert, um die Datenblätter zu öffnen. Um 
herauszubekommen ob es bei mir funktioniert, habe ich die Adresszeile 
file:///C:/datasheets/sn74HC595.pdf eingegeben. Die pdf wurde daraufhin 
richtig geöffnet. Der nächste Schritt war den Link für das Datenblatt in 
part-db anzulegen. Dort habe ich beide Versionen ausprobiert, ankreuzen 
des Linkverzeichnisses und nur die Eingabe des pdf-Names sowie die den 
vollständigen Link (file...) ohne Erfolg. Es erscheint dann in der 
Spalte Datenblatter Datenblatt, die Maus ändert sich in den Finger aber 
beim klicken passiert nichts. Bei noch einem Versuch, habe ich vergessen 
den Hacken auf das Verzeichnis zu setzen darauf hin konnte ich 
Datenblatt anklicken und es kam folgende Fehlermeldung "The requested 
URL /part-db/sn74hc595.pdf was not found on this server".

Vielen Dank

Gruß Ansgard


Firefox 10.0.2; IE 8.0.6;  Safari aktuelle Version

von K. J. (Gast)


Lesenswert?

Urban B. schrieb:
> ah okay.
>
> Ich hab mal ein paar Bilder bearbeitet, siehe Anhang.
> Sieht soweit doch gut aus, oder?

Schaue ich mir heute Abend mal an.


> @K. J.
> hast du die ganzen Footprints auch in höherer Auflösung vorhanden? Oder
> renderst du direkt im 320x240 Format?
> Einige Bilder sind einfach zu klein, um da den ganzen Rand
> wegzuschneiden...
>
> mfg

Nein die sind alle in dem Format gerändert, bevor du jetzt gross was 
versuchst versuche grade das POV weg zubekommen, müsste dann eh alle neu 
Rändern, könnte dann eventuell noch einmal grössere erstellen damit du 
die Skalieren kannst müsstest mir mal schreiben welche gösse du da gerne 
hättest

von K. J. (Gast)


Lesenswert?

So hab das POV wegbekommen, allerdings alle Bilder neu einzupflegen kann 
rech aufwendig werden, wehre cool wen mir jemand helfen kann, wen das 
Rednern fertig ist lade ich das Paket hoch, momentan nur das alte 
Format.

von Gelöscht (kami89)


Lesenswert?

K. J. schrieb:
> Nein die sind alle in dem Format gerändert, bevor du jetzt gross was
> versuchst versuche grade das POV weg zubekommen, müsste dann eh alle neu
> Rändern, könnte dann eventuell noch einmal grössere erstellen damit du
> die Skalieren kannst müsstest mir mal schreiben welche gösse du da gerne
> hättest

Das ist schwierig zu sagen, denn es ist von Bild zu Bild 
unterschiedlich. Bei einigen Bildern wäre ein 1600 x 1200 grosses Bild 
notwendig, um nach dem Beschneiden noch 320 x 240 zu haben. Bei den 
meisten sollten aber 640 x 480 reichen. Also wenn du beim rendern keine 
Langeweile kriegst kannst du von mir aus alle mit 1600 x 1200 rendern 
;-) Ansonsten kann ich dir auch die wenigen kleinen Footprints nennen, 
die ich in 1600 x 1200 haben müsste.

Ich würde eben z.B. bei den bedrahteten Widerständen die Beinchen sehr 
stark abschneiden, so dass der Widerstandskörper fast das ganze Bild 
ausfüllt. Deshalb wäre dort ein 1600 x 1200 grosses Bild notwendig...

von K. J. (Gast)


Lesenswert?

Ok der erste Rendervorgang läuft ja grade, danach mache ich dir erstmal 
640x480 den rest mus ich schauen bei der Auflösung dauert das ne halbe 
Ewigkeit

von Gelöscht (kami89)


Lesenswert?

Also ich hab gleich mal geschaut bei welchen Bildern 640x480 vermutlich 
nicht reichen würde:
1
15KA.png
2
0204.png
3
0207.png
4
0309.png
5
0617.png
6
0922.png
7
CB417.png
8
CB429.png
9
CTS-A-15.png
10
CTS-B-20.png
11
CTS-C-25.png
12
CTS-D-30.png
13
DO7.png
14
DO14.png
15
DO15.png
16
DO16.png
17
DO27.png
18
DO32.png
19
DO34.png
20
DO35.png
21
DO39.png
22
DO41.png
23
DO201.png
24
DO204.png
25
F126.png
26
GP20.png
27
LED-2x1.png
28
LED-2x5.png
29
LED-3.png
30
LED-5.png
31
P600.png
32
PDLD.png
33
SOD57.png
34
SOD61A.png
35
SOD61B.png
36
SOD61C.png
37
SOD61D.png
38
SOD61E.png
39
SOD64.png
40
SOD81.png

Übrigens ist mir aufgefallen, dass das Anzeigen aller Footprints 
("Tools" -> "Footprints") schon relativ lange braucht wegen der vielen 
Bilder. Viele Footprints unterscheiden sich aber nur in der Grösse, was 
auf den Bildern ja eh nicht richtig zu sehen ist. Also könnte man doch 
die Footprintverwaltung so machen, dass man einem Bild auch mehrere 
Footprint-Namen vergeben kann. Das wäre auch nützlich bei Footprints, 
die eh schon mehrere Namen haben, wie z.B. Tantal-Kondensatoren 
("Kemet-B" oder "3528-21"). Oder ob eine LED im 0603 oder im 1206 
Gehäuse steckt sieht man auf den Bildern ja gar nicht, also würde ein 
Bild für alle SMD-LEDs genügen.

Das würde auch das rendern von vielen Bildern ersparen ;-)

mfg

von K. J. (Gast)


Angehängte Dateien:

Lesenswert?

Da ist noch ne Verzeichnisstruktur geplant wollte aber erstmal die 
Bilder fertig machen einige namen passen auch noch nicht, hab noch etwa 
900 Bilder die ich fertig machen muss, danach kümmer ich mich um das 
andere.

Momentan ist mein Server platt da muss ich mich heute erstmal drum 
kümmern.

Die 320x240bilder sind im Anhang.

von Gelöscht (kami89)


Lesenswert?

K. J. schrieb:
> Da ist noch ne Verzeichnisstruktur geplant

Ahsoo okay, das ist eine gute Idee. Trotzdem wäre es nicht schlecht wenn 
man die Bilder individuell den Footprints zuordnen könnte. Ich würde mir 
das so vorstellen, dass man beim Anlegen eines neuen Footprints manuell 
das dazu passende Bild auswählen könnte. Dass der Dateiname der Bilder 
automatisch mit einem gleichnamigen Footprint verknüpft wird könnte man 
natürlich weiterhin so lassen, dann ist das manuelle Zuweisen quasi 
"freiwillig". Aber das kann man natürlich auch später irgendwann mal 
machen, eine Verzeichnisstruktur "entschärft" das Ganze ja schonmal :-)

> Die 320x240bilder sind im Anhang.

ääh versteh ich jetzt nicht ganz was ich mit denen machen soll :-)
Du machst später dann alle Bilder in 640x480 hast du ja einen Beitrag 
vorher geschrieben? Dann warte ich erstmal ab bis du diese Bilder 
gemacht hast, bringt ja nichts wenn ich jetzt die 320x240 Bilder 
bearbeite.

von K. J. (Gast)


Lesenswert?

Jup die 320x240 hab ich gemacht weil dadrauf das POV nicht mehr 
erscheint, also auch nochmal was zum Ändern die 640x480 Rändern grade, 
werde die dan nach und nach austauschen.

von Gelöscht (kami89)


Lesenswert?

OK dann lege ich also los sobald die ersten 640x480 verfügbar sind.

mfg

von K. J. (Gast)


Angehängte Dateien:

Lesenswert?

So hier das Paket.

von Gelöscht (kami89)


Lesenswert?

War das Absicht, dass der Hintergrund nicht mehr transparent ist?

Die Verzeichnisstruktur mach ich auch gleich, so verliere ich nicht den 
Überblick über die 2k Bilder.

Aber wie stellst du dir die Verzeichnisstruktur genau vor? Also die 
automatische Verknüpfung zwischen Dateinamen und Footprintnamen ist dann 
ja nicht mehr gut möglich...

Ich denke, wenn wir jetzt schon an den Bildern arbeiten, sollten wir 
auch gleich Nägel mit Köpfen machen und nicht erst was provisorisches. 
Sonst hat man hinterher nochmal einen Haufen Arbeit wenn noch was 
geändert werden muss.

mfg

von K. J. (Gast)


Lesenswert?

Jo wie möchtest eigentlich vorgehen ? wilste die Bilder die jetzt im SVN 
sind erstmal bearbeiten und ich pflege die noch fehlenden ein damit wir 
nicht durcheinander kommen.

Zur Transparenz ich hatte das damals mit irfanvief gemacht hab momentan 
aber kein Lauffähiges win mehr, mach die erstmal ohne Transparenz ich 
bearbeite die dann nach, oder du machst das selber hatte das so gemacht 
das ich alles was weis ist Transparent ist dadurch sind die Bilder 
besser anzuschauen auch dünkleren untergründen.

von Gelöscht (kami89)


Lesenswert?

Also ich dachte, ich fang mal mit den 640x480 Bildern an, die du 
hochgeladen hast. Zuerst die Ordnerstruktur, dann die Dateinamen 
anpassen und unwichtige Bilder löschen (gleiche Bauteile in 
unterschiedlichen Farben, unterschiedlichen Rastermassen usw).

Also so dass schonmal auf Dateiebene alles fertig ist. Dann könnte man 
das auch schonmal hochladen, sollte ja nicht schlimm sein wenn halt noch 
alle Bilder 640x480 gross sind.

Danach würde ich nach und nach die Bilder zuschneiden und verkleinern 
auf 320x240. Kann dann auch immer wieder die neuen Bilder hochladen.

Wärst du damit einverstanden?

Gleichzeitig wäre es aber schön, wenn die Footprintverwaltung angepasst 
werden würde. Ich vermute mal, das automatische Verknüpfen zwischen 
Footprintname und Dateiname müsste man dann aufgeben...

Einerseite könnte man das so machen, dass man beim Anlegen eines 
Footprints ein Bild aus einer Liste auswählen könnte, und der Pfad auf 
die Bilddatei dann im Datenbankeintrag vom Footprint abgespeichert wird.

Andererseite könnte man zusätzlich noch in der Auflistungsseite der 
Footprint-Bilder bei jedem Bild direkt entsprechende Footprintnamen 
zuordnen können.

Was besseres fällt mir momentan nicht ein, vielleicht hat sonst noch 
jemand eine andere Idee?

Ah ja das mit der Transparenz sollte glaube ich auch am Schluss noch mit 
einem Skript lösbar sein, damit das nicht viel Handarbeit gibt.

von K. J. (Gast)


Lesenswert?

Urban B. schrieb:
> Also ich dachte, ich fang mal mit den 640x480 Bildern an, die du
> hochgeladen hast. Zuerst die Ordnerstruktur, dann die Dateinamen
> anpassen und unwichtige Bilder löschen (gleiche Bauteile in
> unterschiedlichen Farben, unterschiedlichen Rastermassen usw).

JAp weg damit :P Dateinamen müsste man dann noch Anpassen, die Frage ist 
auch ob man sowas wie pinheader in allen pinanzahlen brauch oder ob da 
einer reicht als genneralbild das gleiche für Stecker ... hab immer alle 
gemacht das will jeder anders, oder man Splittet das am ende in einzelde 
Pakete auf.

> Also so dass schonmal auf Dateiebene alles fertig ist. Dann könnte man
> das auch schonmal hochladen, sollte ja nicht schlimm sein wenn halt noch
> alle Bilder 640x480 gross sind.
>
> Danach würde ich nach und nach die Bilder zuschneiden und verkleinern
> auf 320x240. Kann dann auch immer wieder die neuen Bilder hochladen.

Am idealsten wehre wen die erst im SVN Landen wen sie das richtige 
Format haben die meisten user arbeiten mit der SVN Version.

Mit anderen Worten Komplet fertig sind.

> Wärst du damit einverstanden?
>
> Gleichzeitig wäre es aber schön, wenn die Footprintverwaltung angepasst
> werden würde. Ich vermute mal, das automatische Verknüpfen zwischen
> Footprintname und Dateiname müsste man dann aufgeben...

Jap allerdings kann mann ja die chekboxen so erweitern das der Link in 
der DB abgelegt wird dann ist das autozuweisen nicht mehr möglich aber 
die meisten werden das eh nutzen anstatt die FPs von Hand zu erstellen.

> Einerseite könnte man das so machen, dass man beim Anlegen eines
> Footprints ein Bild aus einer Liste auswählen könnte, und der Pfad auf
> die Bilddatei dann im Datenbankeintrag vom Footprint abgespeichert wird.

Jup

> Andererseite könnte man zusätzlich noch in der Auflistungsseite der
> Footprint-Bilder bei jedem Bild direkt entsprechende Footprintnamen
> zuordnen können.

> Was besseres fällt mir momentan nicht ein, vielleicht hat sonst noch
> jemand eine andere Idee?

> Ah ja das mit der Transparenz sollte glaube ich auch am Schluss noch mit
> einem Skript lösbar sein, damit das nicht viel Handarbeit gibt.

Jo hatte deswegen Irfanvief benutzt gimp war mir da zu kompliziert :P

Die Grossen FP Bilder sind in arbeit denke aber des dauert noch einige 
stunden.

Einer müsste dann noch die Bilder mit POV Beschriftung austauschen aber 
das kann man am ende machen nach deiner bearbeitung werden das nicht 
mehr viele sein.

von Gelöscht (kami89)


Lesenswert?

> JAp weg damit :P Dateinamen müsste man dann noch Anpassen, die Frage ist
> auch ob man sowas wie pinheader in allen pinanzahlen brauch oder ob da
> einer reicht als genneralbild das gleiche für Stecker ... hab immer alle
> gemacht das will jeder anders, oder man Splittet das am ende in einzelde
> Pakete auf.

Ja, ich würde bei solchen Sachen auch alle drinlassen, dann kann jeder 
selbst entscheiden wie er es handhaben will. Mit der Ordnerstruktur ist 
die Übersichtlichkeit ja eh wieder gewährleistet, da stören die paar 
zusätzlichen Bilder nicht mehr. Allerdings z.B. bei den blauen 
Folienkondensatoren mit 100 ganz leicht unterschiedlichen Footprints 
werde ich vermutlich die meisten löschen. Falls später jemand reklamiert 
kann man die auch nachträglich noch machen.

> Am idealsten wehre wen die erst im SVN Landen wen sie das richtige
> Format haben die meisten user arbeiten mit der SVN Version.
>
> Mit anderen Worten Komplet fertig sind.

OK kein Problem, aber wenn ich alle Bilder alleine mache kann das schon 
ein Weilchen dauern bis alles komplett fertig ist (mache "nebenbei" noch 
ein E-Studium).

Falls ich Hilfe bekommen würde, könnte ich die Bilder auch hochladen 
nachdem die Ordnerstruktur und die Dateinamensänderungen gemacht sind.

> Jo hatte deswegen Irfanvief benutzt gimp war mir da zu kompliziert :P

Ah ok, bin mir nicht sicher ob das sogar "convert" auch kann. Ist 
momentan aber auch noch nicht wichtig...

> Die Grossen FP Bilder sind in arbeit denke aber des dauert noch einige
> stunden.

Kein Problem, ich hab vorerst genug zu tun :-)

> Einer müsste dann noch die Bilder mit POV Beschriftung austauschen aber
> das kann man am ende machen nach deiner bearbeitung werden das nicht
> mehr viele sein.

Jup.

Also ich hab schonmal die Ordnerstruktur mehr oder weniger fertig, bin 
jetzt noch die unnötigen Bilder am löschen und die Dateinamen am 
anpassen. Das wir mich für ein Weilchen beschäftigen :-)

von K. J. (Gast)


Lesenswert?

Ok ich benenne den Rest weiter um müste zum WE hin dann alle fertig 
haben

von b.r (Gast)


Lesenswert?

Prinzipiell lassen sich die Footprints ja hierarchich ordnen. Die 
Hierarchie könnte man aus der Ordnerstruktur übernehmen. Ich fürchte 
nur, dsa man dann beim Anlegen von Bauteilen seine Footprints nicht mehr 
findet...

Grüße
b.r

von K. J. (Gast)


Lesenswert?

die 1600x1200 Bilder Ligen im SVN wollte das dem Forum nicht zumuten 
sind 120MB

http://code.google.com/p/part-db/source/browse/fp-img/img-1600x1200.tar.gz
Die anderen Ligen da auch.

von Gelöscht (kami89)


Lesenswert?

Ach so, da hast gleich alle Bilder in 1600x1200 gerendert :-)

Dann bediene ich mich direkt an diesen Bildern, die 640x480 brauch ich 
dann ja gar nicht. Schlussendlich verkleinere ich eh wieder alle auf 
320x240.

von Ansgard (Gast)


Lesenswert?

Hi,

habe heute ein neues Teil anlegen wollen. Dabei hatte ich 
Schwierigkeiten mit der Eingabe des Preises. Im Fenster neues Bauteil 
konnte ich den Preis nur mit einen Punkt als Trennungszeichen eingeben. 
Im Fenster ändern eines Bauteils ist es das Komma. Weiterhin kann man im 
Fenster neues Bauteil nicht die Backspace Taste zum löschen der letzten 
Eingabe im Preisfeld benutzen.

Gruß Ansgard

part-DB R402

von b.r (Gast)


Lesenswert?

Ansgard schrieb:
> Weiterhin kann man im
> Fenster neues Bauteil nicht die Backspace Taste zum löschen der letzten
> Eingabe im Preisfeld benutzen.
Das liegt m.E. an der Prüfung des Feldes durch Javascript. Bin da aber 
nicht der Experte um das zu korrigieren.

Grüße
b.r

von Gelöscht (kami89)


Angehängte Dateien:

Lesenswert?

So, konnte den Grossteil der Bilder nun doch noch per Script bearbeiten, 
das hat mir viel Zeit erspart. ImageMagick ist einfach ein geiles Tool, 
damit ist nichts unmöglich sofern man die richtigen Befehle einmal 
gefunden hat :-)

Ich hoffe das passt so einigermassen. Einige Bilder konnte ich nicht 
richtig identifizieren was das nun sein soll, wäre vielleicht nicht 
schlecht wenn früher oder später mal jemand drüber schauen würde der 
sich mit der Vielfalt der Bauteile auskennt.

Ansonsten würde ich sagen, das kann man so mal ins SVN laden, sofern die 
Ordnerstruktur auch programmiertechnisch realisiert wurde.

Ein paar wenige Bilder sind immernoch ein bisschen kleiner als 320x240, 
aber ich glaube das kann man auch so lassen.

Was meint ihr, habe ich an den Widerständen & co zuviel geggeschnitten 
oder würdet ihr das so lassen? Ist irgendwie halt auch ein bisschen 
Geschmackssache...

mfg

von K. J. (Gast)


Lesenswert?

Sorry hat etwas gedauert, sieht echt gut aus sind das alle ? also Alle 
geränderten Bilder ? hab 17xx sollte hinkommen, hab leider grade etwas 
wenig zeit aber, wen des alle sind Pflege ich die tage ein mach die 
Alten raus und fange mit dem Katalogsystem an, wen du die so wie sie 
jetzt sind freigibst.

Mit der grösse solange das Format auf 320x240 skalierbar ist ist es 
egal, die alten Bilder kann man ja als Paket nochmal extra hochladen, 
für die Leute die das nicht alles umstellen wollen.

von Gelöscht (kami89)


Lesenswert?

Ja, das sind alle.

Bei ein paar Sachen war ich mir aber etwas unsicher:

- Bei den IC-Sockel habe ich die Sockel, die einen Hebel haben, in einen 
Ordner namens "TEX" geschoben, da die Dateinamen mit "TEX" begannen. 
Würde vielleicht mehr Sinn machen wenn man den Ordner noch in 
"Testsockel" oder sowas ähnliches umbenennen würde (wie heissen die 
richtig?).

- Direkt im Verzeichnis "Verbinder" sind noch ein paar komische Teile 
drin, bei denen ich nicht weiss was ich damit machen soll.

- Im Verzeichnis "Kondensatoren" sind noch 4 Bilder (CTS_*) drin, sowas 
habe ich noch nie gesehen, was sind das für Kondensatoren?

- Im Verzeichnis "Widerstände/Bedrahtet" habe ich die Verzeichnisse "RB" 
und "PR" aufgrund der Dateinamen erstellt. Ich weiss nicht was das für 
Typen sind, deshalb konnte ich sie nicht richtig zuordnen.

mfg

von Gelöscht (kami89)


Lesenswert?

Noch was zum Webinterface:

Bei den Baugruppen wird mir kein Gesamtpreis mehr angezeigt. Ist 
übrigens auch in der online-Demo so. Revision 405.

Dann ist mir aufgefallen, dass der Platz für die Tabelle bei den 
Baugruppen recht knapp bzw. schon zu klein ist. Eigentlich könnte man ja 
die letzte Spalte ("Entfernen") auch löschen, dann müsste man zum 
Entfernen von Bauteilen einfach die Stückzahl auf Null stellen und 
"Übernehmen" anklicken.

Und noch was zur geplanten Umstrukturierung der Footprintverfaltung:
Es wäre irgendwie cool wenn man jedem Footprint zusätzlich noch ein 
"Anzeigename" zuweisen könnte, der dann in den Teile-Tabellen angezeigt 
wird. Also wenn man ein Footprint "RES-0805" und ein "CAP-0805" hat, 
könnte man beiden den Übernamen "0805" geben. In den Tabellen erscheint 
dann beim Widerstand und beim Kondensator derselbe Footprint "0805", 
beim Kondensator wird aber natürlich ein Kondensatorfootprint-Bild und 
beim Widerstand ein Widerstandsfootprint-Bild angezeigt. Auf die Idee 
kam ich übrigens, weil man so noch etwas Platz sparen könnte in den 
Tabellen, weil einige Footprintnamen so kürzer ausfallen würden.

mfg

von b.r (Gast)


Lesenswert?

Urban B. schrieb:
> Bei den Baugruppen wird mir kein Gesamtpreis mehr angezeigt. Ist
> übrigens auch in der online-Demo so. Revision 405.
Gefixt. Revision 406
b.r

von K. J. (Gast)


Lesenswert?

Urban B. schrieb:
> Ja, das sind alle.
>
> Bei ein paar Sachen war ich mir aber etwas unsicher:
>
> - Bei den IC-Sockel habe ich die Sockel, die einen Hebel haben, in einen
> Ordner namens "TEX" geschoben, da die Dateinamen mit "TEX" begannen.
> Würde vielleicht mehr Sinn machen wenn man den Ordner noch in
> "Testsockel" oder sowas ähnliches umbenennen würde (wie heissen die
> richtig?).

Textool (glaub ich)

>
> - Direkt im Verzeichnis "Verbinder" sind noch ein paar komische Teile
> drin, bei denen ich nicht weiss was ich damit machen soll.

vielleicht nen Misc. Ordner
>
> - Im Verzeichnis "Kondensatoren" sind noch 4 Bilder (CTS_*) drin, sowas
> habe ich noch nie gesehen, was sind das für Kondensatoren?

Glaube Folie mit ALU-Ummantelung
>
> - Im Verzeichnis "Widerstände/Bedrahtet" habe ich die Verzeichnisse "RB"
> und "PR" aufgrund der Dateinamen erstellt. Ich weiss nicht was das für
> Typen sind, deshalb konnte ich sie nicht richtig zuordnen.
>

Hochlastwiederstäne / die Grünen sind Dratwiederstände aber die 
Bezeichnung weis ich auch nicht

> mfg

@kami89 ja so in etwas war es geplant, wir müssen dafür eh neue Tabellen 
erstellen denn kann man gleich nen Rundumschlag machen.

Hab schon etwas am entwurf gefeilt, denke mann kann den Footprint 
hinterher einen Harken setzen ob ein R,C,L ist Angezeigt wird dan z.b. 
bei 0805 immer nur der reine footprintname nur in der Auswahlfunktion 
steht dann die art vor b.z.w. denke ich das auch ein umbenennen möglich 
sein sollte, b.z.w. das man seinen Kategorien einen FP Ordner zuweisen 
kann.

von Gelöscht (kami89)


Lesenswert?

hmm wäre es möglich dass du die kleinen Ordnerumbenennungen gleich 
selber vornimmst? Wäre irgendwie Humbug wenn ich nochmal 40MB hier 
hochlade, nur wegen einer handvoll Ordnerumbenennungen ;-)

Jo, ansonsten glaube ich das kommt gut mit der Umstrukturierung der 
Footprintverwaltung, ich habe da vollstes Vertrauen in euch :-D

Bin auf jeden Fall gespannt auf das Ergebnis!

@b.r
> Gefixt. Revision 406
Danke, läuft :-)

mfg

von K. J. (Gast)


Lesenswert?

Hi ja mache ich, setze mir grade ne aktuelle Version auf, und fange 
heute mit der Strukturierung an, mal schauen was dabei rauskommt.

von b.r (Gast)


Lesenswert?

In Revision 407 ist mal ein erstes Update mit den neuen Footprintbildern 
+ deren Anordnung in Unterordnern. Es ist m.E. noch nicht perfekt, aber 
ein Anfang.

Allerdings findet die Tabellenansicht durch die neuen Namen nicht mehr 
alle Footprints :-/

Grüße
b.r

von K. J. (Gast)


Lesenswert?

Hi die Tabellenansicht ist noch nicht umgestellt momentan sind beide 
bilderpakete drinnen, wobei das neue noch reichlich gross ist (100MB), 
wil das nach und nach umstellen erstmal lauft die alte weiter, ich mache 
die neue Verwaltung nebenher.

von K. J. (Gast)


Lesenswert?

UPS. grade nochmal geschaut da sind tatsächlich so einige abhanden 
gekommen ;) kümmer mich drum

von K. J. (Gast)


Lesenswert?

Hm kann einer das SVN mal wieder geraderücken auf rev 407 + die 
Änderungen von 410 mein SVN Client hat sich komplett zerlegt und leider 
nur müll gemacht ich bekomme das grade überhaupt nicht hin.

Sorry mfg tb

von b.r (Gast)


Lesenswert?

Was ist denn das Problem mit der SVN-Version?
Gegebenenfalls kannst Du das Repository in ein neues Verzeichnis 
auschecken.

Grüße
b.r

von K. J. (Gast)


Lesenswert?

Das Prob ist das Goggle die FP nicht vollständig anzeigt aber mann sie 
komplett auschecken kann ka warum, dachte erst das liegt am Client da 
der ganz gerne mal zikkt.

von Gelöscht (kami89)


Lesenswert?

Es scheint als hätte es jetzt doch noch geklappt wie ich in der 
aktuellen Revision sehe.

Ich finde die neuen Bilder machen schon was her in der Auflistung der 
Footprints. Allerdings benötigt die Seite jetzt verdammt lange bis alles 
geladen wurde, eine hierarchische Darstellung wäre langsam wünschenswert 
:-)

Habe gerade gesehen dass einige Bilder noch weisse Stellen statt 
Transparenz drin haben, vorallem bei den IC-Sockeln. Ich werde das mal 
noch anpassen und die paar Bilder dann hier hochladen.

mfg

von b.r (Gast)


Lesenswert?

Urban B. schrieb:
> Ich finde die neuen Bilder machen schon was her in der Auflistung der
> Footprints.
Finde ich auch. Vielen Dank!

> Allerdings benötigt die Seite jetzt verdammt lange bis alles
> geladen wurde, eine hierarchische Darstellung wäre langsam wünschenswert
> :-)
Ja. Andererseits durchscrollen um was zu suchen ('optisch') würde ich 
auch nicht missen wollen.

Und trotz der Sortierung in Verzeichnisse, sind eindeutige 
Footprintnamen wichtig. Die Datenbank kann zwar die Footprints 
hierarchisch verwalten, aber mit DIP16 gibt es jetzt z.B. ICs, Sockel 
und Drehschalter.
Die Zuordnung zwischen Namen und Bild erfolgt in der Datenbank aber nur 
mit einer Namenssuche, ohne Beachtung der Hierarchie.

Grüße
b.r

von Gelöscht (kami89)


Lesenswert?

b.r schrieb:
> Vielen Dank!
Kann ich nur zurückgeben :-)

> Ja. Andererseits durchscrollen um was zu suchen ('optisch') würde ich
> auch nicht missen wollen.
Dann könnte man ja auch einen Link auf "Alle Footprints" einfügen. Also 
neben den Ordnern "Aktiv", "Akustik", "Elektromechanik" usw. noch ein 
Ordner "Alle Footprints". Dann muss man den Browser nur dann quälen, 
wenn man auch wirklich alle Bilder auf einer Seite sehen möchte.

> Und trotz der Sortierung in Verzeichnisse, sind eindeutige
> Footprintnamen wichtig. Die Datenbank kann zwar die Footprints
> hierarchisch verwalten, aber mit DIP16 gibt es jetzt z.B. ICs, Sockel
> und Drehschalter.
> Die Zuordnung zwischen Namen und Bild erfolgt in der Datenbank aber nur
> mit einer Namenssuche, ohne Beachtung der Hierarchie.
OK werde ich noch machen. Da kommt mir gerade eine Idee in den Sinn: Die 
Footprints sollen ja auch einen "Übernamen" erhalten, der dann jeweils 
in den Tabellen erscheint, also z.B. eben "0805" für R und C. Wenn ich 
jetzt allen Bildern Namen wie "CAP_0805.png" und "RES_0805.png" geben 
würde, könnte man automatisch die Bezeichnung hinter dem Underline als 
Übernamen nehmen. Natürlich soll es trotzdem manuell editierbar sein, 
aber halt einfach dass es als default übernommen wird.

Ist es eigentlich in Ordnung wenn ich alle Ordner- und Dateinamen in 
Deutsch benenne? Oder wäre euch Englisch lieber?
Teilweise klingt Deutsch schon ein bisschen blöd, z.B. 
"Widerstand_0805.png" statt "RES_0805"...

mfg
Urban

von K. J. (Gast)


Lesenswert?

Hi, ich hab erstmal beschlossen mich aus dem Projekt zurück zu ziehen 
hab momentan einfach nicht die Zeit dafür, deswegen die frage an die 
Aktiven 3 Comitter ob jemand den Admin braucht, ansonsten stehe ich 
natürlich dafür auch weiterhin da, nur immer was zwischen Tür und Angel 
zu machen macht mehr kaputt als es was bringt.

mfg k.j. aka theborg

von Jürgen S. (jsachs)


Lesenswert?

K. J. schrieb:
> Hi, ich hab erstmal beschlossen mich aus dem Projekt zurück zu ziehen
> hab momentan einfach nicht die Zeit dafür, deswegen die frage an die
> Aktiven 3 Comitter ob jemand den Admin braucht, ansonsten stehe ich
> natürlich dafür auch weiterhin da, nur immer was zwischen Tür und Angel
> zu machen macht mehr kaputt als es was bringt.
>
> mfg k.j. aka theborg

Mir geht es im Moment nicht anders.
Ich lese zwar mit, aktiv sein ist mir aber nicht möglich. Hoffe das wird 
im Mai wieder anders.

Gruss
Juergen

von b.r (Gast)


Lesenswert?

K. J. schrieb:
> deswegen die frage an die
> Aktiven 3 Comitter ob jemand den Admin braucht
Wenn sich niemand weiter findet, kann ich Dir den Admin auch übernehmen.
Viel wichtiger finde ich, was mit der Demoseite passiert bzw. passieren 
soll. Kannst Du dazu was sagen? Evtl. auch, was da für ein Aufwand 
drinsteckt?

Grüße
b.r

von K. J. (Gast)


Lesenswert?

b.r schrieb:
> K. J. schrieb:
>> deswegen die frage an die
>> Aktiven 3 Comitter ob jemand den Admin braucht
> Wenn sich niemand weiter findet, kann ich Dir den Admin auch übernehmen.
> Viel wichtiger finde ich, was mit der Demoseite passiert bzw. passieren
> soll. Kannst Du dazu was sagen? Evtl. auch, was da für ein Aufwand
> drinsteckt?
>
> Grüße
> b.r
Aufwand entsteht da keiner !!! Das ist ehr für die Einstellungen von dem 
Gookel nötig (comitter adden, seite verwalten ...)


Hi, die DEMO Seite läuft recht Autark also jetzt seit 2 Monaten ohne das 
Wartung notwendig ist, ich werde noch die DB neu Reinladen die ist 
mittlerweile recht verhunzt aber die restliche Wartung wird wohl im 
Rahmen der generellen Serverwartung für mich Möglich sein.

von Gelöscht (kami89)


Lesenswert?

@ Jürgen Sachs und K.J.

Schade, aber kann man natürlich verstehen. Jedenfalls vielen Dank für 
das was ihr bis jetzt geleistet habt!

@ b.r.

Bist du hier jetzt noch der Einzige, der aktiv beteiligt ist?
Ich bin jetzt noch die Footprints am anpassen. Irgendwie habe ich da 
aber gewisse Probleme... Wenn ich meine neuen Bilder auf den Server 
kopiere, erscheinen die Bilder gar nicht in der Footprintauflistung. Es 
ist nur der Text (unter dem fehlenden Bild) zu sehen. Öffne ich die 
gleichen Dateien direkt auf dem Server mit einem Bildbetrachter, lässt 
sich das Bild problemlos öffnen. Ausserdem werden bei den neuen Bildern 
der DIP-IC-Sockel die jetzt transparenten Bereiche gar nicht als 
transparent dargestellt, sondern immernoch weiss. Im Bildbetrachter 
funktioniert auch das natürlich bestens.

Hast du irgendeine Ahnung was da los sein könnte?
Den Browser-Cache habe ich ständig wieder gelöscht, das hats aber nicht 
gebracht.

Und was meinst du zu den deutschen Datei-/Ordnernamen? Doch lieber 
Englisch?

mfg

von b.r (Gast)


Lesenswert?

K. J. schrieb:
> Aufwand entsteht da keiner !!! Das ist ehr für die Einstellungen von dem
> Gookel nötig (comitter adden, seite verwalten ...)
Na dann ist doch gut. Solange Du per Mail erreichbar bist, wenn doch was 
sein sollte, können wir auch den aktuellen Zustand belassen.

> Hi, die DEMO Seite läuft recht Autark also jetzt seit 2 Monaten ohne das
> Wartung notwendig ist, ich werde noch die DB neu Reinladen die ist
> mittlerweile recht verhunzt aber die restliche Wartung wird wohl im
> Rahmen der generellen Serverwartung für mich Möglich sein.
Das klingt sehr gut.
BTW: Welche PHP Version läuft eigentlich auf dem Server? Momentan 
scheint die ein Problem mit array_merge in glob_recursive zu haben.
An meinem lokalen Testsystem (5.3.8) kann ich das Problem leider nicht 
nachstellen.

Vielleicht ist es ja noch möglich das PHP auf dem Testsystem zu 
aktualisieren.

Grüße
b.r

von b.r (Gast)


Lesenswert?

Urban B. schrieb:
> Bist du hier jetzt noch der Einzige, der aktiv beteiligt ist?
Sieht so aus. Aber jetzt geht ja auch langsam die Bstaelsaison zu Ende 
und die Draußensaison geht los :-)

[Footprints]
> Hast du irgendeine Ahnung was da los sein könnte?
> Den Browser-Cache habe ich ständig wieder gelöscht, das hats aber nicht
> gebracht.
Nein, aber Du kannst mir gern eine Mail mit ein paar Testbildern 
schicken (oder die hier einstellen), dann schau ich mir das mal an.

> Und was meinst du zu den deutschen Datei-/Ordnernamen? Doch lieber
> Englisch?
Bin unentschlossen. Footprint, DIP, XTAL sind englisch. Allerdings 
sortiere ich meine Bauelemente auch nach deutschen Kategorien. 
Vielleicht ist deutsch doch etwas übersichtlicher.

Grüße
b.r

von K. J. (Gast)


Lesenswert?

b.r schrieb:
> BTW: Welche PHP Version läuft eigentlich auf dem Server? Momentan
> scheint die ein Problem mit array_merge in glob_recursive zu haben.
> An meinem lokalen Testsystem (5.3.8) kann ich das Problem leider nicht
> nachstellen.
>
> Grüße
> b.r

Ist 5.2.6 also noch nicht so alt, jup Fehler gibt das da einige 
allerdings denke ich ehr das sind noch Codingprobleme da es nicht 
überall auftritt.

von Gelöscht (kami89)


Lesenswert?

@b.r.

OK also ich brauche noch ein bisschen Zeit bis ich die Bilder nochmal 
überarbeitet habe. Danach lade ich sie wieder hier hoch.

Ich habe jetzt angefangen bei jedem Bild noch ein Präfix hinzuzufügen, 
damit die Dateinamen ganz sicher eindeutig und sogar selbstsprechend 
sind. Allerdings kann das teilweise zu relativ langen Dateinamen führen, 
was auf der Footprint-Übersichtsseite eher suboptimal ist...

Mal schauen ob mir noch eine schlaue Idee in den Sinn kommt ;-)

mfg

von Gelöscht (kami89)


Angehängte Dateien:

Lesenswert?

So, hier nochmal eine neue Version der Footprintbilder.

Wie gesagt, bei mir werden die Bilder nicht angezeigt wenn ich sie auf 
meinen Webserver kopiere. Ich wäre froh wenn du das mal bei dir 
ausprobieren könntest, dann wissen wir ob das Problem bei meiner 
Installation oder bei den Bildern liegt.

Die Dateinamen sind jetzt möglichst so gewählt, dass alles hinter dem 
ersten Underscore als Footprintname genommen werden kann. Wäre cool wenn 
du das dann auch so programmieren könntest :-)

mfg

von André A. (nummer5) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo,
erstmal muss ich sagen, dass ich die Datenbank klasse finde :)
Ich hab ein paar kleine Änderungen am Code vorgenommen, ich hänge mal 
die Patches mit an, falls es jemand gebrauchen kann.

Da unter Gnome3 Dialog-Fenster keinen Button mehr zum schließen haben, 
hab ich die Option in der config.php geändert, beim schließen der 
Fenster kam aber immer nur eine weiße Seite mit "false", ich habs es 
durch eine zusätzliche Zeile in der popup.php beheben können. 
(popup.patch)

Dann habe ich unter Tools/Label noch einen Widerstandsrechner eingefügt. 
Vielleicht kann man ja ne Extra-Kategorie machen für solche Rechner. 
(widerstand.patch, die dateien label.css und label.js müssen in den 
tools/label Ordner)

Mich hatt es gestört, dass ich die Datanblätter nicht vom aktuellen 
Rechner hochladen konnte, sodass ich den Code in Anlehnung an die Bilder 
umgeändert habe, so dass man zusätzlich Datenblätter in den Ordner 
hochladen kann der in der config.php als datasheet_path angegeben ist. 
Es wäre bei den Datenblättern noch gut, wenn man einen Titel eingeben 
könnte (der orginale Dateiname würde meist schon reichen), vielleicht 
passe ich das noch an. (datasheet.patch)

Mir ist aufgefallen, dass beim löschen eines Bilder, die Bilddatei 
selber nicht gelöscht wird (bei den Datenblätter zur Zeit ebenso).


Ich hoffe dies ist der richtige Ort für Bug-/Request-Meldungen.

von André A. (nummer5) Benutzerseite


Angehängte Dateien:

Lesenswert?

In der Berechnung der 6-Ring-Widerstände war noch ein Fehler.

von b.r (Gast)


Lesenswert?

Vielen Dank für Deine Arbeit.

André Althaus schrieb:
> Dann habe ich unter Tools/Label noch einen Widerstandsrechner eingefügt.
> Vielleicht kann man ja ne Extra-Kategorie machen für solche Rechner.
> (widerstand.patch, die dateien label.css und label.js müssen in den
> tools/label Ordner)
Den Widerstandsrechner hab ich schon mal ein gebaut (Revision 414).
Der stand auch schon auf meiner internen TODO-Liste :-)
Dankeschön.

Den Rest schau ich mir auch noch an.

Viele Grüße
b.r

von Gelöscht (kami89)


Lesenswert?

@André
coole Sache, jetzt läuft wiedermal was hier :-)
Schaut schonmal gut aus, der Widerstandsrechner.
Auf das Feature mit den Datenblättern warte ich auch schon lange :-)

@b.r
Konntest du meine Footprints anschauen? Werden die bei dir richtig 
angezeigt?

mfg

von b.r (Gast)


Lesenswert?

Urban B. schrieb:
> Konntest du meine Footprints anschauen? Werden die bei dir richtig
> angezeigt?
Ja, funktioniert.
Den Teil mit den "Aktiven" Bauelementen checke ich gerade ein (Revision
416).
Da wo nur ein Teil im Unterverzeichnis lag, habe ich das Teil eine
Verzeichnisebene nach oben geschoben.

Grüße
b.r

von Oliver S. (eragon)


Angehängte Dateien:

Lesenswert?

Hei zusammen

Ha folgendes Problem bzw. seh da grad nicht worans liegt.
Kann meinen Bauteilen keine Footprints zuordnen. (Siehe Printscreen)

DB läuft auf einer virtuellen maschine mit folgenden Angaben:

Apache/2.2.16 (Debian)
MySQL-Client-Version: 5.1.61
PHP Erweiterung: mysqli
Server Version: 5.1.61-0+squeeze1

Auf PART-DB greife ich mit Firefox 11.0 zu.

Woran könnte das liegen? Bzw. was mach ich falsch?

Gruss Oliver

P.S. Cooles Tool. ;)

von Gelöscht (kami89)


Lesenswert?

Oliver Schmutz schrieb:
> Hei zusammen
>
> Ha folgendes Problem bzw. seh da grad nicht worans liegt.
> Kann meinen Bauteilen keine Footprints zuordnen. (Siehe Printscreen)

Hallo,

Du hast aber die Footprints schon auch angelegt oder? Die 
Footprint-Bilder sind nicht automatisch auch als Footprints in der 
Datenbank aufgelistet.

Falls das nicht das "Problem" war, werden die Footprints denn wenigstens 
auch richtig in der Datenbank abgespeichert und unter 
"Bearbeiten/Footprints" aufgelistet?

@b.r
Aah ja, die "neuen" Footprints werden jetzt auch bei mir wieder richtig 
angezeigt. Kann mir nicht erklären, warum das vorher nicht richtig 
funktionierte...

mfg

von Oliver S. (eragon)


Lesenswert?

Ojeee...

Urban B. schrieb:
> Du hast aber die Footprints schon auch angelegt oder? Die
> Footprint-Bilder sind nicht automatisch auch als Footprints in der
> Datenbank aufgelistet.

Genau das wars...ich dachte noch ich sollte liber ins Bett gehn.
Verdammt. Das hab ich wirklich nicht gesehen.

Danke jetzt läufts einwandfrei.

von Oliver S. (eragon)


Angehängte Dateien:

Lesenswert?

Oke nun hab ich ein neues Problem.

System ist immer noch das selbe:
Apache/2.2.16 (Debian)
MySQL-Client-Version: 5.1.61
PHP Erweiterung: mysqli
Server Version: 5.1.61-0+squeeze1


Wenn ich aber nun mit IE (Version 8) ein Bauteil erstellen will kpallt 
alles bis ich auf bauteil hinzufügen klicke. Dan öffnen sich 2 Popups. 
Siehe Screenshot.

Das Bauteil ist erstellt. Aber ich muss einfach manuel alle Fenster 
schliessen.

Kann man da was anderes dagegen tun als Firefox zu nutzen? ^^

von b.r (Gast)


Lesenswert?

Oliver Schmutz schrieb:
> Wenn ich aber nun mit IE (Version 8) ein Bauteil erstellen will kpallt
> alles bis ich auf bauteil hinzufügen klicke. Dan öffnen sich 2 Popups.
> Siehe Screenshot.

Ich kann jetzt gerade nicht mit dem IE testen. Aber für mich sieht es so 
aus, als wenn da eine Sicherheitseinstellung des IE zuschlägt.

Alternativ könntest Du mal die Einstellung
1
$use_modal_dialog = false;
in der config.php ausprobieren.

Grüße
b.r

von Oliver S. (eragon)


Lesenswert?

b.r schrieb:



> Alternativ könntest Du mal die Einstellung$use_modal_dialog = false;
> in der config.php ausprobieren.

hab ich gemacht. Das Problem schein gelöst. Nur wird nach einem 
erstellen der Bauteile die Übersicht nicht automatisch aktualisier d.h 
das neu erstellte bauteil ist erst nach einem manuelen Refresh sichtbar.

Vielen dank aber shonmal für die schnelle Antwort.

Gruss Oliver

P.S.

> Ich kann jetzt gerade nicht mit dem IE testen. Aber für mich sieht es so
> aus, als wenn da eine Sicherheitseinstellung des IE zuschlägt.

Werd ich auch noch ausprobieren.

von Oliver S. (eragon)


Lesenswert?

Oliver Schmutz schrieb:
> Werd ich auch noch ausprobieren.

Irgendwie krieg ich das mit IE nicht hin. Allen Securitiy Schrott 
abgestellt...aber trotzdem funktioniert das nicht.

von Gelöscht (kami89)


Lesenswert?

Das selbe konnte ich mit dem IE auch feststellen, und ich fand auf die 
Schnelle auch gerade keine Einstellung die das beheben könnte.

Was ich aber noch gemerkt habe, ist dass man beim Erstellen eines neuen 
Bauteiles mit dem IE mit dem Tabulator vom "Lagerbestand" zum 
"Min.Bestand" switchen kann. Komischerweise funktioniert das bei meinem 
Firefox 11 nicht.

Vom ersten Feld zum zweiten, das gaht. Aber vom zweiten zum dritten geht 
nicht mehr. Ist das nur bei mir so oder habt ihr das Problem auch?

Ich bin mir ziemlich sicher dass es mal funktioniert hat. Aber ob nun 
ein Update von Part-DB, von Firefox oder von Sonstwas das Problem 
verursachte, das kann ich nicht sagen.

mfg

von b.r (Gast)


Lesenswert?

Urban B. schrieb:
> Vom ersten Feld zum zweiten, das gaht. Aber vom zweiten zum dritten geht
> nicht mehr. Ist das nur bei mir so oder habt ihr das Problem auch?
Ja. Habe ich auch schon festgestellt.

> Ich bin mir ziemlich sicher dass es mal funktioniert hat. Aber ob nun
> ein Update von Part-DB, von Firefox oder von Sonstwas das Problem
> verursachte, das kann ich nicht sagen.
Ich meine, es ist entstanden, als bei den Eingabefeldern ein JavaScript 
(zur Prüfung) hinterlegt wurde.

Ich habe leider momentan keine Zeit das näher zu untersuchen.

Grüße
b.r

von Oliver S. (eragon)


Lesenswert?

Oliver Schmutz schrieb:
>> Alternativ könntest Du mal die Einstellung$use_modal_dialog = false;
>> in der config.php ausprobieren.
>
> hab ich gemacht. Das Problem schein gelöst. Nur wird nach einem
> erstellen der Bauteile die Übersicht nicht automatisch aktualisier d.h
> das neu erstellte bauteil ist erst nach einem manuelen Refresh sichtbar.

Update:
Wenn ich die Einstellung : $use_modal_dialog = false; verwende wird bein 
nlegen bzw löschen eines Bauteils in Firefox im hintergrund ein fals 
eingeblendet.

Nun hab ich dazu wie auch schon weiter oben "André Althaus (nummer5) " 
in der popup.php in dr else schliefe ein "location.reload(true);" 
hinzugefügt.
Jetzt verhalten sich zumindest FF und IE gleich.

Das Problem mit dem Refresh besteht aber immer noch.

P.S. Weis jemand wie ich Datenblätter auf einem Ext File Server 
einbinden könnte?

file://///<Server Adresse>/Datasheets/1-Wire_ICs/DS28E04-100.pdf 
funktioniert nicht.
Normal im FF geöffnet funktioniert der link

von b.r (Gast)


Lesenswert?

Oliver Schmutz schrieb:
> file://///<Server Adresse>/Datasheets/1-Wire_ICs/DS28E04-100.pdf
> funktioniert nicht.
> Normal im FF geöffnet funktioniert der link
Das Problem hatte ich auch schon. Es erfordert eine Änderung in den 
Firefox-Einstellungen:
http://www.techlifeweb.com/firefox/2006/07/how-to-open-file-links-in-firefox-15.html

Grüße
b.r

von André A. (nummer5) Benutzerseite


Lesenswert?

In den Textfeldern für Zahlen geht die Backspace-Taste nicht. In der 
Validate-Funktion wird leider nur auf [0-9] und '.' getestet.

Ich würds auch gut finden, wenn man bei den Preisen ein Komma eingeben 
könnte, das müsste beim schreiben in die DB dann automatisch in einen 
Punkt umgewandelt werden.

Da Problem mit der Tabulatorreihenfolge hab ich auch. Und das Update der 
Übersichtseite beim anlegen neuer Teile geht bei mir auch nicht richtig.

Wenn ich am Wochenende neue Teile eingebe nervt es mich vielleicht genug 
um es mir mal anzuschauen.

von b.r (Gast)


Lesenswert?

André Althaus schrieb:
> In den Textfeldern für Zahlen geht die Backspace-Taste nicht. In der
> Validate-Funktion wird leider nur auf [0-9] und '.' getestet.
>
> Ich würds auch gut finden, wenn man bei den Preisen ein Komma eingeben
> könnte, das müsste beim schreiben in die DB dann automatisch in einen
> Punkt umgewandelt werden.
Ich hab mal versucht das zu verbessern (Revision 422). Aber so richtig 
super finde ich das validateNumber-script noch nicht.

Grüße
b.r

von b.r (Gast)


Lesenswert?

Hallo part-db Nutzer!

Ich habe jetzt ein Update/Datenbankupdate auf die neuen Footprints 
gemacht: Revision 427

Damit werden die Footprints in der Datenbank auf die neuen Namen 
geändert. Wer das nicht will, muß das automatische Update ausschalten.
Außerdem empfehle ich vorher ein Backup der Datenbank zu machen.
Das Umbennenen funktioniert natürlich nur, wenn die Originalnamen der 
Footprints nicht verändert wurden.

Zu folgenden (alten) Footprints habe ich keinen neuen (bzw. keinen 
eindeutigen) Footprint gefunden:
1
TO220-3VX
2
TO3-3
3
TO52A
4
SIL
5
MULTIWATT15H
6
RJ45
7
MB4S
8
MB6S
9
MODULAR215875-3
10
MODULAR215876-6
11
MODULAR215876-7
12
MODULAR215877-4
13
MODULAR215877-7
14
MODULAR215878-2
15
MODULAR555140-1
16
MODULAR555140-2
17
MODULAR555153-1
18
MODULAR555154-1
19
MODULAR555154-2
20
MODULAR555162-1
21
MODULAR555163-1
22
MODULAR555163-2
23
MODULAR555164-1
24
MODULAR555165-1
25
MODULAR555165-2
26
MODULAR555165-3
27
MODULAR555165-5
28
MODULAR555166-1
29
MODULAR555167-1
30
MODULAR555167-2
31
LSP11
32
LSP13
33
LED-2x1
34
LED-2x5
35
HC49S
36
15KA
Diese bleiben daher unverändert. Natürlich auch alle selbst angelegten 
Footprints (zumindest solange, wie es keinen alten Footprint mit 
gleichem Namen gibt.)

Die alten (kleinen) Footprints habe ich ins Verzeichnis zzz_obsolet 
verschoben.

Vielen Dank nochmal an Urban B. für die vielen neuen (und wie ich finde 
auch schönen) Footprints.

Grüße
b.r

von Gelöscht (kami89)


Lesenswert?

b.r schrieb:
> André Althaus schrieb:
>> In den Textfeldern für Zahlen geht die Backspace-Taste nicht. In der
>> Validate-Funktion wird leider nur auf [0-9] und '.' getestet.
>>
>> Ich würds auch gut finden, wenn man bei den Preisen ein Komma eingeben
>> könnte, das müsste beim schreiben in die DB dann automatisch in einen
>> Punkt umgewandelt werden.
> Ich hab mal versucht das zu verbessern (Revision 422). Aber so richtig
> super finde ich das validateNumber-script noch nicht.

Na, jetzt geht das Eingeben doch schon wieder viel entspannter, der 
Fehler mit dem Tabulator hat mich schon einige Nerven gekostet :-) 
Danke!

b.r schrieb:
> Ich habe jetzt ein Update/Datenbankupdate auf die neuen Footprints
> gemacht: Revision 427

OK sieht soweit ganz gut aus. Aber die "Kurznamen" für die Footprints 
werden dann schon auch noch eingeführt oder? Momentan sind die 
Footprintnamen ziemlich hässlich und lang :-) Für die Kurznamen habe ich 
ja extra den underscore in die Dateinamen eingebaut, um wenigstens bei 
den meisten Footprints gleich einen vernünftigen Kurznamen automatisch 
erzeugen zu können (alles hinter dem underscore).

b.r schrieb:
> Vielen Dank nochmal an Urban B. für die vielen neuen (und wie ich finde
> auch schönen) Footprints.
Kein Problem! Kann ich nur zurückgeben. Und natürlich hat K.J. auch 
einen wichtigen Teil der Arbeit übernommen, um eagle3d zu bedienen war 
ich irgendwie zu dumm ;-)

Gruss
Urban

von b.r (Gast)


Lesenswert?

Urban B. schrieb:
> OK sieht soweit ganz gut aus. Aber die "Kurznamen" für die Footprints
> werden dann schon auch noch eingeführt oder? Momentan sind die
> Footprintnamen ziemlich hässlich und lang :-) Für die Kurznamen habe ich
> ja extra den underscore in die Dateinamen eingebaut, um wenigstens bei
> den meisten Footprints gleich einen vernünftigen Kurznamen automatisch
> erzeugen zu können (alles hinter dem underscore).
Hmm. Da müssen wir uns nochmal ein gescheites Konzept überlegen.
Mir sind die Namen auch zu lang. Und den Underscore habe ich bestimmt an 
einigen Stellen kaputtgemacht.

Also nochmal die Ausgangslage:
1. Wir haben einen (großen) Haufen Footprintbilder (obwohl inzwischen 
Decals besser passen würde).
2. Wir haben eine Datenbank, die per Namen auf (1.) referenziert.
3. Die Datenbank ist erst seit neuestem hierarchisch strukturierbar.
4. Nutzer haben möglicherweise eigene Vorstellungen von der Hierarchie.
5. Nutzer haben möglicherweise eigene Vorstellungen von den zu verwenden 
Footprints.
6. Neue Features sollen möglichst abwärts und nutzerkompatibel (zu 4. & 
5.) bleiben.

Ich sehe das alles noch nicht so recht zusammengehen...

Grüße
b.r

von b.r (Gast)


Lesenswert?

Urban B. schrieb:
> Du hast aber die Footprints schon auch angelegt oder? Die
> Footprint-Bilder sind nicht automatisch auch als Footprints in der
> Datenbank aufgelistet.
Um einen Footprint aus der großen Liste in die Datenbank zu übernehmen, 
genügt es das kleine Häckchen neben dem Namen zu setzten...

Grüße
b.r

P.S.: Umgekehrt funktioniert es natürlich auch.

von b.r (Gast)


Lesenswert?

André Althaus schrieb:
> Mich hatt es gestört, dass ich die Datanblätter nicht vom aktuellen
> Rechner hochladen konnte, sodass ich den Code in Anlehnung an die Bilder
> umgeändert habe, so dass man zusätzlich Datenblätter in den Ordner
> hochladen kann der in der config.php als datasheet_path angegeben ist.
> Es wäre bei den Datenblättern noch gut, wenn man einen Titel eingeben
> könnte (der orginale Dateiname würde meist schon reichen), vielleicht
> passe ich das noch an. (datasheet.patch)
Den Patch schau ich mir demnächst an, momentan hab ich erstmal genug von 
php und sql :-).

> Mir ist aufgefallen, dass beim löschen eines Bilder, die Bilddatei
> selber nicht gelöscht wird (bei den Datenblätter zur Zeit ebenso).
Wenn die Datei mit gelöscht werden soll, wäre die lib.php der richtige 
Ort.
Ich hatte auch schon überlegt ein paar "Aufräum"-Funktionen zu entwerfen 
(Suche nach nicht verwendeten Bildern, Suche nach Bauteilen ohne gültige 
Kategorie etc.pp)

> Ich hoffe dies ist der richtige Ort für Bug-/Request-Meldungen.
Ja :-)

Grüße
b.r

von Gelöscht (kami89)


Lesenswert?

b.r schrieb:
> Also nochmal die Ausgangslage:
> 1. Wir haben einen (großen) Haufen Footprintbilder (obwohl inzwischen
> Decals besser passen würde).
> 2. Wir haben eine Datenbank, die per Namen auf (1.) referenziert.
> 3. Die Datenbank ist erst seit neuestem hierarchisch strukturierbar.
> 4. Nutzer haben möglicherweise eigene Vorstellungen von der Hierarchie.
> 5. Nutzer haben möglicherweise eigene Vorstellungen von den zu verwenden
> Footprints.
> 6. Neue Features sollen möglichst abwärts und nutzerkompatibel (zu 4. &
> 5.) bleiben.
>
> Ich sehe das alles noch nicht so recht zusammengehen...

Ja, es ist nicht einfach :-)

Ich werfe mal meine (eher spontanen) Gedanken in den Raum:
- Es gibt genau einen einzigen Ordner für jegliches Bildmaterial, 
Datenblätter usw., welcher Uploadrechte besitzt. Sonst darf man 
nirgendwohin etwas uploaden. In einem Unterordner kommen (quasi als 
default) die Footprints rein. Der Benutzer kann aber in diesem 
"Hauptordner" (ich nenne ihn ab jetzt so) alles so einrichten wie er es 
möchte, es werden keine Einschränkungen oder Vorgaben gemacht aus 
unserer Seite.
- Bei allen Arten von Uploads kann dann der User in diesem Ordner 
auswählen, wohin die Datei gespeichert werden soll. Es gibt dann für den 
Programmierer keinen Unterschied, ob es nun ein PDF, PNG oder was auch 
immer ist.
- Im Hauptordner und all dessen Unterordner sollen alle Dateinamen 
eindeutig sein. Es müsste also beim Upload direkt eine Fehlermeldung 
erscheinen wenn bereits eine gleichnamige Datei vorhanden ist. So darf 
man später auch noch die Verzeichnisstruktur verändern, ohne dass die 
Funktionalität der Seite beeinträchtigt wird.
- Ein Datenbankeintrag eines Footprints besteht aus Dateiname und 
Anzeigename. Legt man einen neuen Footprint an, kann man optional als 
erstes eine Bilddatei aus dem Hauptordner auswählen, was dann dem 
Dateinamen entspricht (ohne Pfadangabe). Wählt man eine Datei, wird 
automatisch der Anzeigename ausgefüllt (alles hinter dem underscore). 
Wählt man kein Bild, dann schreibt man einfach nur den Anzeigenamen in 
das Feld und fertig. Dem Footprint ist dann ein optionaler Dateiname 
"IC_DIP20.png" und obligatorischer Anzeigename "DIP20" zugeordnet.
- Weil alle Dateien im Hauptordner eindeutige Namen haben, wird das Bild 
zum Footprint eindeutig über den Dateinamen "IC_DIP20.png" bestimmt.
- Der Anzeigename "DIP20" wird überall zur Anzeige verwendet. Der 
Anwender soll den Dateinamen grundsätzlich nie zu Gesicht bekommen.
- Die Hierarchie der Footprints legt der User selber fest, indem er 
einfach "Dummy"-Footprints (ohne Dateiname) anlegt (z.B. "DIP"). Dieser 
wird dann einfach als Parent genommen für die DIP20, DIP28 usw. So steht 
es dem User frei, ob er die gleiche Struktur haben will wie die 
Dateistruktur der Footprintbilder, oder ob er was anderes, oder sogar 
gar keine Hierarchie haben will.

So jetzt muss ich aber mal schlafen gehen, vielleicht kommt mir morgen 
noch was in den Sinn...

mfg

von K. J. (Gast)


Lesenswert?

Hi, wie wehre es mal die Obsoleten Bilder zu löschen, die werden nicht 
gebraucht und das System wird elendig Langsam, bei Grösseren Kategorien 
hab ich da meist das PHP Länger als 30sec braucht und daher sich selber 
beendet.

von b.r (Gast)


Lesenswert?

K. J. schrieb:
> Hi, wie wehre es mal die Obsoleten Bilder zu löschen, die werden nicht
> gebraucht und das System wird elendig Langsam, bei Grösseren Kategorien
> hab ich da meist das PHP Länger als 30sec braucht und daher sich selber
> beendet.
Das liegt auch ein bischen an den Workarounds, die ich wegen der älteren 
php-Version machen musste. Ich schau mir das nochmal an, vielleicht kann 
man da auch noch etwas optimieren.

Die alten Bilder kommen raus, wenn das mit den neuen Bildern 100%ig 
klappt.

Grüße
b.r

von b.r (Gast)


Angehängte Dateien:

Lesenswert?

Ich hab mal noch eine neue Spalte "Beschreibung" hinzugefügt.

Gerade bei Schaltkreise ist das recht praktisch, da so u.a. die Suche 
nach Datenblättern bei DC und Reichelt wieder funktioniert.

Grüße
b.r

P.S.: @Urban B. schick mir mal bitte Deine Telefonnummer oder Deinen 
skype-Namen, damit wir das mit den Footprints geklärt bekommen :-)

von Gelöscht (kami89)


Lesenswert?

b.r schrieb:
> Ich hab mal noch eine neue Spalte "Beschreibung" hinzugefügt.
>
> Gerade bei Schaltkreise ist das recht praktisch, da so u.a. die Suche
> nach Datenblättern bei DC und Reichelt wieder funktioniert.

Super Idee!

> P.S.: @Urban B. schick mir mal bitte Deine Telefonnummer oder Deinen
> skype-Namen, damit wir das mit den Footprints geklärt bekommen :-)

Telefonnummer besser nicht, ich wohne in der Schweiz, das würde teuer 
werden :-) Skype habe ich, Name ist "u r b a n - b r u h i n" (ohne 
Leerschläge natürlich)

mfg

von JSachs (Gast)


Lesenswert?

Wo ist eigentlich die Textdatei mit den ToDo's im SVN gelandet ?
Kann mir da mal einer den "link" dazu schicken...

Gruss
Juergen

von JSachs (Gast)


Lesenswert?

Ich habe die Datei gefunden, die liegt nicht im trunk, sondern eine 
Ebene höher....

Da ich nur mit dem Inhalt des Trunk arbeite, sehe ich die so nicht. 
Würde etwas dagegen sprechen, diese in den Trunk zu verschieben ?

Danke und Gruss
Juergen

von b.r (Gast)


Lesenswert?

JSachs schrieb:
> Würde etwas dagegen sprechen, diese in den Trunk zu verschieben?
Nö. Schon geschehen :-)

Grüße
b.r

von Christian R. (holle)


Lesenswert?

Super Sache, dieses Projekt!
Genau das habe ich gesucht, aber leider habe ich noch ein paar kleine 
Probleme.
Zum einen bekomme ich eine Fehlermeldung wenn ich auf "Import" klicke:
"Parse error: syntax error, unexpected T_VARIABLE in 
/www/htdocs/xxxxxxx/part-db/import.php on line 307"

Die Footprints wurden erst nicht angezeigt, erst als ich die Rechte auf 
777 gesetzt habe ging es ...das gleiche mit den Datenblättern. 
Schreibrechte für User sind hier doch nicht notwendig, oder?
Naja, zumindest funktioniert .htaccess , somit ist das nicht ganz so 
tagisch.

Die Spalte mit der Beschreibung erscheint bei mir nicht. Ich kann zwar 
eine Beschreibung angeben wenn ich ein Bauteil anlege, aber die Spalte 
in der Tabelle fehlt. Ich meine das hier:

b.r schrieb:
> Ich hab mal noch eine neue Spalte "Beschreibung" hinzugefügt.
>
> Gerade bei Schaltkreise ist das recht praktisch, da so u.a. die Suche
> nach Datenblättern bei DC und Reichelt wieder funktioniert.

Ich bin mir nicht ganz sicher ob ich die aktuellste Version habe, wo 
bekomme ich die aktuellste her?

Gruß, Christian

von K. J. (Gast)


Lesenswert?

Hi entweder du ziehst sie dir aus dem SVN ansonsten hab ich heute ein 
neues Release fertig gemacht:

Part-DB-0.2.2: 
http://code.google.com/p/part-db/downloads/detail?name=Part-DB-0.2.2.tar.gz&can=2&q=

Part-DB-0.2.2 Neue Footprints (bessere Sortierung neue Skalierung dafür 
sch.. Namen): 
http://code.google.com/p/part-db/downloads/detail?name=PartDB-0.2.2-FP-Neu.tar.gz&can=2&q=

Part-DB-0.2.2 Alte Footprints (keine Sortierung schlechtere Skalierung 
dafür anständig benannt): 
http://code.google.com/p/part-db/downloads/detail?name=Part-DB-0.2.2-FP-Alt.tar.gz&can=2&q=

Bei den FP sollte umbedinkt noch was rein um Per Datenbank Bilder zu 
FP-Namen zuordnen zu können.

von Christian R. (holle)


Lesenswert?

OK, habe nun gesehen dass meine Version völlig veraltet ist. Es ist zwar 
die aktuellste die in "Download" aufgeführt ist, aber anscheinend wurde 
schon lange kein neues Paket mehr geschnürt ;-)

Ich lade mir dann mal die Dateien aus dem Trunk-Ordner runter.

Nun habe ich aber doch gleich noch eine andere Frage:
Die Stückzahl ist ja sehr sinnvoll, aber die Mindestmenge ist für mich 
selber eher unrelevant. Kann man die Mindestmenge irgendwo abschalten, 
also so dass diese nicht mehr angezeigt wird wenn da 0 drin steht (oder 
allgemein gar nicht mehr angezeigt wird)?


Dann habe ich einen Vorschlag zum Bauteilpreis:
Es wäre nützlich wenn man den Preis abhängig vom Lieferant eingeben 
könnte.
Also z.B. so:
Bauteil X kostet bei Pollin 1,50 Euro , bei Reichelt kostet dieses 2,50 
Euro, bei Conrad 3,00 Euro.
Wenn man nun die Preise in Abhängigkeit zum Lieferanten anzeigen lassen 
kann hätte das den Vorteil dass ich direkt sehe ab wieviel Stück sich 
eine "separate" Lieferung lohnen würde. Also wenn ich bei Reichelt 
Bauteile kaufe, die ich bei Pollin nicht bekomme und Bauteil X für 1 
Euro mehr / Stück mit bestelle ist das günstiger als wenn ich diese 
extra bei Pollin kaufe und dafür aber doppelte Versandkosten habe.
Wenn man dann noch den Preis zum jeweiligen Lieferanten verlinkt wäre 
das noch besser, also wenn ich auf die 2,50 Euro bei Reichelt klicke 
sollte ich direkt auf der Artikelseite bei Reichelt landen.
Ist das machbar?

Noch ein Vorschlag:
Könnte man "Benutzer" anlegen? Ich denke da an sowas:
User 1 hat den Webserver und Part-DB
User 2 nutzt die gleiche Datenbank (aktualisiert Preise, verlinkt 
Datenblätter, usw.)
Beide User haben jedoch ihr eigenes "Lager" und deshalb hat man zwar die 
gemeinsame Datenbank (Bauteil-Daten, Lieferanten-Daten, Datenblätter, 
usw.), jedoch hat jeder User sein eigenes Lager. Die Lagerdaten würden 
dann also in Abhängigkeit davon angezeigt wer eingeloggt ist.
Geht sowas?

Sorry, falls es das eine oder andere schon gibt (oder durch eine andere 
Änderung sinnlos wäre), da ich noch die Uralt-Version habe kann ich das 
(noch) nicht sehen.

Ach ja, es wäre hilfreich wenn es mal ein neues Paket im 
Download-Bereich geben würde, damit kommende User nicht das gleiche 
Problem haben wie ich ;-)

Vielen Dank,
Christian



Edit: Hoppla, habe deinen Beitrag übersehen da ich noch nicht 
aktualisiert hatte.
Vielen Dank für die schnelle Hilfe.

von Christian R. (holle)


Lesenswert?

So, habe nun die neue Version installiert und nun ist auch das 
Beschreibungsfeld vorhanden.
Auf der Startseite sehe ich aber noch einen Fehler:

>Warning: shell_exec() has been disabled for security reasons in 
/www/htdocs/XXXXXXX/part-db/lib.php on line 518

Es scheint aber dennoch alles zu funktionieren.
Muss ich noch irgendetwas freigeben?

von K. J. (Gast)


Lesenswert?

Christian R. schrieb:

>
>>Warning: shell_exec() has been disabled for security reasons in
> /www/htdocs/XXXXXXX/part-db/lib.php on line 518
>

Würde spontan auf PHP-Savemod tippen, das ist nur für die SVN Version 
anzeige kannst also die beiden Zeilen 518 und 519 entfernen, wen es dich 
stört.

von Christian R. (holle)


Lesenswert?

Danke, habe die beiden Zeilen auskommentiert, nun passt alles.

Habe noch einen weiteren Verbesserungsvorschlag:
Eine Sortierfunktion für die Ansicht der Bauteilkategorie.
Also wenn man auf Name/Beschreibung/Vorhanden/Lagerort klickt, sollte 
die Anzeige der Bauteile demnach sortiert dargestellt werden.

Ist nicht weiter wichtig, aber wenn man viele Bauteile eingepflegt hat 
würde es einen die Übersicht erleichtern.

Beispiel: Wenn ich alle meine Elkos eintrage und nun einen Überblick 
will zwischen welchen Werten zu große Lücken sind, dann könnte ich das 
leicht erkennen, indem ich nach Beschreibung sortieren (zumindest wenn 
ich da die Werte eingetragen habe).
Weiteres Beispiel: Ich habe eine Sortimentskiste (z.B. Lagerort= Fach 1 
- Fach 50) , welche mir hin fällt und alle Bauteile in einem großen 
Haufen verteilt liegen. Nun müsste ich jedes Fach einzeln aufrufen (oder 
alternativ jedes Bauteil), aber mit der Sortierfunktion sehe ich auf 
einen Schlag welche Bauteile wohin gehören.

Auf jeden Fall ist Part-DB so schon absolut genial. Vielen Dank an alle 
die daran mitgewirkt haben!

von Markus H. (unatar)


Lesenswert?

Hallo,

vor ein paar Tagen dachte ich mir ich müsste mal ne Datenbank anfangen 
um meine Bauteile zu verwalten.
Dann kam mir der Gedanke: Alle Projekte die ich bisher angefangen habe, 
hat schon jemand anderes viel besser programmiert. (Und so war es auch).
Nach kurzer Suche bin ich auf die Part-DB gestossen.
Super Sache!!! Nachdem ich die Version 0.2.1 installiert hatte und ein 
paar kleiner Bug's beseitigt hatte, (z.B. Darstellung der Umlaute) kam 
die Version 0.2.2 heraus.
Was soll ich Sagen? Spitze!!! Alle Bug's die mir bis dahin aufgefallen 
waren, wurden ausnahmslos ausgemerzt.

In der Version 0.2.2 exportiert die Datenbank allerdings Zeilenumbrüche 
im Bauteil-Kommentar als neue Zeile im CVS.
Dies kann durch folgenden Code in der export.php Zeile 80 behoben 
werden.

$dbrow = str_replace("\r\n", " ", $dbrow);
$CSVDoc .= implode( ";", $dbrow) . "\n";

Zeilenumbrüche werden hier duch ein Leerzeichen ersetzt.
Beim Import ist es mir allerdings noch nicht gelungen die Zeilenumbrüche 
wieder einzufügen. Was erstmal nicht weiter störend ist.

Danke an alle beteiligten, für die gute Arbeit.

von Christian R. (holle)


Lesenswert?

Wäre es ein großer Aufwand eine Benutzerverwaltung einzubauen?
Wenn man eine Benutzerverwaltung hatte könnte man folgendes realisieren:

Ich stelle den Webspace für eine Parts-DB-Datenbank. In dieser Datenbank 
werden alle denkbaren Footprints und Kategorien angelegt. Mit der Zeit 
würde auch das Bauteilspektrum anwachsen, alle bereits mit einem 
Datenblatt verlinkt. Jeder User könnte darauf zugreifen.
Die Benutzerverwaltung wäre nun nötig, damit jeder Benutzer seine eigene 
Lager-Datenbank anlegen kann. Das Kommentar-Feld wäre auch 
Benutzer-spezifisch sinnvoll.

Auf diese Weise könnte das jeder User nutzen, ohne dass man Webspace 
benötigt (bzw. ohne einen Webserver auf dem heimischen PC installieren 
muss). Die mühevolle Arbeit alle Daten einzutragen (Datenblatt, Preis, 
Footprint, Beschreibung) würde entfallen und man bräuchte lediglich die 
Stückzahl eintragen.

Damit nicht irgendjemand einfach alles zerstören kann wäre es halt nötig 
dass nur bestimmte Personen Daten eingeben können (abgesehen von den 
Benutzer-spezifischen Daten). Vielleicht könnte man das auch so machen 
dass ein Benutzer eigene Daten anlegen kann, welche nach einer 
Überprüfung in die globale Datenbank übernommen werden.

Wenn das ohne großen Aufwand möglich ist würde ich wie gesagt den 
Webspace zur Verfügung stellen und denjenigen Vollzugriff darauf geben 
die derzeit auch schon daran arbeiten. Das "Entwickler-Team" müsste dann 
selber entscheiden an wen sie die Zugangsdaten weitergibt.
Dem Projekt würde ich sogar einen eigenen Domainnamen spendieren (frei 
wählbar, sofern noch verfügbar)

Bin auf eure Antworten gespannt :-)

von K. J. (Gast)


Lesenswert?

Naja das ist alles nicht so einfach voralledem kostet es zeit momentan 
sind nicht viele Entwikler Aktiv, ich hab selber momentan keine Zeit 
dafür ich mach nur Kleinkram der mir grade bei der Inventur auffehlt, 
ein USER System ist recht aufwendig.

Aber tu dir keinen zwang an so eins zu schreiben ;)

von Christian R. (holle)


Lesenswert?

Leider kenne ich mich mit PHP nicht sonderlich aus.
Gibt es da keine "fertige Usersysteme", die man einfach einbinden kann?

Mir ist übrigens ein Fehler aufgefallen:
Wenn ich einen Footprint umbenenne, dann wird der nicht mehr angezeigt. 
Erst wenn die die Bild-Datei genauso nenne wird der wieder angezeigt.
Oder soll das so sein? Ich fände es praktischer wenn man einfach nur den 
Namen ändern kann, und trotzdem weiterhin auf das bereits verknüpfte 
Bild zugegriffen wird, weil man ja nur "umbenennt" und kein "neues 
auswählt".
Das ist nicht tragisch, weil man es ja umgehen kann, aber es wäre 
einfacher als die Bilder selber umzubenennen.
Was ich auch nützlich finden würde, wenn man ein Bild auswählt (z.B. ein 
LQFP64) und dieses dann bei einem Bauteil TQFP64 nennen kann und bei 
einem anderem Bauteil weiterhin LQFP64. Es gibt ja einige Bauteile bei 
denen man den Unterschied nicht direkt sieht, sprich wo das Bild gleich 
aussieht aber dennoch ein anderer Part-Name richtig wäre (z.B. Bauteile 
mit Heatsink-Anschluss auf der Unterseite).

Die Möglichkeit mehrere Preise einzugeben (z.B. wie bei den 
Datenblätten, da kann man ja auch mehrere eintragen) wäre auch sehr 
nützlich.
Also z.B. so:
Lieferant  Bestellnummer Preis
Pollin       170 041     0,25
Reichelt   µA 78S05     0,41
Völkner      Q38716      0,61
Conrad    156048-62    0,61

von K. J. (Gast)


Lesenswert?

Hi, ja das mit den FP ist in Planung über die Datenbank, bei Gelegenheit 
wird das kommen.

Das mit den Preisen, ist mir auch schon aufgefallen mal schauen wan ich 
zeit dafür finde.

von Udo N. (weinbauer73)


Lesenswert?

Hi :-)

Ich habe gerade in einem anderen Thread gelesen, das hier im Projekt 
eventuell noch Hilfe gebraucht wird? PHP ist mir nicht unbekannt und 
eine Bestandsdatenbank damit aufbauen hab ich auch schon gemacht (im 
Bereich Chemie). Bisher hatte ich nur bei EleLa das Packen eines RPMs 
übernommen.

Grüße
Udo

von Gelöscht (kami89)


Lesenswert?

Wow, mein Hinweis hat sogar was gebracht :-D

Hast du die Part-DB mal installiert und ausprobiert?

Cool wäre wenn du es hinkriegen würdest, eine Benutzerverwaltung zu 
bauen. Also so, dass man dann Part-DB auf dem Webspace eines Hosters 
installieren kann, und sich per Benutzername und Passwort einloggen 
muss. Auch sollen verschiedene Benutzer auf die gleichen Bauteile 
zugreifen können, jedoch mit separaten Lagerorten (siehe die letzten 
paar Beiträge hier).

Ziemlich grosser Aufwand das ganze, und ich weiss nicht wie viel 
Erfahrung du mit PHP hast. Ist das zu schwierig für dich, oder würdest 
du das hinkriegen? Ansonsten müssen wir schauen was du noch machen 
könntest. So viel ich weiss gibt es momentan keine gescheite TODO-Liste 
(?). Eigentlich könnte ich so eine Liste mal in Angriff nehmen, das 
sollte momentan eigentlich drinliegen von der Zeit her.

Auf jedenfall schonmal Danke dass du dich gemeldet hast :-)

mfg

von Udo N. (weinbauer73)


Lesenswert?

Ich hab mir die letzte Version noch nicht runtergeladen, hatte heute 
erstmal eine Display-Ansteuerung zum Laufen zu bringen. Werde ich mir 
aber die Tage mal anschauen und dann sehe ich, ob ich euch in Sachen 
Userverwaltung helfen kann.

Grüße
Udo

von Gelöscht (kami89)


Lesenswert?

So, ich habe mal angefangen den Artikel zu Part-DB etwas zu 
überarbeiten.

Was ich bisher gemacht habe:
* Aufzählung "Funktionen" mal auf den neusten Stand gebracht
* Aktuellere + Neue Screenshots hochgeladen
* TODO-Liste umstrukturiert/erneuert

Es wird bestimmt noch mehr folgen, muss erstmal hier nochmal ein 
bisschen nachlesen was da noch alles für Ideen genannt wurden.

Zum Artikel gehts hier: 
http://www.mikrocontroller.net/articles/Part-DB_RW_-_Lagerverwaltung

@Udo
Falls das mit der Benutzerverwaltung etwas zu aufwändig ist, darfst du 
dir natürlich auch etwas anderes aus der TODO-Liste auswählen ;-) 
Deshalb arbeite ich ja an dieser TODO-Liste, so hat man mal einen 
Überblick über die genannten Ideen/Verbesserungsvorschläge. Eine hohe 
Priorität hätte auch die Änderung bei den Footprints, ich weiss jetzt 
aber nicht ob K.J. das lieber selber machen will, er kennt halt das 
ganze System schon ganz gut. Für die Benutzerverwaltung fühlt sich halt 
noch niemand verantwortlich :-D

Gruss
Urban

von b.r (Gast)


Lesenswert?

Christian R. schrieb:
> Die Stückzahl ist ja sehr sinnvoll, aber die Mindestmenge ist für mich
> selber eher unrelevant. Kann man die Mindestmenge irgendwo abschalten,
> also so dass diese nicht mehr angezeigt wird wenn da 0 drin steht (oder
> allgemein gar nicht mehr angezeigt wird)?
Das Feature hab ich mir auch schon immer mal gewünscht.
Ist jetzt drin: SVN Revision 442.

Du mußt Deine config.php mit dem folgenden Eintrag aktualisieren:
1
    /* hide minimum in stock in table views */
2
    $hide_mininstock = true;

Grüße
b.r

von K. J. (Gast)


Angehängte Dateien:

Lesenswert?

Hab mich mal um die Icons gekümmert was meint ihr ?

von Gelöscht (kami89)


Lesenswert?

K. J. schrieb:
> Hab mich mal um die Icons gekümmert was meint ihr ?

Schaut ja ganz gut aus, aber kann man das auch noch problemlos erkennen 
wenn die Icons so klein sind dass sie in die Tabelle passen?

Noch eine andere Idee:
Könnte man theoretisch die ganzen Konfigurationsmöglichkeiten statt in 
die config.php zu schreiben, nicht als Datenbankeinträge abspeichern? 
Das hätte den Vorteil, dass man die Einstellungen dann sehr bequem 
direkt auf der Einstellungs-Seite z.B. per Checkbox setzen könnte. Dann 
braucht man nicht mehr an den PHP-Dateien herumzuwerkeln. Für später, 
wenn es die Benutzerverwaltung dann mal gibt, wäre das auch von Vorteil, 
weil man dann jedem Benutzer separate Einstellungen zuordnen könnte.

Wenn da niemand Einwände hat, nehme ich das noch in die TODO-Liste auf.

mfg

von Udo N. (weinbauer73)


Lesenswert?

Für benutzerdefinierte Einstellungen wäre ich auch. Allerdings muss man 
erstmal eine Benutzerverwaltung aufbauen. Frühstens am Sonntag kann ich 
mir das ganze anschauen. Die Konfiguration würde ich zudem nicht mit 
einzelnen Variablen machen, sondern in Arrays zusammenfassen, die 
thematisch zusammen gehören. Da bevorzuge ich XML, aber das muss man ja 
nicht jedem zumuten ;-)

Wird eigentlich eine Template-Engine verwendet? Ich habe es mir 
angewöhnt, Inhalt und Logik zu trennen. Gibt es Exportfunktionen? Excel 
und PDF kann ich beisteuern. Für den Datenaustausch zwischen Datenbank 
und Browser wäre Ajax sinnvoll, erspart auch wieder so einiges an HTML.

Nur mal zur Info, was bisher mein größtes Projekt war: 
http://chemdb.singollo.de/chemdb4/index.php (Zugang: Gast/Gast)
Die Weiterentwicklung ist leider auf Eis, da mittlerweile auf eine 
andere Software (nach meiner Meinung Schrott) Software gesetzt wird. 
Entwicklungen aus dem eigenen Haus wird ja nicht vertraut, lieber Geld 
ausgeben.

von Christian R. (holle)


Lesenswert?

b.r schrieb:
> Du mußt Deine config.php mit dem folgenden Eintrag aktualisieren:
>
1
>     /* hide minimum in stock in table views */
2
>     $hide_mininstock = true;
3
>
Vielen Dank, werde ich heute nach der Arbeit gleich mal testen :)

@K.J.
Das mit den Icons finde ich gut. Wenn man etwas nicht mehr erkennen kann 
wenn es zu klein ist empfehle ich die Favicons der jeweiligen Seite zu 
benutzen, da diese ja auf die kleine Größe zurechtgeschnitten sind.
Wenn man dann noch per MouseOver den Namen im Klartext angezeigt bekommt 
sind auch Verwechselungen ausgeschlossen.

@Urban
Genau das gleiche wollte ich auch schreiben :-)
In der Config.php brauchen eigentlich nur die Zugangsdaten zur 
Datenbank, den Rest kann man dann da auslesen.

@Udo
Hast du das komplett selber programmiert?
Wenn ja: Glückwunsch, ist meiner Meinung nach sehr gelungen.
...und dann kennst du dich ja schon mit der Benutzerverwaltung aus, also 
darf ich gleich eine Domain registrieren? ;-)

@All
Wie bereits versprochen würde ich den Webspace samt Domain stellen.
Habe mal einige Domains geprüft.
Also Part-DB.* ist noch frei, wenn niemand etwas dagegen hat würde ich 
die .de dann registrieren, oder wäre euch .info oder .org lieber (ich 
würde auch 2 Domains registrieren, wenn man sich nicht zwischen 2 
Domains entscheiden kann.
Was ansonsten noch alternative Domainnamen wären:
myparts.info , Part24.net/org/info/eu
...könnt euch ja schon mal Gedanken machen welcher Domainname euch am 
besten gefallen würde.

von Christian R. (holle)


Lesenswert?

@b.r
Danke für die "Bestandskorrektur" ;-)
Funktioniert einwandfrei.

von K. J. (Gast)


Lesenswert?

Christian R. schrieb:
> b.r schrieb:

> @K.J.
> Das mit den Icons finde ich gut. Wenn man etwas nicht mehr erkennen kann
> wenn es zu klein ist empfehle ich die Favicons der jeweiligen Seite zu
> benutzen, da diese ja auf die kleine Größe zurechtgeschnitten sind.
> Wenn man dann noch per MouseOver den Namen im Klartext angezeigt bekommt
> sind auch Verwechselungen ausgeschlossen.
>
Ja hast recht hab aber schon eine bessere Idee für DC gibt es kein Logo, 
setze mich morgen nochmal dran.

von Udo N. (weinbauer73)


Lesenswert?

Christian R. schrieb:
> @Udo
> Hast du das komplett selber programmiert?
> Wenn ja: Glückwunsch, ist meiner Meinung nach sehr gelungen.
> ...und dann kennst du dich ja schon mit der Benutzerverwaltung aus, also
> darf ich gleich eine Domain registrieren? ;-)

Ich habe das komplett alleine programmiert. Version 1 und 2 hatte ich 
noch Hilfe in der Erprobung und der Umsetzung der Rahmenbedingungen 
(Gesetze, Verordnungen, Richtlinien etc.). Ab V3 dann komplett alleine. 
Bis vor ein paar Monaten lief die Version 3 in einer RC-Variante (nur 
Adminbereich war nicht komplett und ein paar kleinere, eher unwichtige 
Bugs in der Bedienung). Die Version 4 setzt verstärkt auf das 
Dojo-Framework und implementiert die neuen EU-Richtlinien (GHS). Die 
Benutzerverwaltung dort ist quasi die Basis für mein eigenes CMS, 
welches ich allerdings nur noch sporadisch weiter entwickele.

Auf http://chemdb.singollo.de/index.php stehen die Features ;-)

von Gelöscht (kami89)


Lesenswert?

@Udo Neist
Respekt, sieht echt gut aus deine Chemikaliendatenbank! Du wärst 
bestimmt der richtige Mann für unsere Benutzerverwaltung :-D

@K.J / b.r
Momentan haben wir ja zwei TODO-Listen, eine im SVN und eine im Artikel. 
Ich denke es wäre besser wenn wir uns für eine der beiden entscheiden, 
sonst gibt das nur ein Durcheinander. Welche sollen wir nun 
weiterführen?

von JSachs (Gast)


Lesenswert?

Ich wurde die todo liste im SVN vorziehen..
Die kann so auch jeder Entwickler anpassen...

Gruss
Jürgen

PS die Tabelle für die Config gibt es ja schon.... :-)

von K. J. (Gast)


Lesenswert?

Urban B. schrieb:
> @K.J / b.r
> Momentan haben wir ja zwei TODO-Listen, eine im SVN und eine im Artikel.
> Ich denke es wäre besser wenn wir uns für eine der beiden entscheiden,
> sonst gibt das nur ein Durcheinander. Welche sollen wir nun
> weiterführen?

Mir eigentlich egal, mache momentan eh nur Kleinkram aus zeitmangel ich 
überlasse euch des.

von Markus H. (unatar)


Lesenswert?

K. J. schrieb:
> Hab mich mal um die Icons gekümmert was meint ihr ?

Die Icons sind nicht schlecht. Nur leider kann man sie so nicht mehr 
unterscheiden. In der Ansicht sind sie einfach zu klein.

Und wenn ich noch einen kleinen Wunsch äussern düfte.
In der fantastischen Footprint-Galerie fehlen die gelben LED's (Print 
und SMD). Ich habe mir zwar die "klaren" gelb gepinselt, allerdings 
würden sie im Original doch besser aussehen.

von Gelöscht (kami89)


Angehängte Dateien:

Lesenswert?

Markus H. schrieb:
> Und wenn ich noch einen kleinen Wunsch äussern düfte.
> In der fantastischen Footprint-Galerie fehlen die gelben LED's (Print
> und SMD). Ich habe mir zwar die "klaren" gelb gepinselt, allerdings
> würden sie im Original doch besser aussehen.

Stimmt, habe ich jetzt noch ergänzt. Könnte das bitte jemand ins SVN 
laden?
Übrigens habe ich die blauen, roten, gelben und sogar die transparenten 
Bilder von den roten LEDs abgeleitet, sind also auch nur durch 
Farbwertänderung mit GIMP entstanden ;-)

mfg

von Udo N. (weinbauer73)


Lesenswert?

Ich habe mir die config*.php-Files angeschaut und hab mich mit Graus 
abgewendet. Ich glaub, bevor ich mit der Benutzerverwaltung anfange, 
werde ich mal Code und HTML trennen und eine Template-Engine einbauen. 
Damit wirkt das ganze aufgeräumter. vlibTemplate ist da recht angenehm, 
da klein und nicht so aufgebläht wie Smarty. Die Konfiguration kann 
irgendwann sehr unübersichtlich werden, wenn man für jede Einstellung 
eine eigene Variable nimmt. Warum nicht alles mittels Arrays abbilden? 
Ist leichter zu lesen. Gerade im Fehlerfall sind beide Massnahmen ein 
deutlicher Vorteil.

Es sind zum Glück nicht soviele Dateien, die ich anpassen muss. Daher 
könnte ich das vielleicht in ein oder zwei Wochen umgestellt haben. Wenn 
ich soweit bin, stelle ich das mal als Zip-Archiv hier rein und ihr 
könnt entscheiden, ob ihr diese Variante übernehmen wollt. In wie weit 
ich Änderungen von euch übernehmen kann, hängt davon ab, ob ich eine 
Meldung bekomme, da ich nicht ständig das SVN-Repo abfragen kann.

Grüße
Udo

von Udo N. (weinbauer73)


Angehängte Dateien:

Lesenswert?

So, ich habe schonmal ein paar Dateien auf die vlibTemplate-Engine 
umgeschrieben und einen kleinen Teil der Konfiguration ebenso 
umgestellt. Im Anhang findet ihr mal einen Auszug der Änderungen. Die 
Kommentare sind teilweise in Deutsch, da mein Englisch nicht unbedingt 
das Beste ist.

von Markus H. (unatar)


Lesenswert?

Urban B. schrieb:

> Übrigens habe ich die blauen, roten, gelben und sogar die transparenten
> Bilder von den roten LEDs abgeleitet, sind also auch nur durch
> Farbwertänderung mit GIMP entstanden ;-)

Genial, hätte ich ja auch drauf kommen können. ;-)

von Gelöscht (kami89)


Lesenswert?

Urban B. schrieb:
> Übrigens habe ich die blauen, roten, gelben und sogar die transparenten
> Bilder von den roten LEDs abgeleitet,

hoppla, sollte natürich heissen: ...blauen, grünen, gelben,...
Ich hatte halt auch nur die roten zur Verfügung, bis auf die 
Transparenten war es aber ein Klacks einfach die Farbwerte zu ändern. 
Die transparenten waren etwas schwieriger, aber ich glaube man erkennt 
was es darstellen soll :-)

von Christian R. (holle)


Lesenswert?

So, ich habe nun eine Domain registriert. Da ich nicht sicher bin ob ich 
den Domain-Namen Part-DB registrieren durfte habe ich mich nun dafür 
entschieden:

myparts.info

Die Erreichbarkeit der Domain kann bis zu 2 Tage in Anspruch nehmen. 
Gleichzeitig bin ich bei meinem Hoster in ein größeres Paket gewechselt. 
Da durch diesen Wechsel ein Serverumzug nötig ist wird es ebenfalls 
etwas dauern.
Ich denke aber dass bis morgen Abend alles fertig sein sollte, so dass 
ihr das gleich für das Projekt nutzen könnt.
Das Einrichten (chmod, usw.) überlasse ich komplett euch (den aktiven 
Programmieren).
Eine Datenbank habe ich bereits eingerichtet.
Wenn zu Testzwecken weitere Datenbanken benötigt werden kann ich diese 
jederzeit einrichten, gebt mir einfach bescheid.
Ich wäre dafür dass wir das (später) "zweigleisig" aufbauen, einmal die 
nutzbare Version und parallel das gleiche als Entwicklungsumgebung. So 
kann man "testen" ohne dass irgendwelche Daten verloren gehen (sofern 
die Testumgebung eine eigene Datenbank nutzt).
Webspace und Traffic haben wir nun reichlich.

Sobald die Domain verfügbar ist schicke ich einen paar von euch die 
Zugangsdaten, welche ihr dann selbstständig an den anderen Entwicklern 
weitergeben könnt.
Wenn irgendetwas gebraucht wird (z.B. weitere Datenbanken, Cron-Jobs, 
oder weitere FPT-Zugangsdaten mit denen man nur auf bestimmte Bereiche 
zugreifen kann), dann lasst es mich wissen.

von Christian R. (holle)


Lesenswert?

Noch was...
Solltet ihr eine weitere Software haben wollen (z.b. ein eigenes Forum 
für die Entwickler, einen Blog wo die neusten Änderungen oder Wünsche 
gepostet werden, oder was auch immer), dann sprecht mich einfach an, ich 
werde versuchen alles umzusetzen was gewünscht wird.

von Christian R. (holle)


Lesenswert?

So, neues zu "myparts.info"
Die Domain ist bereits erreichbar. Der Serverumzug sollte heute morgen 
um 7 Uhr abgeschlossen sein.
Die Zugangsdaten (Datenbank und FTP) habe ich K. J. (theborg0815) per 
Mail geschickt, also bitte alles weitere mit ihm absprechen.
Der Webspace kann sowohl für die benutzbare Version, wie auch für eine 
(oder mehrere) Entwicklungsversionen genutzt werden. Ebenfalls kann der 
Webspace für FTP benutzt werden (Footprints hochladen, 
Installationspakete runter laden, usw.).

Kritik/Wünsche/Feedback sind willkommen ;-)

von K. J. (Gast)


Lesenswert?

Christian R. schrieb:
> So, neues zu "myparts.info"
> Die Domain ist bereits erreichbar. Der Serverumzug sollte heute morgen
> um 7 Uhr abgeschlossen sein.
> Die Zugangsdaten (Datenbank und FTP) habe ich K. J. (theborg0815) per
> Mail geschickt, also bitte alles weitere mit ihm absprechen.
> Der Webspace kann sowohl für die benutzbare Version, wie auch für eine
> (oder mehrere) Entwicklungsversionen genutzt werden. Ebenfalls kann der
> Webspace für FTP benutzt werden (Footprints hochladen,
> Installationspakete runter laden, usw.).
>
> Kritik/Wünsche/Feedback sind willkommen ;-)

Hi ja sind angekommen werde es nachher weiter verteilen, allerdings hab 
ich irgenwie verpasst worum das da jetzt genau geht ?

von Christian R. (holle)


Lesenswert?

:D
Also, es geht darum, dass wir vorhaben eine User-Verwaltung zu 
integrieren. Somit kann man eine Datenbank anlegen welche von allen 
Usern genutzt werden kann. Das hat folgende Vorteile:
1.) Jeder kann Part-DB nutzen, auch wenn er keinen Webspace hat und auch 
keinen virtuellen Server installiert hat.
2.) Man braucht nicht alle Daten immer wieder neu anzulegen, da viele 
Daten schon von anderen Usern angelegt wurden (z.B. 74er und 40er Reihe, 
Spannungswandler, ...).
3.) Preise sind aktueller (wenn ich ein Pollin-Preis anlege und das nun 
5 Monate her ist, dann kann der Preis inzwischen anders sein). Wenn ein 
User der aktuellen Preis einträgt sieht jeder User den aktuellen Preis.

Die "Lager" werden Userspezifisch angelegt (deswegen ist die 
User-Verwaltung zwingend nötig).

Noch nicht ganz geklärt ist z.B. wie es gehandhabt werden soll inwiefern 
ein User die Datenbank ändern kann (Bauteile anlegen, Preise ändern, 
usw.).
Denkbar wäre da z.B. folgendes Szenario:
- Ein User sieht alle Daten der vorhanden Datenbank und kann sein 
"Lager" anlegen. Wenn er ein Bauteil anlegt, wird dieses...
1.) User-Spezifisch angelegt und bleibt nur für diesen User sichtbar
2.) User-Spezifisch angelegt und nach Prüfung von "Moderatoren" in die 
Hauptdatenbank übernommen
3.) direkt vom User in die Datenbank eingetragen sofern er 
"vertrauenswürdig*" ist
* bestimmte Anzahl angelegter Bauteile/Lagerfächer/... oder wie auch 
immer man das abwägen will
4.) direkt vom User in die Datenbank übertragen, in der Hoffnung dass es 
jeder gewissenhaft macht.
5.) beantragt und ein Moderator legt es dann an.

Ein Moderator muss ja nicht zwangsläufig ein Entwickler sein, das könnte 
jeder sein von dem man weiß dass er/sie gewissenhaft und 
vertrauenswürdig ist.


Zurück zu myparts.info ...
Diese Domain habe ich registriert um die Basis dafür zur Verfügung zu 
stellen. Hier kann die benutzte Version installiert sein und 
gleichzeitig die Entwicklungs- und Testumgebung installiert sein. Auch 
für FTP (Footprints, Installationspakete, ...) kann man den Webspace 
nutzen. Traffic und Webspace sind reichlich vorhanden.
Eingerichtet ist jedoch noch nichts, da ich euch da nicht zwischen 
fummeln will. Macht ihr das so wie ihr es für richtig haltet.
Wie gesagt, es ist kein Problem weitere Datenbanken usw. anzulegen. Ihr 
könnt auch z.B. 5 Entwickungsumgebungen parallel installieren, damit der 
eine etwas modifizieren kann wo die Funktion eine Zeit lang 
beeinträchtigt ist, während andere gerade an etwas arbeiten, was direkt 
getestet werden kann, weil man ja eine Entwicklungsumgebung nutzt deren 
Funktion gerade nicht beeinträchtigt ist.
Ist alles machbar, sagt einfach was ihr braucht/wollt.

Edit: Die Beiden Ordner "usage" und "logs" bitte nicht löschen, die sind 
vom Server.

von Christian R. (holle)


Lesenswert?

Traut sich niemand den Anfang zu machen? :D

...oder klappt etwas nicht mit den Zugangsdaten?

Wenn ihr wollt kann ich auch schon mal eine Version auf dem Server 
anlegen (wenn es euch egal ist ob ich es im Root oder einem Ordner 
"installiere").

Mit PHP kenne ich mich leider nicht ausreichend aus um euch beim 
Programmieren unterstützen zu können, aber wenn ich euch anderweitig 
unterstützen kann sagt einfach was ich machen soll.

Gruß, Christian

von Udo N. (weinbauer73)


Lesenswert?

Da ich keine Zugangsdaten habe und auch erst dann was veröffentlichen 
will, wenn die Umstellung auf eine Template-Engine geschafft ist, kann 
ich dazu noch nichts sagen.

Allerdings müsste ich mal ein Repo anlegen...

von Christian R. (holle)


Lesenswert?

Verdammt, da schreibe ich einen halben Roman und bevor ich auf 
"absenden" klicken konnte stürzt mein blöder PC an :/

Nun habe ich keine Lust mehr alles nochmal zu schreiben, deswegen hier 
die Kurzform:

Ich war davon ausgegangen dass K.J. die Zugangsdaten bereits verteilt 
hat.
Nun mache ich es so: K.J. hat die FTP-Zugangsdaten vom Root.
In diesem habe ich einen Ordner "entwickler" angelegt, und in diesem 
lege ich nun für jeden aktiven Entwickler einen Ordner an, welcher dann 
eigene FTP-Daten und eine eigene Subdomain bekommt.
Wie wir das mit den Datenbanken handhaben weiß ich auch noch nicht so 
genau.
Die eine Datenbank wird für die benutzbare Version benötigt, zum 
entwickeln brauchen wir eigene (damit bei einem Fehler nicht die 
lauffähige Version zerstört wird).
Ich lege nun eine weitere Datenbank an welche dann zu Test-Zwecken 
benutzt werden kann. Ich denke dass eine Test-Datenbank nicht 
ausreichend sein wird, wenn wenn jemand an etwas programmiert was eine 
Strukturänderung der Datenbank erfordert sollte man dafür eine separate 
Test-Datenbank verwenden.

Wir müssen uns dann irgendwie einigen wie die Datenbanken am 
sinnvollsten benutzt werden sollten (und wieviele wir letztendlich 
benötigen).

Mein Vorschlage wäre folgendes:
1. Datenbank = nicht für Testzwecke, sondern nur für die benutzbare 
Version.
2. + 3. (+n) Datenbank = Datenbank zum Testen. Wer für seine Projekte 
gerade welche Test-Datenbank benutzt sollte untereinander abgesprochen 
werden.
Ich würde vorschlagen dass man immer die 1. Testdatenbank benutzt wenn 
man nichts an der Struktur ändern muss und ansonsten halt die 2. oder 3. 
Testdatenbank benutzt (welche halt gerade nicht von jemand anderem 
benutzt wird, der diese modifizieren muss).
Da wird eine Absprache untereinander von nöten sein.
Wie diese Absprache dann aussieht (hier im Forum, eigener Blog, ...) 
müsst ihr unter euch ausmachen.

von Christian R. (holle)


Lesenswert?

So, nun habe ich 3 Testdatenbanken angelegt.
Wenn das nicht reicht lege ich weitere an.

Da ich nicht weiß wer aktiv an Part-db arbeitet bitte ich um eine kurze 
info, damit ich für ihn einen FTP-Zugang + Subdomain einrichten kann.

von Gelöscht (kami89)


Lesenswert?

Da meine virtuelle Maschine mit Part-DB gerade den Geist aufgegeben hat, 
frage ich mich nun, ob es eigentlich möglich wäre, direkt aus Part-DB 
heraus eine automatische Datenbanksicherung auszuführen?

Da es mit phpmyadmin doch etwas mühsam ist, mache ich das nunmal nicht 
jeden Tag. Aber immerhin ist die letzte Sicherung nicht länger als zwei 
Monate her ;-)

Wäre auf jeden Fall sehr hilfreich wenn Part-DB das gleich irgendwie 
automatisch machen könnte.

Ebenfalls sehr cool wäre eine automatische Update-Funktion, so dass 
Part-DB automatisch jeweils die neuste Version aus dem SVN installieren 
könnte. Aber ich vermute mal, sowas ist eher weniger möglich oder? Und 
auf dem Webspace eines Hosters noch viel weniger? :-D

mfg

P.S. @Udo Neist
Ich bin schonmal sehr gespannt auf deine neue Template-Engine. Was ich 
mich aber noch frage: ist das ganze "Zeug", das du da einbaust, auch für 
jemanden nachvollziehbar/erweiterbar, der sich nicht damit auskennt? 
Wäre echt schade wenn dann niemand mehr mit dem Code zurechtkommt falls 
du mal nichts mehr mit Part-DB zu tun haben willst/kannst.

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
> Da meine virtuelle Maschine mit Part-DB gerade den Geist aufgegeben hat,
> frage ich mich nun, ob es eigentlich möglich wäre, direkt aus Part-DB
> heraus eine automatische Datenbanksicherung auszuführen?
>
> Da es mit phpmyadmin doch etwas mühsam ist, mache ich das nunmal nicht
> jeden Tag. Aber immerhin ist die letzte Sicherung nicht länger als zwei
> Monate her ;-)
>
> Wäre auf jeden Fall sehr hilfreich wenn Part-DB das gleich irgendwie
> automatisch machen könnte.

Für das Sichern der Datenbank gibt es mysqldump für die Konsole, das man 
auch über PHP nutzen könnte. Ich nutze das im Rahmen eines Perl-Modules 
für mein Systembackup.

> Ebenfalls sehr cool wäre eine automatische Update-Funktion, so dass
> Part-DB automatisch jeweils die neuste Version aus dem SVN installieren
> könnte. Aber ich vermute mal, sowas ist eher weniger möglich oder? Und
> auf dem Webspace eines Hosters noch viel weniger? :-D

Ich würde das Update über SVN lieber nicht machen, sondern über 
entsprechende Archive, die sich die Update-Funktion dann schnappen kann. 
So ähnlich macht es auch Dokuwiki.

> P.S. @Udo Neist
> Ich bin schonmal sehr gespannt auf deine neue Template-Engine. Was ich
> mich aber noch frage: ist das ganze "Zeug", das du da einbaust, auch für
> jemanden nachvollziehbar/erweiterbar, der sich nicht damit auskennt?
> Wäre echt schade wenn dann niemand mehr mit dem Code zurechtkommt falls
> du mal nichts mehr mit Part-DB zu tun haben willst/kannst.

Ich habe ja schon mal ein Vorgeschmack auf diese Template-Engine hier 
gepostet. Mittlerweile habe ich einige andere Bereiche auch schon 
umgestellt. Die HTML-Sachen sind in die Templates ausgelagert und im 
neuen Verzeichnis templates/SCRIPTNAME/ zu finden. Die übergeordneten 
(Header, Footer) sind direkt im Verzeichnis templates. Basis ist Version 
446M.

Ich schieb mal meine Version hoch. Damit die Datenbankzugänge zwischen 
Webspace und meinem lokalen Server nicht versehentlich vermischt werden, 
hab ich gerade mal die Datenbankkonfiguration in eine eigene Datei 
ausgelagert :-) Upload läuft...

von Udo N. (weinbauer73)


Lesenswert?

Was mir gerade auffällt... Damit nicht zuviele redudante Bilder auf dem 
Server existieren, wäre es doch sinnvoll, das entsprechende Verzeichnis 
auf den Server ausserhalb des Webspaces zu legen und mit einem Alias im 
Apache bzw. einem Symlink allen verfügbar zu machen. Ich lade gerade 
sicher über 50MB an Daten hoch, die dann mehrfach vorhanden sein 
könnten.

Wenn ich meine Version der DB hochgeladen habe, werde ich auch ein 
Archiv ohne Bilder erstellen, damit ihr die Umstellung auf die 
Templateengine sehen könnt. Im Verzeichnis class liegt u.a. die 
vlibTemplateengine.

von Udo N. (weinbauer73)


Lesenswert?

Bis auf eine falsche Datenbankversion (1 -> 3, Update auf 11 schlägt 
fehl) ist meine Version online.

http://weinbauer73.myparts.info/

Das aktuelle Archiv findet ihr hier: 
http://weinbauer73.myparts.info/part-db-svn446-un20120624.tar.gz

von Christian R. (holle)


Lesenswert?

Udo Neist schrieb:
> Was mir gerade auffällt... Damit nicht zuviele redudante Bilder auf dem
> Server existieren, wäre es doch sinnvoll, das entsprechende Verzeichnis
> auf den Server ausserhalb des Webspaces zu legen und mit einem Alias im
> Apache bzw. einem Symlink allen verfügbar zu machen.

Wozu?
Webspace haben wir genügend, Traffic auch.
Oder meinst du das so, dass nicht jeder Programmierer die Bilder 
hochladen muss? In dem Fall würde es Sinn machen, aber dazu brauchen wir 
keinen externen Server, das kann man auch auf unseren Server ablegen und 
gemeinsam darauf zugreifen.

Was mir da gerade noch einfällt...
Wenn hier irgendwelche Dateien ausgetauscht werden sollen (z.B. jemand 
hat ein Bild erstellt, ein anderer möchte dieses bearbeiten), dann wäre 
das bisher recht umständlich. Man könnte das Bild per Mail schicken, 
oder im eigenen Ordner ablegen (und es dort freigen).
Ich denke ich sollte noch einen "Austausch-Ordner" anlegen, dessen 
Zugangsdaten jeder Entwickler bekommt. Da bekommt dann jeder vollen 
Lese- u. Schreibzugriff. So kann man anderen einfach Dateien zur 
Verfügung stellen.

Nun habe ich leider keine Zeit mehr, Fußball fängt an ;-)
...das hole ich aber noch nach :-)

von Udo N. (weinbauer73)


Lesenswert?

Christian R. schrieb:
> Webspace haben wir genügend, Traffic auch.
> Oder meinst du das so, dass nicht jeder Programmierer die Bilder
> hochladen muss? In dem Fall würde es Sinn machen, aber dazu brauchen wir
> keinen externen Server, das kann man auch auf unseren Server ablegen und
> gemeinsam darauf zugreifen.

Am Webspace liegt es nicht. Der Upload dauert einfach zu lange. Einmal 
reicht doch. Und zudem kann man dann lokal auch mit der offiziellen 
Seite abgleichen. 175kb für das reine Archiv bzw. 1,2MB entpackt zu etwa 
51mb ungepackt inklusive Bilder sind doch ein Unterschied. Ich hab keine 
100Mbit-Leitung zu meinem Provider ;-)

> Was mir da gerade noch einfällt...
> Wenn hier irgendwelche Dateien ausgetauscht werden sollen (z.B. jemand
> hat ein Bild erstellt, ein anderer möchte dieses bearbeiten), dann wäre
> das bisher recht umständlich. Man könnte das Bild per Mail schicken,
> oder im eigenen Ordner ablegen (und es dort freigen).
> Ich denke ich sollte noch einen "Austausch-Ordner" anlegen, dessen
> Zugangsdaten jeder Entwickler bekommt. Da bekommt dann jeder vollen
> Lese- u. Schreibzugriff. So kann man anderen einfach Dateien zur
> Verfügung stellen.

Das ist ja auch meine Intuition. Einfach zentrale Ordner anlegen (sind 
wohl derzeit drei unterhalb tools) und diese in die einzelnen Accounts 
verlinken. Wobei allerdings Schreibrecht auf die zentralen Ordner für 
alle erforderlich wäre.

PS: Fussball läuft bei mir nebenher mit ;-)

>
> Nun habe ich leider keine Zeit mehr, Fußball fängt an ;-)
> ...das hole ich aber noch nach :-)

von Gelöscht (kami89)


Lesenswert?

OK also vorerst mal zu den zwei Fragen, die ich vorher gestellt habe. 
Interpretiere ich das richtig, dass eine automatische Datenbanksicherung 
bzw. ein direktes Runterladen der SQL-Sicherung aus Part-DB heraus 
möglich ist? Und sogar eine automatische Update-Funktion wäre technisch 
gesehen möglich, sogar auf dem Webspace eines Hosters?

Falls ja, würde ich diese zwei Punkte in die TODO-Liste aufnehmen. Ich 
wollte halt erstmal fragen ob das technisch überhaupt machbar ist, nicht 
dass ich was unmöglich machbares in die TODO-Liste aufnehme :-)

Dann habe ich mir ganz kurz dein Archiv angeschaut, und musste 
feststellen, dass ich überhaupt nicht durchblicke :-(
Genau das habe ich befürchtet. Vorher war das ganze ja noch sehr 
überschaubar, aber jetzt ists doch schon ziemlich komplex geworden finde 
ich. Oder kannst du in ein paar Sätzen kurz erklären was du ungefähr 
gemacht hast, wie das ganze System funktioniert, welche Dateien für was 
zuständig sind?

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
> OK also vorerst mal zu den zwei Fragen, die ich vorher gestellt habe.
> Interpretiere ich das richtig, dass eine automatische Datenbanksicherung
> bzw. ein direktes Runterladen der SQL-Sicherung aus Part-DB heraus
> möglich ist?

Ja.

> Und sogar eine automatische Update-Funktion wäre technisch
> gesehen möglich, sogar auf dem Webspace eines Hosters?

Theoretisch ja, praktisch von mir noch nicht getestet. Ich hab das 
Updaten meist manuell gemacht, aber etliche PHP-Applikationen 
beherrschen das wohl sicher. Müsste man halt austesten.

> Dann habe ich mir ganz kurz dein Archiv angeschaut, und musste
> feststellen, dass ich überhaupt nicht durchblicke :-(
> Genau das habe ich befürchtet. Vorher war das ganze ja noch sehr
> überschaubar, aber jetzt ists doch schon ziemlich komplex geworden finde
> ich. Oder kannst du in ein paar Sätzen kurz erklären was du ungefähr
> gemacht hast, wie das ganze System funktioniert, welche Dateien für was
> zuständig sind?

Von den neuen Dateien im Verzeichnis class wird derzeit nur die 
vlibTemplate-Klasse verwendet. Alle anderen hab ich vorsorglich da rein 
kopiert, um später die Benutzerverwaltung zu schreiben. Wahrscheinlich 
werden da auch noch einige der Klassen verschwinden. config.php hat sich 
wenig geändert. Ich habe da nur die Datenbankkonfiguration in ein Array 
umgeschrieben und heute in die config_db.php ausgelagert (damit es nicht 
zu einem Konflikt mit der lokalen Kopie kommt). Die lib.php ist 
entsprechend angepasst.

Für die, die noch nicht mit Klassen gearbeitet haben, ist das im ersten 
Moment verwirrend. Klassen instanziert man mit $foo = new class. Alle 
Funktionen und Variablen der Klasse werden mit $foo -> bar bzw. $foo :: 
bar aufgerufen (http://php.net/manual/de/language.oop5.php). Der 
Templateklasse übergibt man beim Instanzieren das gewünscht Template 
mit. Mit der Funktion setVar() werden Variablen gesetzt (Bezeichner, 
Wert). Diese kann man im Template dann mit temp_if oder temp_var 
entsprechend bearbeiten.

Unter der Woche kann ich das mit einem passenden Beispiel besser 
verdeutlichen :-)

Für mich ist Part-DB ein Sammelsurium von HTML, PHP und Funktionen. 
Wirklich übersichtlich ist das noch lange nicht. Besser ist es, 
Funktionen zu gruppieren und in einzelne Scripte auszulagern. Irgendwann 
ist eure lib.php so aufgebläht, das ihr nicht mehr durchblickt. Ebenso 
sind die Variablen in der config.php noch recht einfach, aber spätestens 
mit der Benutzerverwaltung wäre eine Vereinfachung geeigneter. Arrays 
lassen sich z.b. serialisieren und dann in eine Datenbank schreiben. 
Beim Auslesen werden die dann wieder zu Arrays. Somit wären die eigenen 
Einstellungen sofort verfügbar. Man braucht nicht jede Variable in eine 
eigene Spalte zu schreiben.

Okay, ich merke, ich bin mit mehr als 10 Jahren PHP-Erfahrung wohl doch 
ein klein wenig weiter als ihr ;-)

von Gelöscht (kami89)


Lesenswert?

Okay danke schonmal für die Erklärung, ich schau mir das nächstens 
nochmal etwas genauer an.

Udo Neist schrieb:
> Okay, ich merke, ich bin mit mehr als 10 Jahren PHP-Erfahrung wohl doch
> ein klein wenig weiter als ihr ;-)

Naja ich weiss ja nicht wie viel Erfahrung die anderen hier haben, aber 
ich persönlich habe eigentlich überhaupt keine Erfahrung mit PHP (ausser 
mal ein paar kleinen Anpassungen mit try & error). Aber ich bin ja auch 
nicht wirklich ein Entwickler von Part-DB. Ich mach halt einfach ein 
bisschen das, was ich mit meinen Fähigkeiten machen kann :-)


Ach übrigens, was würdet ihr von einer TODO-Liste für auf unseren Server 
halten?

Nett sieht z.B. das hier aus: http://www.mytinytodo.net/

Die Liste im SVN finde ich halt irgendwie etwas mühsam zum unterhalten. 
Ausserdem ist sie optisch nicht gerade sehr ansprechend ;-)

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
> Okay danke schonmal für die Erklärung, ich schau mir das nächstens
> nochmal etwas genauer an.

Es sieht schlimmer aus als es wirklich ist. Man muss einfach nur daran 
denken, das man die Logik und die Ausgabe mit einer Templateengine 
trennt. Manche Engines nehmen allerdings zuviel der Logik in die 
Templates und machen sie meines Erachtens wieder unübersichtlich.

> Udo Neist schrieb:
>> Okay, ich merke, ich bin mit mehr als 10 Jahren PHP-Erfahrung wohl doch
>> ein klein wenig weiter als ihr ;-)
>
> Naja ich weiss ja nicht wie viel Erfahrung die anderen hier haben, aber
> ich persönlich habe eigentlich überhaupt keine Erfahrung mit PHP (ausser
> mal ein paar kleinen Anpassungen mit try & error). Aber ich bin ja auch
> nicht wirklich ein Entwickler von Part-DB. Ich mach halt einfach ein
> bisschen das, was ich mit meinen Fähigkeiten machen kann :-)

Wenn man Spaß an etwas hat, dann kommt das irgendwann auch :-) Ich hab 
am Anfang auch so manchen Unsinn programmiert.

> Ach übrigens, was würdet ihr von einer TODO-Liste für auf unseren Server
> halten?
>
> Nett sieht z.B. das hier aus: http://www.mytinytodo.net/
>
> Die Liste im SVN finde ich halt irgendwie etwas mühsam zum unterhalten.
> Ausserdem ist sie optisch nicht gerade sehr ansprechend ;-)

ToDo bzw. eine Bug-Verwaltung wäre sicher sinnvoll. Vielleicht auch noch 
ein kleines Wiki (u.a. für die Entwickler), um bestimmte Funktionen zu 
beschreiben. Sozusagen als Handbuchersatz.

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> ToDo bzw. eine Bug-Verwaltung wäre sicher sinnvoll. Vielleicht auch noch
> ein kleines Wiki (u.a. für die Entwickler), um bestimmte Funktionen zu
> beschreiben. Sozusagen als Handbuchersatz.

Stimmt, ein eigenes Wiki wäre schon praktisch. Ich habe mal kurz ein 
bisschen im Internet gesucht und bin auf "TracWiki" gestossen. 
Ticket-System, Wiki und SVN in einem, so wie ich das verstanden habe. 
Wäre auf jeden Fall cool wenn man das alles unter einem Hut vereinen 
könnte.

http://trac.edgewall.org/

Hat vielleicht sogar schon jemand hier Erfahrung mit diesem System?
Oder kennt jemand etwas vergleichbares?

von Udo N. (weinbauer73)


Lesenswert?

Ich habe Trac mal eingesetzt, aber kam nicht wirklich damit zurecht. Ist 
aber schon eine Weile her und hatte auch nicht ganz den Funktionsumfang 
der aktuellen Version.

von Gelöscht (kami89)


Lesenswert?

hmm aber ich glaube, Trac kann man wohl nicht auf einem einfachen 
Webspace installieren oder?

Dann können wir das ja eh vergessen. Vielleicht gibts für die gängigen 
CMS ja geeignete Erweiterungen für ein Wiki und eine TODO-Liste?

von Udo N. (weinbauer73)


Lesenswert?

Dokuwiki :-) Nutze ich selbst und ist, wie der Name schon sagt, für 
Dokumentationen bestens geeignet. Trac braucht schon mehr sowas wie 
einen Root-Server, da es einen eigenen Webserver mitbringt.

von K. J. (Gast)


Lesenswert?

naja im Googlecode gibt es nen wiki auch einen bugtracker, müste die 
tage mal schauen wie man des aktiviert.

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Dokuwiki :-) Nutze ich selbst und ist, wie der Name schon sagt, für
> Dokumentationen bestens geeignet. Trac braucht schon mehr sowas wie
> einen Root-Server, da es einen eigenen Webserver mitbringt.

OK wenn niemand was dagegen hat und ich von Christian R. Zugangsdaten 
für seinen Webspace bekomme, würde ich mal so ein Dokuwiki installieren 
und konfigurieren. Wenn es nichts Gescheites wird, ist es schnell wieder 
gelöscht :-D

@Christian R.
Könntest du vielleicht einen Unterordner "wiki" und eine Datenbank 
"wiki" erzeugen und mir die Zugangsdaten zu diesen beiden Dingern geben?

EDIT:
K. J. schrieb:
> naja im Googlecode gibt es nen wiki auch einen bugtracker, müste die
> tage mal schauen wie man des aktiviert.

aah okay, das wäre dann natürlich auch was. Wenn das gut funktioniert 
brauchen wir natürlich kein DokuWiki aufzusetzen :-)

von Udo N. (weinbauer73)


Lesenswert?

K. J. schrieb:
> naja im Googlecode gibt es nen wiki auch einen bugtracker, müste die
> tage mal schauen wie man des aktiviert.

Hätte den Vorteil, dass wir uns um die Software nicht kümmern müssten.

von K. J. (Gast)


Lesenswert?

Wiki: http://code.google.com/p/part-db/wiki/Index
Bugtracker: http://code.google.com/p/part-db/issues/list

Naja und es wehre zentral, alles aufzusplitten ist recht 
unübersichtlich.

von Gelöscht (kami89)


Lesenswert?

K. J. schrieb:
> Wiki: http://code.google.com/p/part-db/wiki/Index
> Bugtracker: http://code.google.com/p/part-db/issues/list
>
> Naja und es wehre zentral, alles aufzusplitten ist recht
> unübersichtlich.

Ja, schaut doch gar nicht schlecht aus! Ich denke damit können wir gut 
leben :-)

Könntest du mir vielleicht irgendwie noch Schreibrechte fürs Wiki geben? 
Die Mailadresse wäre kami89 ääääät gmx puunkt ch. Aber bitte keine Mails 
an diese Adresse, diese Mailbox checke ich nicht.

von Christian R. (holle)


Lesenswert?

Ich habe gerade eine Datenbank für ein Wiki angelegt. Zudem habe ich die 
Ordner "wiki" und "ftp" angelegt, welche auch wieder eigene 
FTP-Zugangsdaten und Subdomains bekommen haben.


Wenn irgendwelche Software installiert werden soll sagt mir bescheid.
Server-Seitig werden folgende Software-Installationen angeboten:

######### CMS #########
Contao (v2.11.3)
Drupal (Update von 7.1* auf 7.14)
Drupal (v7.12)
Joomla mit Beispieldaten (v2.5)
Joomla ohne Beispieldaten (v2.5)
Typo3 (Update von 4.5.* auf 4.5.16)
Typo3 (Update von 4.6.* auf 4.6.9)
Typo3 (Update von 4.7.* auf 4.7.1)
Typo3 (v4.5.16)
Typo3 (v4.6.9)
Typo3 (v4.7.1)
Websitebaker (v2.8.2)

######### Blog #########
Serendipity (v1.6)
Wordpress (v3.3.2)

######### Forum #########
Burning Board Lite (v2.1.1)
phpBB3 (v3.0.7)

######### Bildergalerie #########
Coppermine (v1.5.20)
Gallery3 (v3.0.2)

######### Shop #########
xtcModified (v1.0.5_SP1b)

######### Wiki #########
MediaWiki (v1.17)

######### Sonstiges #########
GroupOffice (v3.7.34)
Mantis BugTracker (v1.2.8)
ownCloud (v4.0.2)
phlyMail Webmail (v4.0.9)
phpMyFAQ (v2.7.5)
Piwik (v1.6)

Diese Software kann ich praktisch per "Klick" installieren.
Andere Software kann natürlich auch installiert werden (halt manuell).

Auch Cronjobs sind möglich (Datenban-Backups, usw.)

Gruß, Christian

von Gelöscht (kami89)


Lesenswert?

@Christian R.
Danke für deinen Einsatz und die PN :-)
Aber da es nun ja auf Google Code auch ein Wiki und eine TODO-Liste 
gibt, sind wir damit wohl besser bedient. Da ist halt gleich alles auf 
der gleichen Seite, und nicht über mehrere Seiten verteilt.

Ich persönlich bin zwar ehrlich gesagt nicht gerade ein Fan von Google, 
aber wenn es keine gescheiten Alternativen gibt kommt man halt nicht gut 
dran herum ;-) Naja, ich habe mir nun halt extra eine neue Mailadresse 
zugelegt für Google Code (danke fürs Freischalten, K.J.) damit ich 
keinen Verfolgungswahn bekomme xD
Ihr müsst mal versuchen Googles Dienste zu vermeiden, das ist echt hart 
;-)

Ohne Root-Server kriegt man kein SVN Server zum laufen oder?
Wobei mir gerade in den Sinn kommt, dass Andreas hier auf uC.net auch 
einen SVN-Server anbietet. Aber das würde bezüglich alles unter ein Dach 
zu bringen auch nichts nützen... Naja... man kann nicht alles haben ;-)

mfg

von K. J. (Gast)


Lesenswert?

naja svn aufm Server aufsetzen ist Garnicht so trivial hatte es damals 
versucht ich bin mit der google Lösung recht zufrieden und vor alledem 
ist es stabile und nicht wartungs intensiv und es hat noch den vorteile 
das es nicht irgendwann mal ausm netz verschwindet wen keiner mehr dran 
arbeitet.

und Lösungen wie surceforge und co. sind einfach zu überdimensioniert.

von Gelöscht (kami89)


Lesenswert?

So, ich habe nun alle TODOs ins Google Code übertragen.
Im uC.net Artikel habe ich die TODOs gelöscht und einen Link nach Google 
Code eingefügt.

Kann noch jemand die todo.txt aus dem SVN löschen?
Ich raff grad nicht wie das gehen soll und möchte nichts am SVN 
kaputtmachen ;-)

Am Wiki werde ich dann auch mal noch weiterarbeiten sobald ich Zeit 
dafür habe.

von K. J. (Gast)


Lesenswert?

OK. ist geschehen

von Udo N. (weinbauer73)


Lesenswert?

Meine Installation auf http://weinbauer73.myparts.info/ läuft jetzt. Ich 
habe die Datenbank von meinem lokalen Server rüberkopiert. Allerdings 
musste ich noch eine Fehlermeldung in der lib.php ausmerzen. Der Server 
erlaubt keine Ausführung von shell_execute(). Ich habe die Funktion 
durch folgendes ersetzt:
1
global $conf;
2
3
if (file_exists('.svn/entries'))
4
{
5
   $svn = File('.svn/entries');
6
   $repo_version = $svn[3];
7
   unset($svn);
8
}
9
else {
10
   $repo_version = @shell_exec( 'svnversion');
11
}
12
return( $repo_version . $conf['version']['string'] );

Das Array $conf['version'] enthält meine Versionsbezeichnung.

von Udo N. (weinbauer73)


Lesenswert?

Da die deutsche Seite zu vlibTemplate derzeit nicht verfügbar ist, hab 
ich mal weiter gesucht. Ich habe eine englisch sprachige Seite mit der 
Doku gefunden: 
http://www.nationwidelegaltrust.com/lib/vlib/docs/vlibTemplate.html

von JSachs (Gast)


Lesenswert?

Mensch ihr legt ja ein Tempo an den Tag....
Also es zählt nun Wiki und Tracker auf Google ? Oder ist das noch in 
Diskussion ?

Mir ist die Umstellung auf die vLibTemplate nicht klar was das bringen 
soll... Eventuell kann mich einer erleuchten...

Gruss
Juergen

von Udo N. (weinbauer73)


Lesenswert?

Ich werde den Vorteil einer Templateengine noch hier posten. Jedenfalls 
ist die Trennung von Code und HTML mehr als Kosmetik.

http://t3n.de/fragen/warum-eine-template-engine-nutzen

von Gelöscht (kami89)


Lesenswert?

Hmm seit wann sind denn die Texte in allen Tabellenspalten mittig 
zentriert? Ich finde das sieht zumindest bei den Spalten "Name" und 
"Beschreibung" etwas merkwürdig aus.

Findet ihr nicht auch, es wäre schöner wenn die Texte dieser Spalten 
linksbündig platziert wären?

@Udo Neist
Heisst das, du wärst mit deiner Template-Implementierung fertig, oder 
steht bisher einfach das "Grundgerüst"?

Deine Online-Demo funktioniert bei mir nicht richtig, stimmt da was mit 
der Datenbankanbindung nicht oder bist du einfach noch nicht fertig 
damit?

von Udo N. (weinbauer73)


Lesenswert?

Bei mir steht nur das Grundgerüst und die ersten Umstellungen. Ich kam 
diese Woche noch nicht dazu weiter zu machen.

Das noch nicht alles funktionieren kann, das liegt an der Umstellung der 
Konfiguration, die auch eine etwas andere Reihenfolge der Initialiserung 
erfordert. Das ist bisher nur bei ein paar wenigen Scripten erfolgt und 
wird im Laufe der Zeit - bei der Implementierung der Templateengine - 
gleich angepasst.

von K. J. (Gast)


Lesenswert?

Urban B. schrieb:
> Hmm seit wann sind denn die Texte in allen Tabellenspalten mittig
> zentriert? Ich finde das sieht zumindest bei den Spalten "Name" und
> "Beschreibung" etwas merkwürdig aus.
>
> Findet ihr nicht auch, es wäre schöner wenn die Texte dieser Spalten
> linksbündig platziert wären?
>
Jo das war ich ;P

mache es wieder Rückgängig

von Gelöscht (kami89)


Angehängte Dateien:

Lesenswert?

K. J. schrieb:
> Jo das war ich ;P
>
> mache es wieder Rückgängig

Okay danke :-D


@Udo Neist
Alles klar, nur kein Stress :-)

Udo Neist (weinbauer73) schrieb:
> Meine Installation auf http://weinbauer73.myparts.info/ läuft jetzt.

Wegen diesem Satz war ich mir nicht sicher, ob das heissen soll, dass du 
nun fertig bist ;-)

Ich habe mich heute übrigens mal dran gesetzt, das Durcheinander mit den 
Footprint-Namen etwas zu entschärfen. Ein Datenbankupdate legt erstmal 
in der Tabelle "footprints" eine neue Spalte "filename" an. Gefüllt wird 
diese Spalte mit den gleichen Werten wie die Spalte "name". Dann werden 
die langen Footprintnamen, die mal mit einem Datenbankupdate eingeführt 
wurden, wieder rückgängig gemacht.

Ich habe mir Mühe gegeben, die neue Datenbankstruktur an allen 
notwendigen Stellen des gesamten Codes einzubauen. Da aber alles schon 
recht unübersichtlich wurde (finde ich zumindest), kann ich nicht zu 
100% sagen ob ich wirklich nichts übersehen habe.

Jedenfalls konnte ich bei meiner Installation keine Fehler finden, das 
tut soweit genau das was es soll.

Alle geplanten Änderungen am Footprint-System, wie sie in unserer 
TODO-Liste stehen, habe ich noch nicht umgesetzt. Aber die Basis dazu 
ist mit diesem Update schonmal gelegt.

@K.J.
kannst du die Änderungen vielleicht mal kurz anschauen und ggf. ins SVN 
laden? Danach könnte man sogar den Footprint-Ordner "zzz_obsolete" 
wieder löschen, der war ja nur als Übergangslösung da.

Ich weiss, ich hätte nun auch Schreibzugriff auf dem SVN, aber so wie 
ich mich kenne mache ich da mehr kaputt als dass ich was verbessere xD

mfg

von Gelöscht (kami89)


Lesenswert?

Habe gerade gesehen dass ich noch zwei, drei Stellen anpassen muss.

Bitte mein zip-Archiv ignorieren, ich melde mich wieder wenn ich was 
neues habe :-)

von Gelöscht (kami89)


Lesenswert?

So, jetzt siehts gut aus. Ich habe die Änderungen nun doch direkt ins 
SVN geladen, mit "RabbitVCS" ist das ja echt komfortabel :-)

Da der Footprint Ordner "zzz_obsolete" nun nicht mehr gebraucht wird, 
habe ich den gelöscht (bzw. RabbitVCS ist dran, sofern er sich nicht 
aufgehängt hat^^)

Ich hoffe jetzt mal dass das Update bei allen einwandfrei funktioniert 
und die Footprints immernoch korrekt angezeigt werden.

Übrigens haben Bert (b.r.) und ich heute mal Gedanken zu einigen 
geplanten Änderungen (Footprints, Dateiupload, ...) gemacht. Ich werde 
in unseren Issues auf Google Code noch reinschreiben wie wir uns das so 
vorstellen.

Ausserdem werde ich beim Footprint-Issue noch vermerken was ich jetzt 
schon gemacht habe und was noch fehlt.

P.S.
Mit den Variablennamen hatte ich manchmal ein ganz schönes 
Durcheinander. Meiner Meinung nach würde es nicht schaden, wenn wir die 
Variablen etwas aussagekräftiger gestalten würden ;-)

von tb-netbook (Gast)


Lesenswert?

Jap hört sich alles gut an schaue es mir heute Abend an, die Alten FP 
gibt es ja noch als Archiv im DL bereich, also raus damit.

Irgentwas muss trotzdem an den FP Parser geändert werden ab 40 Listen 
einträgen scheitert das ganze an der PHP-Runtime (30s), das ist extrem 
langsam, man sieht das recht gut an der Demo-DB.

Die Tage habe ich auch wieder etwas Zeit, auf Arbeit ist so gut wie 
nichts zu tun gut das ich fast unkündbar bin, da werde ich mir dann 
wieder mit der Part-DB die Zeit vertreiben.

von Udo N. (weinbauer73)


Lesenswert?

@tb-netbook

An welcher Stelle ist das mit dem FP-Parser zu finden? Vielleicht finde 
ich beim schnellen Drüberschauen das Problem.

@Urban

Es bezog sich ja auf den aktuellen Stand meiner Umsetzung :-)

von Gelöscht (kami89)


Lesenswert?

tb-netbook schrieb:
> Irgentwas muss trotzdem an den FP Parser geändert werden ab 40 Listen
> einträgen scheitert das ganze an der PHP-Runtime (30s), das ist extrem
> langsam, man sieht das recht gut an der Demo-DB.

Das liegt daran, dass momentan die Footprint-Bilder noch im ganzen 
tools/footprints Ordner rekursiv gesucht werden. Da haben Bert und ich 
aber auch eine Lösung parat, ich schreib sie nachher gleich in unsere 
Issues Liste hinein.

Udo Neist schrieb:
> @Urban
>
> Es bezog sich ja auf den aktuellen Stand meiner Umsetzung :-)

OK das habe ich nun vermutet :-D

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
> tb-netbook schrieb:
>> Irgentwas muss trotzdem an den FP Parser geändert werden ab 40 Listen
>> einträgen scheitert das ganze an der PHP-Runtime (30s), das ist extrem
>> langsam, man sieht das recht gut an der Demo-DB.
>
> Das liegt daran, dass momentan die Footprint-Bilder noch im ganzen
> tools/footprints Ordner rekursiv gesucht werden. Da haben Bert und ich
> aber auch eine Lösung parat, ich schreib sie nachher gleich in unsere
> Issues Liste hinein.

Mit folgendem Code durchsuche ich ein Verzeichnis rekursiv nach Dateien. 
Das geht recht fix, da die Funktion sich bei jedem Unterverzeichnis 
wieder selbst aufruft. Hab ich irgendwo im Netz gefunden. Die Funktion 
ist aus einer Klasse, daher das "$this->" ;-)
1
function readDir($path = '.',$search = '',$options=array('mime'=>array(),'recursive'=>true,'onlyfiles'=>false)) {
2
/*
3
  Durchforstet das übergebene Verzeichnis rekursiv nach Dateien
4
5
  * Variablen
6
  $this -> files (array): Container für Dateien
7
  $path (string): Suchpfad (Default: .)
8
  $search (string): Suchmuster für preg_match()
9
  $options (array):
10
    recursive (bool): Rekursiv suchen
11
    onlyfiles (bool): Nur Dateien
12
    mime (string): Mimetyp
13
14
  * Rückgabe
15
  $this -> files (array): Liste der Ergebnisse mit absoluten Pfad
16
17
  * Anforderung
18
  Kein Datenbanklink erforderlich!
19
20
  * Anmerkung
21
  Der Punkt ist das aktuelle Verzeichnis, ".." kennt man als "Verzeichnis höher" und "dir/" als "Verzeichnis tiefer".
22
23
*/
24
25
  // $this->files wird initialisiert, falls noch nicht geschehen
26
  if (!is_array($this -> file)) $this -> file = array();
27
28
  // Pfad setzen
29
  $dir = dir($path);
30
  // Pfad durchsuchen
31
  while (($file = $dir->read()) !== false) {
32
    // Verzeichnisebenen überspringen
33
    if ($file =='.' || $file =='..') continue;
34
    if (is_dir($path."/".$file) && $options['recursive']===true) {
35
      // Falls Verzeichnis, dann rekursiv die Funktion nochmal aufrufen
36
      $this -> readDir($path."/".$file,$search,$options);
37
    }else{
38
      if (count($options['mime'])>0 && is_file($path."/".$file)) {
39
        if (function_exists(finfo_file)) {
40
          $finfo = finfo_open(FILEINFO_MIME); // return mime type ala mimetype extension
41
          $mime = finfo_file($finfo, $path."/".$file);
42
          finfo_close($finfo);
43
          $mime = explode('; ',$mime);
44
          if (!in_array($mime[0],$options['mime'])) continue;
45
        }elseif (function_exists(mime_content_type)) {
46
          if (!in_array(mime_content_type($path."/".$file),$options['mime'])) continue;
47
        }
48
      }
49
      if (preg_match('/'.$search.'/i',$file)==1) {
50
        // Bei Treffer in das Array $this->files aufnehmen,
51
        // aber abhängig von $options['onlyfiles'] wird entweder alles oder nur Files aufgenommen
52
        if (($options['onlyfiles']===true && !is_dir($path."/".$file)) || $options['onlyfiles']===false) $this -> files[] = $path."/".$file;
53
      }
54
    }
55
  }
56
  // Verzeichnishandler schliessen
57
  $dir->close();
58
}

von Gelöscht (kami89)


Lesenswert?

So, ich denke das Wichtigste aus der Diskussion von Bert und mir hab ich 
jetzt in unsere Issues übertragen. Es geht um die Issues 12 und 14.

@Udo Neist
Danke für den code, aber ich denke der ist nicht notwendig, weil eben 
eigentlich gar nicht mehr nach den Bildern gesucht werden muss, sobald 
die noch anstehenden Änderungen durchgeführt wurden.

von Udo N. (weinbauer73)


Lesenswert?

Wenn man es besser machen kann, dann ist jeder Code zuviel ;-)

von b.r (Gast)


Lesenswert?

Hallo Udo,

Udo Neist schrieb:
> Der Server
> erlaubt keine Ausführung von shell_execute(). Ich habe die Funktion
> durch folgendes ersetzt:
Die Zeichenkette in .svn/entries ist leider nicht das selbe wie 
"svnversion".
Auf einem Webspace, wo das Projekt nur ausgecheckt und nicht verändert 
wird passt es. Aber lokal zeigt mir svnversion z.B. Folgendes an:
1
$ svnversion 
2
476M

Vielleicht kann man erst prüfen, ob shell_exec geht und dann in 
.svn/entries reinschauen?

Grüße
b

von Udo N. (weinbauer73)


Lesenswert?

Ein bisschen umgestellt und schon funktioniert es :)
1
if ( ! $repo_version = shell_exec( 'svnversion') )
2
{
3
  if ( file_exists('.svn/entries') )
4
  {
5
    $svn = File('.svn/entries');
6
    $repo_version = $svn[3];
7
    unset($svn);
8
  }
9
}
10
return( $repo_version );

von b.r (Gast)


Lesenswert?

Udo Neist schrieb:
> An welcher Stelle ist das mit dem FP-Parser zu finden? Vielleicht finde
> ich beim schnellen Drüberschauen das Problem.
In lib.php.
Das Problem bisher ist, die Footprints sind über einige Verzeichnisse 
verteilt und müssen über den Dateinamen gesucht werden. Und das kann bei 
vielen Einträgen/langen Listen dauern.

Urban und ich arbeiten aber gerade an dem Problem. Der Fundort wird 
demnächst mit in der Datenbank abgelegt. Dann sollte das 
Geschwindigkeitsproblem erledigt sein.

Grüße
b

von Udo N. (weinbauer73)


Lesenswert?

Das mit der Datenbank wäre auch meine Idee. Einmal über ein Menüpunkt in 
den Einstellunge und bei der ersten Inbetriebnahme das Verzeichnis 
scannen und dann dürfte das auch schneller gehen. Diese Daten dürften 
sich ja nicht sonderlich oft ändern.

von b.r (Gast)


Lesenswert?

Udo Neist schrieb:
> Ein bisschen umgestellt und schon funktioniert es :)
Wunderbar. Revision -> 477

b

von b.r (Gast)


Lesenswert?

Udo Neist schrieb:
> Mit folgendem Code durchsuche ich ein Verzeichnis rekursiv nach Dateien.
Es wird momentan schon rekursiv gesucht. Wo alles noch in einem 
Verzeichnis lag, war das auch akzeptabel. Wie gesagt, es wird dran 
gearbeitet :-)

b

von b.r (Gast)


Lesenswert?

Urban B. schrieb:
> P.S.
> Mit den Variablennamen hatte ich manchmal ein ganz schönes
> Durcheinander. Meiner Meinung nach würde es nicht schaden, wenn wir die
> Variablen etwas aussagekräftiger gestalten würden ;-)
Nur zu!

Udo Neist schrieb:
> Bei mir steht nur das Grundgerüst und die ersten Umstellungen. Ich kam
> diese Woche noch nicht dazu weiter zu machen.
Wie wäre es, wenn Du die Template-Geschichte als Branch im 
SVN-Repository anlegst? Da bleibt der Code an einer zentralen Stelle und 
per "svn switch" kann man ihn auch schnell mal ausprobieren.

Grüße
b

von Udo N. (weinbauer73)


Lesenswert?

Ich hab mit SVN und Co leider kaum gearbeitet. Wenn mir das einer mal 
kurz erklärt, dann gerne :)

von Jens Fischer (Gast)


Lesenswert?

Udo Neist schrieb:
> Ich hab mit SVN und Co leider kaum gearbeitet. Wenn mir das einer mal
> kurz erklärt, dann gerne :)
Womit entwickelst Du? Linux? Mac? Windows?
Diverse Tutorials gestern da durch's Netz...

b

von Udo N. (weinbauer73)


Lesenswert?

Unter Linux. Ich hatte mal ein SVN eingerichtet, aber kaum genutzt. 
Bisher hab ich immer mindestens zwei Kopien gehabt und kein Repo 
benötigt.

Ich werde mir aber mal ein paar Howtos anschauen. Eventuell habt ihr ja 
ein vernünftiges, da ja so mancher Schrott im Inet existiert.

von Gelöscht (kami89)


Lesenswert?

@b.r und an alle :-)

Ich habe jetzt in der tools/footprints.php die Checkbox zum 
hinzufügen/löschen von Footprints vorübergehend mal deaktiviert.

Ich denke es ist besser, wenn wir die Funktion erst wieder aktivieren 
wenn es eine gescheite Sicherheitsabfrage beim Löschen gibt :-)

Und eine Anpassung an die neue Datenbankstruktur (Spalte "filename") ist 
auch noch notwendig.

@Udo Neist
Ich habe heute auch zum ersten mal mit SVN gearbeitet. Dazu habe ich im 
Internet "RabbitVCS" gefunden, das integriert sich in Nautilus und macht 
es einem echt leicht, kann ich nur empfehlen :-)

von Udo N. (weinbauer73)


Lesenswert?

Ich hab hier Dolphin (KDE4) und irgendwo ein kdesvn. Aber sowas mach ich 
am liebsten von der Konsole aus :-)

Ich denke, ich brauch auch noch Zugangsdaten?

von b.r (Gast)


Lesenswert?

Udo Neist schrieb:
> Ich hab hier Dolphin (KDE4) und irgendwo ein kdesvn. Aber sowas mach ich
> am liebsten von der Konsole aus :-)
Ich nehm auch (fast) immer die Konsole. Außer unter Windows. Da 
integriert sich TortoiseSVN sehr gelungen in den Explorer.

> Ich denke, ich brauch auch noch Zugangsdaten?
Frag mal bei K.J.
Evtl. geht es nur mit goole-Account.

Grüße
b

von Udo N. (weinbauer73)


Lesenswert?

Google Account hab ich :-) Ich kann es ja mal auf meinem eigenen Server 
austesten.

von Gelöscht (kami89)


Lesenswert?

Kennt von euch zufälligerweise jemand einen Datei-Öffnen-Dialog, bei dem 
man eine Datei, die auf dem Server liegt, auswählen kann?
Bilder sollen wenn möglich auch gleich im Dialog angezeigt werden, 
sofern eine Bilddatei angewählt wird.

Im Internet finde ich überhaupt nichts derartiges...

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
> Kennt von euch zufälligerweise jemand einen Datei-Öffnen-Dialog, bei dem
> man eine Datei, die auf dem Server liegt, auswählen kann?
> Bilder sollen wenn möglich auch gleich im Dialog angezeigt werden,
> sofern eine Bilddatei angewählt wird.
>
> Im Internet finde ich überhaupt nichts derartiges...

Ist mir auch keines bekannt. Mach ich über eine Listbox, die ich zuvor 
gefüllt habe.

von Gelöscht (kami89)


Angehängte Dateien:

Lesenswert?

Also für die Zuweisung eines Bildes zu einem Footprint brauchen wir 
jetzt ja einen Dialog, bei dem man die Serververzeichnisse durchsuchen 
kann. Da man dafür wohl am besten gleich den Dialog für den universellen 
Dateiupload (der noch nicht existiert xD) benutzt, habe ich mir mal 
Gedanken gemacht wie der etwa aussehen könnte (siehe Anhang). 
Kritik/Verbesserungsvorschläge sind erwünscht.

Der Dialog müsste beim Schliessen einfach dem aufrufenden Fenster den 
Dateipfad der markierten Datei übermitteln.

Ich hab mal selber ein bisschen probiert sowas zu bauen, aber mit meinen 
mageren php-Kenntnissen wird das nichts ;-)

Gibts Freiwillige? :-D

EDIT:
Ach ja, das Umbenennen/Löschen/Kopieren/Hochladen ist nur im Ordner 
media/ erlaubt. Auf die anderen beiden Ordner hat der User nur 
Lesezugriff.

von Udo N. (weinbauer73)


Lesenswert?

Sowas wäre wohl ein Fall für Ajax (Javascript) :-) Das wäre dann auch 
der Grund für die Beseitigung der Frames (sind obsolete und sollen 
irgendwann von den Browsern nicht mehr unterstützt werden).

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Sowas wäre wohl ein Fall für Ajax (Javascript) :-) Das wäre dann auch
> der Grund für die Beseitigung der Frames (sind obsolete und sollen
> irgendwann von den Browsern nicht mehr unterstützt werden).

Okay, also definitiv nichts für mich :-)

Ich habe übrigens jetzt (r479) unter Konfiguration/Datenbank die 
Möglichkeit eingefügt, direkt ein Backup von der Datenbank zu erzeugen 
und auf dem Server unter backup/ abzulegen. Auch kann man jedes 
existierende Backup herunterladen oder löschen.

Ich hoffe das funktioniert bei euch auch ;-)

von Gelöscht (kami89)


Lesenswert?

Ist ja richtig ruhig hier im Moment :-D

Ich war mal wieder fleissig am Arbeiten, und ich muss schon sagen, so 
langsam fang ich an PHP zu mögen :-)

Die Umstellung auf die vollständigen Dateinamen habe ich jetzt ins SVN 
geladen (r480). Die Footprintbilder werden jetzt nicht mehr im ganzen 
footprint-Ordner gesucht, sondern es wird direkt die Datei genommen, 
deren Pfad in der Datenbank abgelegt ist (beim entsprechenden 
Footprint).

Das Laden der Liste sollte jetzt also einiges schneller gehen.

Nach dem Update funktionieren kurzfristig jedoch alle Footprint-Bilder 
nicht mehr. Aber keine Panik, das ist nicht schlimm :-) Auf der 
Startseite sollte gleich der Hinweis kommen, dass es fehlerhafte 
Dateinamen für die Footprintbilder gibt. Unter Bearbeiten/Footprints 
werden all diese fehlerhaften Footprints aufgelistet und falls 
vorhanden, gleich passende Dateien vorgeschlagen.

Eigentlich müsst ihr diese Vorschläge gar nicht überprüfen. Wenn ihr 
einfach auf "Alle Übernehmen" klickt sollte nachher alles wieder genau 
so sein wie vor der Umstellung. Dass einige Pfade gelöscht werden sieht 
zwar schlimm aus, ist es aber nicht, da die entsprechenden Footprints 
schon vorher kein Bild sollten gehabt haben.

Wenn ihr aber auf "markierte übernehmen" klickt, werden schonmal alle 
Footprints, die vorher ein Bild hatten, wieder mit dem richtigen Bild 
verknüpft. Danach habt ihr gleich noch eine Liste von Footprints, die 
schon vorher kein Bild hatten. Diese können dann mit den Dropdown-Listen 
ganz einfach mit einem Bild verknüpft werden, falls gewünscht.

Ich habe es bei mir gründlich durchgetestet, und ich konnte keine Fehler 
mehr entdecken. Eine Datenbanksicherung vor der Übernahme kann aber 
trotzdem nicht schaden ;-)

mfg

von Udo N. (weinbauer73)


Lesenswert?

Ich hab mir die 479er gezogen und werde die Änderungen dort einpflegen. 
Die Version 12 der Datenbank habe ich auch schon als create.sql 
gesichert, damit man nicht erst die alte Version installieren und dann 
updaten muss. Ich werde wohl noch eine install.php erstellen, die die 
Ersteinrichtung erleichtert.

Wenn ich die Migration von 446 auf 479 abgeschlossen habe, werde ich 
diese dann auch ins SVN kopieren.

Grüße
Udo

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Ich hab mir die 479er gezogen und werde die Änderungen dort einpflegen.

Heisst das, die Änderungen von r480 sind dann wieder weg?
Die Revision 480 ist eigentlich relativ wichtig, da dort das neue 
Footprintsystem mehr oder weniger fertig implementiert ist (sobald der 
neue Upload-Dialog vorhanden ist, muss der noch mit dem Footprintsystem 
"verknüpft" werden, aber sonst ist es soweit fertig).

Ich wäre noch froh um Feedback ob die Umstellung aufs neue 
Footprintsystem problemlos funktioniert hat, und vor allem ob nun die 
Auflistung vieler Teile viel schneller geht als vorher (einige hatten ja 
Probleme dass bereits Timeouts eingesetzt haben, die hatte ich jedoch 
nicht).

mfg

von Udo N. (weinbauer73)


Lesenswert?

Ich kann auch die 480 nehmen, hab die 479 am Donnerstag auf mein Büro-PC 
geladen. Hab ja nur einen kleinen Teil anpassen können bisher.

von Gelöscht (kami89)


Lesenswert?

ah okay das wär nicht schlecht ;-)
Oder auch gleich r481, aber da hab ich nur der Hinweis bei den 
Footprints eingefügt, dass es empfohlen wäre vor dem automatischen 
Korrigieren der Dateinamen eine Datenbanksicherung durchzuführen :-D
Den hab ich sicherheitshalber mal eingefügt damit man theoretisch wieder 
aufs alte System wechseln könnte, falls irgendwas schiefgelaufen wäre.

Ach ja, sofern niemand reklamiert ich hätte mit r480 seine Datenbank 
zerschossen, werde ich das SVN in nächster Zeit in Ruhe lassen ;-) Du 
kannst also deine Migration durchführen ohne dass ich wieder dazwischen 
funke ;-)

von Udo N. (weinbauer73)


Lesenswert?

Warum nicht gleich bei einem Update der Datenbank ein Backup 
durchführen? Da muss der User nicht das per Hand anwerfen.

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Warum nicht gleich bei einem Update der Datenbank ein Backup
> durchführen? Da muss der User nicht das per Hand anwerfen.

Die Idee hatte ich auch schon. Aber die Revision 480 beinhaltet gar kein 
Datenbankupdate, würde dann also keine automatische Sicherung auslösen 
;-)
Und extra ein DB-Update "simulieren" finde ich nicht sehr schön...

Die Umstellung der Footprint-Dateinamen auf vollständige Pfadangaben 
passiert ja eh nicht automatisch, sondern muss manuell durchgeführt 
werden. Daher denke ich reicht auch ein kleiner Hinweis inkl. Link auf 
die Seite, auf der man jetzt ja ganz einfach per Mausklick eine 
Sicherung erstellen lassen kann.

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
> Udo Neist schrieb:
>> Warum nicht gleich bei einem Update der Datenbank ein Backup
>> durchführen? Da muss der User nicht das per Hand anwerfen.
>
> Die Idee hatte ich auch schon. Aber die Revision 480 beinhaltet gar kein
> Datenbankupdate, würde dann also keine automatische Sicherung auslösen
> ;-)

Ich würde in dem Fall zwei DB-Updates definieren. Ein Major-Update mit 
Versionsänderung und ein Minor-Update mit Änderungen auf 
System-/Datenebene.

> Und extra ein DB-Update "simulieren" finde ich nicht sehr schön...

Geht schneller als man denkt. Einfach ein mysqldump vor dem Update auf 
der Kiste durchführen und nach dem Update schauen, ob alles geht. Wenn 
nicht einfach den Dump mit "mysql <dump.sql" zurückspielen (User, 
Passwort und Datenbank angeben nicht vergessen). Dazu braucht man kein 
phpMyAdmin.

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Ich würde in dem Fall zwei DB-Updates definieren. Ein Major-Update mit
> Versionsänderung und ein Minor-Update mit Änderungen auf
> System-/Datenebene.

Wär auch eine Möglichkeit. Ich notier das mal in unseren Issues.

> Geht schneller als man denkt. Einfach ein mysqldump vor dem Update auf
> der Kiste durchführen und nach dem Update schauen, ob alles geht. Wenn
> nicht einfach den Dump mit "mysql <dump.sql" zurückspielen (User,
> Passwort und Datenbank angeben nicht vergessen). Dazu braucht man kein
> phpMyAdmin.

Jo, stimmt. Eine Sicherung durchführen geht jetzt ja auch schon ohne 
phpMyAdmin, falls du das noch nicht mitgekriegt hast ;-) Die 
Möglichkeit, eine Sicherung wiederherzustellen kommt auch noch.

von Udo N. (weinbauer73)


Lesenswert?

Ich habe heute die Revision 483 angefangen umzustellen und bereits einen 
Teil geschafft. Nur klappt es mit dem Anlegen eines Branches nicht. 
Google wirft mich mit Fehler 405 raus. Ich denke, man müsste mich noch 
in die Liste der Committer aufnehmen :(

von Udo N. (weinbauer73)


Lesenswert?

Nachdem ich ein paar Infos über Googlecode und Subversion gelesen und 
noch einen Gmail-Account erstellt habe, werde ich beim Kopieren des 
Hauptzweiges in ein Branch bzw. beim Import mit "access forbidden" 
rausgeworfen. Ich arbeite auf der Konsole.

von b.r (Gast)


Lesenswert?

Udo Neist schrieb:
> Ich denke, man müsste mich noch
> in die Liste der Committer aufnehmen :(
Bist Du denn hier schon drin: 
http://code.google.com/p/part-db/people/list
Falls nicht, schick doch theborg mal 'ne Mail.

Grüße
b

von Udo N. (weinbauer73)


Lesenswert?

Ne, deswegen ja :) Ich stell morgen erstmal die neue Version auf "mein" 
Webspace, bis ich ein Zugang habe.

Udo

von K. J. (Gast)


Lesenswert?

haste ;-)

von Udo N. (weinbauer73)


Lesenswert?

Danke :-) Werde nachher die heutige Version ins Repo einstellen.

von Udo N. (weinbauer73)


Lesenswert?

Ich hab die Revision 483 in der Version 20120711 nach 
http://part-db.googlecode.com/svn/branches/uneist/ hochgeladen (-> 
Revision 484) und versuche gerade die Version 20120713 als Update 
einzustellen. Noch klappt das nicht, bin mit svn noch am kämpfen.

von Udo N. (weinbauer73)


Lesenswert?

Update erfolgreich. Version 20120713 als Revision 485 gespeichert.

Die Anleitungen zu svn sind teilweise unbrauchbar oder schwer 
verständlich. Warum schreibt denn niemand was vernünftiges? Arbeitskopie 
ist die lokale Kopie, die nach dem ersten Checkout entsteht. Führt zur 
Verwirrung, wenn man die Begriffe nicht kennt.

Hier mal ein kurze Zusammenfassung meiner Vorgehensweise für 
Konsolenfanatiker ;-)

A. Erster Import (wichtig, falls man neu beginnt)
1
svn import LOCALDIR URL
B. Kopie (Fork, Branch) erstellen (wenn man mit einer bestehenden 
Revision starten will)
1
svn copy URL URL2

Startet man komplett neu und hat bereits ein Repo angelegt (z.b. bei 
googlecode.com), so würde man mit Variante A beginnen. Startet man einen 
neuen Zweig, so würde sich Variante B anbieten.

Anschliessend erfolgt der erste Checkout.
1
svn checkout URL LOCALDIR

Für die tägliche Arbeit sind die nachfolgenden Schritte einzuhalten.

1. Einbindung neuer Dateien/Verzeichnisse im lokalen Verzeichnis
1
svn add * --force
2. Löschen einer Datei oder eines Verzeichnisses im lokalen Verzeichnis
1
svn delete FILE/DIR
3. Synchronisiert des lokalen Verzeichnises mit der URL (wird durch das 
Checkout gespeichert)
1
svn update
4. Freigabe des Updates
1
svn commit -m COMMENT

Die Schritte 1 und 2 werden nur benötigt, wenn sich im Verzeichnisbaum 
was ändert. Ändert man nur bestehende Dateien, so kann man direkt mit 
Schritt 3 beginnen. Allerdings gilt bei mehreren Committer im gleichen 
Zweig, dass man den Schritt 3 zuerst ausführt, um Änderungen im Repo 
auch in die eigene Arbeitskopie einfliessen zu lassen. Konflikte müssen 
dann mit den Werkzeugen von svn aufgelöst werden, bevor man weiter 
arbeitet. Danach führt man die Schritte 1 bis 4 aus.

Links: http://svnbook.red-bean.com/nightly/de/svn-book.html

Ich hoffe, ich habe die üblichen Schritte für svn recht gut rüber 
gebracht. Man könnte natürlich auch einen Wiki-Artikel daraus machen, da 
es hier ja auch einen svn -Server gibt.

von Stefan (Gast)


Lesenswert?

Ich habe heute abend mal die partDB installiert und finde sie wirklich 
prima. Super easy aufzusetzen und einfach zu durchschauen. Bis auf 
Kleinigkeiten ist es genau das, was ich immer gesucht habe !
Ich werde mal die "Kleinigkeiten" in loser Abfolge auflisten, so dass 
sich evtl. eine Diskussion über deren Sinnhaftigkeit ergibt.
- Footprint (1): das Bild in der ersten Spalte nervt -mich zumindest und 
an dieser Position- sehr, da immer wenn die Maus auf dem Weg zum Eintrag 
darüber kommt, das Bild groß aufpoppt und dann im Weg steht. Evtl. 
könnte das in die letzte Spalte verschieben.
- Footprint (2): Da an sich immer Abbildungen fehlen werden (SC70, SC74, 
MLF, Diode in 0603, ...) und nicht jeder Wert auf eine Abbildung legt, 
wäre ein alternatives Eingabefeld sinnvoll; damit kann man auch ohne 
Vorhandensein eines Footprints das Gehäuse für die Listenansicht 
spezifizieren.
- Eingabefeld Preis: ich hätte gern noch eine Menge, auf die sich der 
Preis bezieht. Prima wäre zusätzlich zum Preisfeld noch ein Feld 
'Kalkulationspreis' und 'Kalkulationsmenge', sowie 'Bestellmenge'. Dann 
könnte man eingeben: 49 Euro je 100 Stück, bei Bestellmenge 4000 Stück. 
Wenn sich der Stückpreis dann automatisch aus 49/100 ergibt, ware das 
nicht uncool ;)
- Ich wünschte mir eine Art Log, das anzeigt, wann und wie viele einer 
Baugruppe gebucht wurden. Dort könnte man eine Buchung -hoffentlich- 
auch rückgängig machen, sofern man aus Versehen mal 'was Falsches 
eingegeben hat.

Eine Frage noch: wenn man spendet, wem kommt das zu gute ?

Gruß, Stefan

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Die Anleitungen zu svn sind teilweise unbrauchbar oder schwer
> verständlich.

Deshalb nutze ich lieber GUIs, da braucht man keine Anleitung, da kann 
man einfach mal wild drauflosklicken und schauen was passiert :-D Und 
wenn sich der SVN-Client sogar noch in den Dateibrowser integriert und 
bei jeder einzelnen Datei anzeigt ob sie der aktuellsten SVN-Revision 
entspricht, ist das sogar auch noch sehr nützlich :-D

Stefan schrieb:
> - Footprint (1): das Bild in der ersten Spalte nervt -mich zumindest und
> an dieser Position- sehr, da immer wenn die Maus auf dem Weg zum Eintrag
> darüber kommt, das Bild groß aufpoppt und dann im Weg steht. Evtl.
> könnte das in die letzte Spalte verschieben.

Okay, das wäre dann also eine zusätzliche Konfigurationsmöglichkeit. Da 
die Konfiguration sowieso aus der config.php verschwinden und in die 
SQL-Datenbank verschoben werden soll, denke ich wir warten noch mit 
diesem Feature.
Da käme mir nämlich gerade eine ganz coole Idee in den Sinn: Es soll ja 
in Zukunft auch eine Benutzerverwaltung geben. Das würde dann 
ermöglichen, dass jeder Benutzer seine Spalten selber konfigurieren 
kann. Ich denke danach sollte jeder zufrieden sein mit der Tabelle :-)

Stefan schrieb:
> - Footprint (2): Da an sich immer Abbildungen fehlen werden (SC70, SC74,
> MLF, Diode in 0603, ...) und nicht jeder Wert auf eine Abbildung legt,
> wäre ein alternatives Eingabefeld sinnvoll; damit kann man auch ohne
> Vorhandensein eines Footprints das Gehäuse für die Listenansicht
> spezifizieren.

Ich denke das ist eine eher weniger gute Idee. Mal abgesehen davon, dass 
es etwas mühsam/unschön zum programmieren ist, hat man einige Nachteile. 
Wenn du nämlich mehreren Bauteilen den gleichen Footprint per manueller 
Eingabe zuordnest, sind sie voneinander völlig unabhängig, obwohl es 
immer um den gleichen Footprint geht. Du kannst also den Footprint nicht 
bei allen betroffenen Bauteilen auf einmal umbenennen, oder falls später 
mal das fehlende Bild dazukommt, kannst du es nicht direkt allen 
betroffenen Bauteilen zuordnen. Viel besser ist es, wenn du beim Anlegen 
eines neuen Bauteiles das Eingabefeld rechts benutzt um gleich einen 
neuen Footprint anzulegen. Das geht genau so einfach wie das von dir 
gewünschte Feature, hat aber die genannten Nachteile nicht.

Stefan schrieb:
> Eingabefeld Preis: ich hätte gern noch eine Menge, auf die sich der
> Preis bezieht. Prima wäre zusätzlich zum Preisfeld noch ein Feld
> 'Kalkulationspreis' und 'Kalkulationsmenge', sowie 'Bestellmenge'. Dann
> könnte man eingeben: 49 Euro je 100 Stück, bei Bestellmenge 4000 Stück.
> Wenn sich der Stückpreis dann automatisch aus 49/100 ergibt, ware das
> nicht uncool ;)

Die Angabe der Stückzahl habe ich auch schon im Sinn gehabt. Ich denke 
das lässt sich so einbauen. Wie der Preis dann in den Tabellen angezeigt 
wird ist halt Geschmackssache. Vermutlich wäre das beste, wenn dort nur 
der Einzelpreis steht, ohne Stückzahl. Das mit der Bestellmenge wird 
dann etwas komplizierter, wenn man es mit dem Preis verknüpfen will. 
Dann müsste es eigentlich ja fast die Möglichkeit geben, pro Bauteil 
mehrere Preise anzugeben (für verschiedene Bestellmengen). Wäre sicher 
nützlich für den professionellen Einsatz, aber gibt viel Aufwand. Mal 
schauen ob das was wird ;-)

Stefan schrieb:
> - Ich wünschte mir eine Art Log, das anzeigt, wann und wie viele einer
> Baugruppe gebucht wurden. Dort könnte man eine Buchung -hoffentlich-
> auch rückgängig machen, sofern man aus Versehen mal 'was Falsches
> eingegeben hat.

Keine schlechte Idee, vorallem auch im Bezug auf die Benutzerverwaltung 
die ja noch kommen soll. Dann könnten die "Admins" auch nachvollziehen 
was andere Leute so in der Datenbank "rumfummeln" und können 
Fehlbuchungen rückgängig machen. Würde ich als durchaus nützlich 
betrachten.

Stefan schrieb:
> Eine Frage noch: wenn man spendet, wem kommt das zu gute ?

Gute Frage ;-) Ich denke die Frage geht an K.J.

Danke für die Vorschläge, ich nehme sie mal in unsere TODO-Liste auf.

mfg

von Stefan . (xin)


Lesenswert?

> Das würde dann ermöglichen, dass jeder Benutzer seine Spalten selber
> konfigurieren kann. Ich denke danach sollte jeder zufrieden sein mit der
> Tabelle :-)
Würde ich auch als die beste Lösung betrachten. Zumal sich mein Problem 
mit den Abbildungen der Footprints wahrscheinlich eh' erledigt hat.

> Du kannst also den Footprint nicht bei allen betroffenen Bauteilen auf
> einmal umbenennen, oder falls später mal das fehlende Bild dazukommt,
> kannst du es nicht direkt allen betroffenen Bauteilen zuordnen.
> ...
> Viel besser ist es, wenn du beim Anlegen eines neuen Bauteiles das
> Eingabefeld rechts benutzt ...
Also 'Bild hochladen' erzeugt einen neuen Footprint ?  Dann ist ja alles 
in Ordnung. Ich finde -und jetzt nicht böse sein- dass hier eh' zu viel 
Wert auf die Abbildungen gelegt wird; 2/3 des Threads scheinen sich mit 
Footprints auseinanderzusetzen. Da ich weiß, wie ein 0603er oder ein 
MSOP10 aussieht, reicht mir die Angabe des FP im Klartext, also 
KERKO_0402 oder KERKO_0603. Deshalb werde ich einfach weiße-1-pixel-gifs 
als FP benutzen. Damit sollte sich dann auch meine Problematik mit den 
aufpoppenden Bildern erledigt haben.

Also mehrere Preise brauche ich nicht; alternative Bauteile anderer 
Hersteller könnte ich ggf. in den Kommentaren unterbringen, nur ist eben 
die Preisangabe so wie bisher umgesetzt, eher auf den Reichelt-Besteller 
ausgerichtet. Das soll nicht abwertend sein (!), sondern nur 
verdeutlichen, dass andere Anwender auch andere Anforderungen haben :) 
Bei der von mir vorgeschlagenen Erweiterung handelt es sich im Grunde 
genommen ja auch nur um 3 neue Datenbankfelder und Minimalarithmetik. 
Jedoch geben viele Anbieter den Preis bezogen auf 100 an. Und zu 
vermerken, ab welcher Stückzahl der genannte Preis gilt, ist immer 
hilfreich, da Mouser, Farnell, Digikey, Schukat und eigentlich alle 
außer Reichelt mit Staffelpreisen arbeiten.
Btw: kann man eigentlich einstellen, dass der Preis in Cent angegeben 
wird ?  0.0011 Euro liest sich einfach bescheiden. Da muss ich immer 
erst lange nachdenken, bevor ich weiß, was das Bauteil wirklich kostet 
;)

Eine Log-Tabelle für abgebuchte Baugruppen, mit Korrekturmöglichkeit, 
halte ich für sehr wichtig und würde für die Implementierung auch 
bezahlen.

André hat geschrieben:
> Mich hatt es gestört, dass ich die Datenblätter nicht vom aktuellen
> Rechner hochladen konnte, sodass ich den Code in Anlehnung an die Bilder
> umgeändert habe, so dass man zusätzlich Datenblätter in den Ordner
> hochladen kann der in der config.php als datasheet_path angegeben ist.
> Es wäre bei den Datenblättern noch gut, wenn man einen Titel eingeben
> könnte (der originale Dateiname würde meist schon reichen), vielleicht
> passe ich das noch an. (datasheet.patch)

Stört mich auch sehr. Ich habe die V2.2 installiert, bei der diese 
Funktion leider nicht vorhanden ist. Ist dieser Patch nie eingeflossen ?

von K. J. (Gast)


Lesenswert?

Urban B. schrieb:
> Stefan schrieb:
>> Eine Frage noch: wenn man spendet, wem kommt das zu gute ?
>
> Gute Frage ;-) Ich denke die Frage geht an K.J.
>
> Danke für die Vorschläge, ich nehme sie mal in unsere TODO-Liste auf.
>
> mfg

Hm ist bis jetzt noch nicht Passiert ;-) da hab ich mir noch keine 
Gedanken drum gemacht, ich würde es einfach erstmal sammeln, 
ursprünglich war es gedacht damit ich damit meinen Server Finanzieren 
kann jetzt wo so viele andere mitmachen müsste man sich da was 
überlegen.

von Gelöscht (kami89)


Lesenswert?

Stefan --- schrieb:
>> Du kannst also den Footprint nicht bei allen betroffenen Bauteilen auf
>> einmal umbenennen, oder falls später mal das fehlende Bild dazukommt,
>> kannst du es nicht direkt allen betroffenen Bauteilen zuordnen.
>> ...
>> Viel besser ist es, wenn du beim Anlegen eines neuen Bauteiles das
>> Eingabefeld rechts benutzt ...
> Also 'Bild hochladen' erzeugt einen neuen Footprint ?  Dann ist ja alles
> in Ordnung.

Nein, nicht "Bild hochladen". Wenn du ein neues Bauteil anlegst gibt es 
auf der rechten Seite die Möglichkeit den gewünschten Footprint in das 
Feld "Direkteingabe/Neu" einzutippen. Ist der eingetippte Footprint 
schon in der Datenbank vorhanden (ob mit oder ohne Bild) wird dieser dem 
Bauteil zugewiesen. Ist der Footprint noch nicht vorhanden, wird er 
direkt neu angelegt und dann dem Bauteil zugewiesen. Verstehst du wie 
ich meine? Oder habe ich dich irgendwie falsch verstanden?

Footprint und Footprint-Bild haben erstmal nichts miteinander zu tun, 
das wissen viele nicht. Die Footprintverwaltung ist einfach dazu da, 
dass die Footprints auch gescheit mit den Bauteilen verknüpft sind. Also 
dass alle Bauteile im DIP08 Gehäuse auf den genau gleichen Footprint 
zeigen. Optional kann man den Footprints dann aber zusätzlich auch noch 
Bilder zuweisen, damit sie direkt in den Tabellenansichten als Icon 
erscheinen. Das ist kein muss sondern ein dürfen.

> Ich finde -und jetzt nicht böse sein- dass hier eh' zu viel
> Wert auf die Abbildungen gelegt wird; 2/3 des Threads scheinen sich mit
> Footprints auseinanderzusetzen. Da ich weiß, wie ein 0603er oder ein
> MSOP10 aussieht, reicht mir die Angabe des FP im Klartext, also
> KERKO_0402 oder KERKO_0603. Deshalb werde ich einfach weiße-1-pixel-gifs
> als FP benutzen. Damit sollte sich dann auch meine Problematik mit den
> aufpoppenden Bildern erledigt haben.

Naja ich persönlich finde die Bilder sehr nützlich. Man sieht schon auf 
den ersten Blick gleich bildlich mit was man es zu tun hat. Aber wie 
gesagt, die Bilder sind ja freiwillig - du musst sie nicht benutzen. Du 
musst aber auch kein eigenes weisses Bild hochladen, wenn du ein 
Footprint wählst der kein Bild hat, dann wird auch kein Bild in der 
Tabelle angezeigt.

Stefan --- schrieb:
> Also mehrere Preise brauche ich nicht; alternative Bauteile anderer
> Hersteller könnte ich ggf. in den Kommentaren unterbringen, nur ist eben
> die Preisangabe so wie bisher umgesetzt, eher auf den Reichelt-Besteller
> ausgerichtet. Das soll nicht abwertend sein (!), sondern nur
> verdeutlichen, dass andere Anwender auch andere Anforderungen haben :)
> Bei der von mir vorgeschlagenen Erweiterung handelt es sich im Grunde
> genommen ja auch nur um 3 neue Datenbankfelder und Minimalarithmetik.
> Jedoch geben viele Anbieter den Preis bezogen auf 100 an. Und zu
> vermerken, ab welcher Stückzahl der genannte Preis gilt, ist immer
> hilfreich, da Mouser, Farnell, Digikey, Schukat und eigentlich alle
> außer Reichelt mit Staffelpreisen arbeiten.

Jo aber ich denke wenn wir jetzt noch die zusätzlichen Felder einbauen 
wird früher oder später auch der Wunsch kommen, pro Lieferanten mehrere 
Preise (für unterschiedliche Stückzahlen) eingeben zu können. Ausserdem 
macht es das ganze viel professioneller. Wer weiss, vielleicht habe ich 
später mal eine eigene kleine Firma, und dann möchte ich auch ein 
"richtiges" Lagerverwaltungssystem haben :-D

> Btw: kann man eigentlich einstellen, dass der Preis in Cent angegeben
> wird ?  0.0011 Euro liest sich einfach bescheiden. Da muss ich immer
> erst lange nachdenken, bevor ich weiß, was das Bauteil wirklich kostet
> ;)

Bisher noch nicht. Aber könnte man ja noch einbauen.

Stefan --- schrieb:
> Eine Log-Tabelle für abgebuchte Baugruppen, mit Korrekturmöglichkeit,
> halte ich für sehr wichtig und würde für die Implementierung auch
> bezahlen.

Ich habe es in unsere ToDo-Liste geschrieben, aber es wird wohl schon 
ein Weilchen dauern bis das implementiert ist ;-)

Stefan --- schrieb:
> Stört mich auch sehr. Ich habe die V2.2 installiert, bei der diese
> Funktion leider nicht vorhanden ist. Ist dieser Patch nie eingeflossen ?

Der Upload aller möglichen Dateien wird eh noch umgebaut, da tut sich 
also schon noch was. Bezüglich Version: Du solltest dir jeweils die 
neuste per SVN herunterladen, die Archive sind nicht sehr aktuell: 
http://code.google.com/p/part-db/source/checkout

von Stefan . (xin)


Lesenswert?

> Ist der Footprint noch nicht vorhanden, wird er direkt neu angelegt und
> dann dem Bauteil zugewiesen. Verstehst du wie ich meine? Oder habe ich
> dich irgendwie falsch verstanden?

Hallo,

du hattest mich schon richtig verstanden. Da diese Felder nicht 
bezeichnet waren und die Zuordnung mir als nicht eindeutig erschien, 
habe ich erst einmal nichts damit probiert. Aber vielen Dank für die 
Info, das wird es in Zukunft einfacher machen.

> wenn du ein Footprint wählst der kein Bild hat, dann wird auch kein Bild in
> der Tabelle angezeigt.
Funktioniert - bin zufrieden, vielen Dank !

> die Archive sind nicht sehr aktuell:
> http://code.google.com/p/part-db/source/checkout
Damit bin ich dann doch überfordert :(

von Gelöscht (kami89)


Lesenswert?

Stefan --- schrieb:
>> die Archive sind nicht sehr aktuell:
>> http://code.google.com/p/part-db/source/checkout
> Damit bin ich dann doch überfordert :(

Was für ein Server hast du? Linux? Windows?
Bei Linux kannst du einfach den Befehl
1
svn checkout http://part-db.googlecode.com/svn/trunk/ part-db
im Terminal eingeben, dann wird die neuste Version nach ~/part-db/ 
heruntergeladen. Eventuell musst du erst noch das Paket "subversion" 
installieren. Bei Debian oder Ubuntu mit
1
sudo apt-get install subversion

Bei Windows weiss ich grad nicht wie das geht, müsstest mal nach einem 
SVN Client für Windows suchen.

von Stefan . (xin)


Lesenswert?

> Was für ein Server hast du? Linux? Windows?

Im Moment läuft das auf irgendeinem Webspace; da hab' ich leider keinen 
Konsolenzugriff. Ich muss mal bei uns auf dem lokalen Server eine VM mit 
Linux einrichten und die DB dort einspielen.

Sollten nicht im Interesse aller die nicht an der Entwicklung beteiligt 
sin von Zeit zu Zeit mal Archive aktualisiert werden ?

von Gelöscht (kami89)


Lesenswert?

Stefan --- schrieb:
>> Was für ein Server hast du? Linux? Windows?
>
> Im Moment läuft das auf irgendeinem Webspace; da hab' ich leider keinen
> Konsolenzugriff. Ich muss mal bei uns auf dem lokalen Server eine VM mit
> Linux einrichten und die DB dort einspielen.

Dann kannst du auch bei dir lokal eine Kopie aus dem SVN herunterladen, 
und diese Dateien dann auf den Webspace hochladen.

> Sollten nicht im Interesse aller die nicht an der Entwicklung beteiligt
> sin von Zeit zu Zeit mal Archive aktualisiert werden ?

Ja wäre nicht schlecht, aber das geht halt gerne ein bisschen vergessen 
:-) Wobei ich jetzt aber gar nicht weiss wie alt das letzte Archiv 
eigentlich ist. In unserer ToDo-Liste steht aber auch schon eine 
Updatemöglichkeit direkt aus Part-DB heraus, das wär dann das 
Non-Plus-Ultra wenn das was wird ;-)

Es stehen einige schöne Dinge in unserer ToDo-Liste, aber wir können 
halt auch nicht zaubern ;-)

von Stefan . (xin)


Lesenswert?

> Dann kannst du auch bei dir lokal eine Kopie aus dem SVN herunterladen,
> und diese Dateien dann auf den Webspace hochladen.
Genau das habe ich eben nicht hin bekommen ...

Die letzte Version ist vom 12. Juni, wenn ich mich recht erinnere.

Danke für die Hilfestellung !

von Gelöscht (kami89)


Lesenswert?

Stefan --- schrieb:
>> Dann kannst du auch bei dir lokal eine Kopie aus dem SVN herunterladen,
>> und diese Dateien dann auf den Webspace hochladen.
> Genau das habe ich eben nicht hin bekommen ...

Wo liegt denn das Problem? Für Windows müsstest du halt mal schauen was 
es da für SVN-Clients gibt. Mit einem gescheiten Programm sollte es 
eigentlich keine grosse Sache sein part-db aus dem SVN zu beziehen.

> Die letzte Version ist vom 12. Juni, wenn ich mich recht erinnere.

Okay, das geht ja noch. Aber auch seit dem 12. Juni hat sich schon 
wieder einiges getan.

> Danke für die Hilfestellung !

Kein Problem ;-)

@Udo Neist

Ich habe mir dein branch mal angeschaut. Scheint wirklich nicht so 
kompliziert zu sein wie ich mir das vorgestellt habt. Im Grunde genommen 
trennt man ja einfach html und php.

Was ich aber noch nicht verstanden habe: Ist es nicht auch der Sinn von 
Templates, dass man für die gleiche Seite mehrere (verschiedene) *.tmpl 
Dateien erstellen kann, um dann eben ein anderes "Design" zu erreichen? 
Oder soll es nur ein einziges Template geben?
Falls es mehrere Templates geben soll, sollte man doch im Ordner 
templates/ noch Unterordner für die verschiedenen Templates erstellen 
oder?

Im Ordner /class/vlib/ sind keine part-db spezifischen Dinge drin, das 
ist so unverändert "aus dem Internet heruntergeladen" nehme ich an? Geht 
uns quasi also überhaupt nichts an was da drin ist?

Und was schätzt du, wie lange brauchtst du noch bis du fertig bist?
Also ich wäre dafür, dass wir dann den branch in den trunk übernehmen, 
sobald du fertig bist. Ich weiss momentan auch gar nicht wo ich meine 
Änderungen einpflegen soll, die ich noch gemacht habe.

Übrigens habe ich mal die JavaScript Dialoge wie confirm() und alert() 
angeschaut. Die sind ja extrem einfach anzuwenden, damit könnte man 
locker unsere komischen Weiterleitungen ersetzen.

Kleines Beispiel: Dieser Button
1
<input type="submit" name="delete_file" value="L&ouml;schen">
wird ganz einfach zu:
1
<input type="submit" name="delete_file" value="L&ouml;schen" onclick="return confirm('Achtung!\nDas Backup wird unwiederruflich gel&ouml;scht.')">
Und schon hat man eine Sicherheitsabfrage per JavaScript Dialog drin ;-)

Von mir aus kann ich das überall noch einbauen. Aber ich warte erstmal 
noch ab wie es mit dem branch von Udo weitergeht.

von Udo N. (weinbauer73)


Lesenswert?

> Ich habe mir dein branch mal angeschaut. Scheint wirklich nicht so
> kompliziert zu sein wie ich mir das vorgestellt habt. Im Grunde genommen
> trennt man ja einfach html und php.

Jau, ist eigentlich sehr simple. Vorallem sieht man dann den Code mal 
wieder und muss sich nicht durch HTML-Wust durchwühlen ;-)

> Was ich aber noch nicht verstanden habe: Ist es nicht auch der Sinn von
> Templates, dass man für die gleiche Seite mehrere (verschiedene) *.tmpl
> Dateien erstellen kann, um dann eben ein anderes "Design" zu erreichen?
> Oder soll es nur ein einziges Template geben?
> Falls es mehrere Templates geben soll, sollte man doch im Ordner
> templates/ noch Unterordner für die verschiedenen Templates erstellen
> oder?

Man kann es so machen, aber Sinn von dieser Templates ist eigentlich nur 
die Trennung von Code und Darstellung. Das Design würde ich ganz CSS 
überlassen. Die Basis stellt standard/partdb.css dar. Alle Varianten 
werden zusätzlich geladen und ergänzen/überschreiben die vorherigen 
Definitionen. Wenn es gewünscht wäre, könnte man neben dem CSS auch noch 
die Templates freigeben und würde dann analog zum CSS ein 
Unterverzeichnis in templates/ anlegen.

> Im Ordner /class/vlib/ sind keine part-db spezifischen Dinge drin, das
> ist so unverändert "aus dem Internet heruntergeladen" nehme ich an? Geht
> uns quasi also überhaupt nichts an was da drin ist?

Da ist die Template-Engine drin. Zusätzlich noch vlibDate und 
vlibMimeMail, die hier zwar nicht gebraucht werden, aber zu der Engine 
gehören. Gibts so im Paket.

> Und was schätzt du, wie lange brauchtst du noch bis du fertig bist?
> Also ich wäre dafür, dass wir dann den branch in den trunk übernehmen,
> sobald du fertig bist. Ich weiss momentan auch gar nicht wo ich meine
> Änderungen einpflegen soll, die ich noch gemacht habe.

Ich werde diese Woche im Büro noch die Änderungen machen. Könnte bis 
Ende der Woche klappen, je nach Arbeit.

> Übrigens habe ich mal die JavaScript Dialoge wie confirm() und alert()
> angeschaut. Die sind ja extrem einfach anzuwenden, damit könnte man
> locker unsere komischen Weiterleitungen ersetzen.
>
> Kleines Beispiel: Dieser Button
>
1
<input type="submit" name="delete_file"
2
> value="L&ouml;schen">
> wird ganz einfach zu:
>
1
<input type="submit" name="delete_file" value="L&ouml;schen"
2
> onclick="return confirm('Achtung!\nDas Backup wird unwiederruflich
3
> gel&ouml;scht.')">
> Und schon hat man eine Sicherheitsabfrage per JavaScript Dialog drin ;-)

Eventuell einfach ein div-Element bauen, das die Dialoge aufnimmt. So 
können wir die nicht immer gerade hübschen Dialoge der Browser umgehen. 
Wäre dann auch für die PopUps nutzbar. Nur lasse ich das erstmal weg. 
Die Änderungen dazu würden erstmal stören.

> Von mir aus kann ich das überall noch einbauen. Aber ich warte erstmal
> noch ab wie es mit dem branch von Udo weitergeht.

Naja, muss so einiges noch aufräumen. Hier mal den HTML-Code außerhalb 
von PHP, dort mal mit print() ausgegeben. Manche Routinen rufen sich 
selbst wieder auf und ich muss da erstmal die Ausgabe abfangen und 
aufarbeiten. Erst wenn ich alles gemacht habe, kann ich diese Dinge 
umbauen. Was ich in dem Zug auch noch machen werde, ist die Aufteilung 
der lib.php in verschiedene Bibliotheken. Wird dann übersichtlicher :)

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Man kann es so machen, aber Sinn von dieser Templates ist eigentlich nur
> die Trennung von Code und Darstellung. Das Design würde ich ganz CSS
> überlassen. Die Basis stellt standard/partdb.css dar. Alle Varianten
> werden zusätzlich geladen und ergänzen/überschreiben die vorherigen
> Definitionen. Wenn es gewünscht wäre, könnte man neben dem CSS auch noch
> die Templates freigeben und würde dann analog zum CSS ein
> Unterverzeichnis in templates/ anlegen.

OK. Aber wenn es theoretisch möglich ist, durch vlib verschiedene 
Templates zu erstellen, würde es vielleicht auch nicht schaden wenn man 
das soweit schonmal vorbereiten würde. Also einfach das, was jetzt im 
template/ Ordner liegt, einfach noch eine Ebene tiefer schieben, also 
z.B. template/standard/. Sollte ja nicht weiter stören, würde aber eine 
spätere Nachrüstung von zusätzlichen Templates erleichtern.

> Eventuell einfach ein div-Element bauen, das die Dialoge aufnimmt. So
> können wir die nicht immer gerade hübschen Dialoge der Browser umgehen.
> Wäre dann auch für die PopUps nutzbar. Nur lasse ich das erstmal weg.
> Die Änderungen dazu würden erstmal stören.

Stimmt, im IE sehen die Dialoge nicht gerade hübsch aus. Im FF finde ich 
sie aber eigentlich sehr schön.

> Naja, muss so einiges noch aufräumen. Hier mal den HTML-Code außerhalb
> von PHP, dort mal mit print() ausgegeben. Manche Routinen rufen sich
> selbst wieder auf und ich muss da erstmal die Ausgabe abfangen und
> aufarbeiten. Erst wenn ich alles gemacht habe, kann ich diese Dinge
> umbauen. Was ich in dem Zug auch noch machen werde, ist die Aufteilung
> der lib.php in verschiedene Bibliotheken. Wird dann übersichtlicher :)

Daran habe ich auch schon gedacht, die lib.php ist echt schon ziemlich 
umfangreich. Auch würde ich vielleicht noch ein paar Dateinamen ändern, 
z.B. config_page.php ist ein etwas komischer Name für diese Seite.

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
> OK. Aber wenn es theoretisch möglich ist, durch vlib verschiedene
> Templates zu erstellen, würde es vielleicht auch nicht schaden wenn man
> das soweit schonmal vorbereiten würde. Also einfach das, was jetzt im
> template/ Ordner liegt, einfach noch eine Ebene tiefer schieben, also
> z.B. template/standard/. Sollte ja nicht weiter stören, würde aber eine
> spätere Nachrüstung von zusätzlichen Templates erleichtern.

Kann ich machen, ist ja kein großes Thema. Ich werde dann aber die 
Variable $css in $theme umbenennen.

> Stimmt, im IE sehen die Dialoge nicht gerade hübsch aus. Im FF finde ich
> sie aber eigentlich sehr schön.

Am besten mal in die ToDo-Liste aufnehmen, das man die Dialoge/PopUps 
ändern sollte. Auch gleich mal daran denken, die Frame-Sache 
umzustellen, da diese ja schon seit Jahren als Auslaufmodell gelten und 
irgendwann nicht mehr unterstützt werden. Per XMLHttpRequest lässt es 
sich leichter arbeiten (GET, POST) und in ein DIV-Element reinschreiben 
(Suchbegriff: Ajax)

> Daran habe ich auch schon gedacht, die lib.php ist echt schon ziemlich
> umfangreich. Auch würde ich vielleicht noch ein paar Dateinamen ändern,
> z.B. config_page.php ist ein etwas komischer Name für diese Seite.

setup_db.php und setup_system.php?

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Kann ich machen, ist ja kein großes Thema. Ich werde dann aber die
> Variable $css in $theme umbenennen.

Wie würdest du die Idee finden, wenn wir die CSS-Dateien gleich in die 
jeweiligen template-Ordner verschieben würden? Dann hat quasi jedes 
Template (falls es mal noch andere geben wird) seine eigenen 
CSS-Dateien. So wäre man dann relativ flexibel was die Gestaltung 
angeht.

Muss ja nicht sein dass es mal noch andere Templates gibt. Aber ich bin 
da jeweils der Meinung man sollte sich alle Möglichkeiten offenhalten. 
Was im jetztigen Moment nur eine kleine Änderung bedeutet, kann später 
mal vier Arbeit geben das umzurüsten.

Udo Neist schrieb:
> Am besten mal in die ToDo-Liste aufnehmen, das man die Dialoge/PopUps
> ändern sollte. Auch gleich mal daran denken, die Frame-Sache
> umzustellen, da diese ja schon seit Jahren als Auslaufmodell gelten und
> irgendwann nicht mehr unterstützt werden. Per XMLHttpRequest lässt es
> sich leichter arbeiten (GET, POST) und in ein DIV-Element reinschreiben
> (Suchbegriff: Ajax)

Kann ich so mal in die ToDO-Liste aufnehmen.

Udo Neist schrieb:
> setup_db.php und setup_system.php?

Ja, oder noch näher ans Menü angelehnt config_db.php und 
config_system.php
Vielleicht könnte man das auch für die anderen Dateien so übernehmen, 
also edit_footprints.php, edit_supplier.php usw.

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
> Wie würdest du die Idee finden, wenn wir die CSS-Dateien gleich in die
> jeweiligen template-Ordner verschieben würden? Dann hat quasi jedes
> Template (falls es mal noch andere geben wird) seine eigenen
> CSS-Dateien. So wäre man dann relativ flexibel was die Gestaltung
> angeht.
>
> Muss ja nicht sein dass es mal noch andere Templates gibt. Aber ich bin
> da jeweils der Meinung man sollte sich alle Möglichkeiten offenhalten.
> Was im jetztigen Moment nur eine kleine Änderung bedeutet, kann später
> mal vier Arbeit geben das umzurüsten.

Ich habe es derzeit so umgesetzt, das CSS und Templates getrennt sind. 
Aber ich kann prüfen, ob es in den Templates auch eine partdb.css gibt 
und die zusätzlich zum Standard laden. Alternativ wird die 
standardmäßige CSS-Datei in die Theme-CSS integriert und man lädt in der 
vlib_head.tmpl nur noch ein CSS.

>> Am besten mal in die ToDo-Liste aufnehmen, das man die Dialoge/PopUps
>> ändern sollte. Auch gleich mal daran denken, die Frame-Sache
>> umzustellen, da diese ja schon seit Jahren als Auslaufmodell gelten und
>> irgendwann nicht mehr unterstützt werden. Per XMLHttpRequest lässt es
>> sich leichter arbeiten (GET, POST) und in ein DIV-Element reinschreiben
>> (Suchbegriff: Ajax)
>
> Kann ich so mal in die ToDO-Liste aufnehmen.

:-)

>> setup_db.php und setup_system.php?
>
> Ja, oder noch näher ans Menü angelehnt config_db.php und
> config_system.php
> Vielleicht könnte man das auch für die anderen Dateien so übernehmen,
> also edit_footprints.php, edit_supplier.php usw.

config_db.php existiert bereits. Darin hab ich die 
Datenbankkonfiguration ausgelagert, um schneller zwischen verschiedenen 
Rechner/Datenbanken umswitchen zu können (entwickel ja nicht nur hier zu 
Hause ;-) ).

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Ich habe es derzeit so umgesetzt, das CSS und Templates getrennt sind.
> Aber ich kann prüfen, ob es in den Templates auch eine partdb.css gibt
> und die zusätzlich zum Standard laden. Alternativ wird die
> standardmäßige CSS-Datei in die Theme-CSS integriert und man lädt in der
> vlib_head.tmpl nur noch ein CSS.

Oder man macht es wie bisher, aber man soll dann in der Konfiguration 
Template und CSS separat, voneinander unabhängig wählen können. Zuerst 
dachte ich man soll einfach Template und CSS gleichnamig machen um sie 
so quasi miteinander verknüpfen zu können, aber das ist auch nichts weil 
es dann auch für jede CSS ein eigenes Template geben muss...

Udo Neist schrieb:
> config_db.php existiert bereits. Darin hab ich die
> Datenbankkonfiguration ausgelagert, um schneller zwischen verschiedenen
> Rechner/Datenbanken umswitchen zu können (entwickel ja nicht nur hier zu
> Hause ;-) ).

Ah ja daran habe ich gar nicht gedacht dass es die Datei schon gibt. 
Allerdings wenn man sich überlegt dass der grösste Teil der 
Konfiguration eh in die Datenbank ausgelagert werden soll, würde 
schlussendlich eh nur noch die Datenbankkonfiguration übrig bleiben, und 
die könnte man ja in der config.php belassen.

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
> Oder man macht es wie bisher, aber man soll dann in der Konfiguration
> Template und CSS separat, voneinander unabhängig wählen können. Zuerst
> dachte ich man soll einfach Template und CSS gleichnamig machen um sie
> so quasi miteinander verknüpfen zu können, aber das ist auch nichts weil
> es dann auch für jede CSS ein eigenes Template geben muss...

Ich habe jetzt CSS und Template zusammengeführt. Das Thema "Greenway" 
setzt das Thema "standard" vorraus. Wenn man das CSS eines Themas 
anpassen will, so sollte man jetzt ein neues Thema erstellen (kopieren 
des alten). Ein Alternativ-CSS geht derzeit nicht.

> Ah ja daran habe ich gar nicht gedacht dass es die Datei schon gibt.
> Allerdings wenn man sich überlegt dass der grösste Teil der
> Konfiguration eh in die Datenbank ausgelagert werden soll, würde
> schlussendlich eh nur noch die Datenbankkonfiguration übrig bleiben, und
> die könnte man ja in der config.php belassen.

Ich würde nicht alles in die Datenbank auslagern, sondern eine 
Basisinstallation machen. Damit ist das System immer lauffähig und zudem 
hat man die Defaults für einen neuen User auch gleich :)

PS: Revision 486 ist zwar hochgeladen, aber irgendwas ist schief 
gelaufen. Da fehlen einige Dateien :(

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Ich würde nicht alles in die Datenbank auslagern, sondern eine
> Basisinstallation machen. Damit ist das System immer lauffähig und zudem
> hat man die Defaults für einen neuen User auch gleich :)

Also wenn ich mir die config.php (aus dem trunk) so anschaue, sehe ich 
da ausser dem Datenbankzeugs und dem Zeichensatz keine wichtigen 
Einstellungen. Die Seite würde auch ohne diesen ganzen Kram laufen, also 
auch wenn die Einstellungen in der Datenbank fehlen würden. Viele von 
diesen Einstellungen würden vor allem auch benutzerbezogen Sinn machen, 
also müssten sie sowieso aus der config.php raus. Und defaults können 
direkt bei der Auswertung gesetzt werden, so ist es jetzt ja 
(teilweise?) auch schon gemacht. Ist eine Einstellung in der config.php 
nicht vorhanden, wird einfach ein default-Wert genommen. Theoretisch 
könnte man dazu sogar noch eine zusätzliche Datei defaults.php anlegen, 
in der die Standardwerte stehen (und da drin hat der User nichts zu 
suchen).

Bei der Benutzerverwaltung würde es Sinn machen wenn man den Gruppen 
alle benutzerspezifischen Einstellungen zuordnen kann. Wird dann ein 
neuer Benutzer angelegt, soll man bei jeder benutzerspezifischen 
Einstellung wählen können ob die Einstellung von der entsprechenden 
Gruppe übernommen werden soll, oder ob man die Einstellung manuell 
setzen möchte.

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
> Ist eine Einstellung in der config.php
> nicht vorhanden, wird einfach ein default-Wert genommen. Theoretisch
> könnte man dazu sogar noch eine zusätzliche Datei defaults.php anlegen,
> in der die Standardwerte stehen (und da drin hat der User nichts zu
> suchen).

In einer defaults.php könnten wir alle Überprüfungen der Einstellungen 
einbauen und mit den gültigen Möglichkeiten vergleichen. Alles was nicht 
passt oder fehlt wird dort entsprechend gesetzt.

> Bei der Benutzerverwaltung würde es Sinn machen wenn man den Gruppen
> alle benutzerspezifischen Einstellungen zuordnen kann. Wird dann ein
> neuer Benutzer angelegt, soll man bei jeder benutzerspezifischen
> Einstellung wählen können ob die Einstellung von der entsprechenden
> Gruppe übernommen werden soll, oder ob man die Einstellung manuell
> setzen möchte.

Was Gruppen- und was Userrechte sein sollen, das müssen wir eh noch 
zusammentragen. Dann erst sehen wir, was über die config.php geladen 
wird und was wir über die Benutzerverwaltung an Variablen setzen müssen. 
Solange macht es keinen Sinn, über diese Baustelle zu reden.

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> In einer defaults.php könnten wir alle Überprüfungen der Einstellungen
> einbauen und mit den gültigen Möglichkeiten vergleichen. Alles was nicht
> passt oder fehlt wird dort entsprechend gesetzt.

Klingt gut. Aber ich frage mich gerade was da drin dann noch landet wenn 
eh fast alle Einstellungen in der Datenbank stehen. Diese Einstellungen 
werden dann ja eh über eine Funktion, so wie jetzt in der lib.php, an 
einer zentralen Stelle aus der Datenbank gelesen. Würde in der Datenbank 
was fehlerhaftes stehen, würde dies gleich in dieser Funktion drin 
korrigiert werden.

Udo Neist schrieb:
> Was Gruppen- und was Userrechte sein sollen, das müssen wir eh noch
> zusammentragen. Dann erst sehen wir, was über die config.php geladen
> wird und was wir über die Benutzerverwaltung an Variablen setzen müssen.
> Solange macht es keinen Sinn, über diese Baustelle zu reden.

Ja, ich wollte nur mitteilen, dass ich es als wenig sinnvoll betrachte 
die Konfiguration auf zwei verschiedene Dateien aufzuteilen, wenn es 
später eh nur noch eine handvoll hardgecodete Einstellungen geben wird. 
Dann wäre die config_db.php wieder frei für die Einstellungsseite der 
Datenbank :-D

von Udo N. (weinbauer73)


Lesenswert?

Revision 487 mit den obigen Änderungen und einigen weiteren Umstellungen 
auf Templates hochgeladen :-) Ich werde noch die IC-Logos und Footprints 
heute umstellen. Dann ist für heute Feierabend.

von Udo N. (weinbauer73)


Lesenswert?

Letztes Update für heute ;-) Revision 488 mit den geänderten 
footprints.php und iclogos.php. Bei letzterem würde ich auch eine 
Übertragung in die Datenbank empfehlen, denn dann könnte man mehrere 
Dinge machen:

- Ausgabe der Logos in einer Schleife anstelle einer statischen Datei
- Mehrere Logos einer Firma in einer Zeile ausgeben
- Zuordnung von Bauteilen zu einer Firma, insbesondere wenn ganz 
bestimmte Eigenschaften dieses Bauteils wichtig sind und kein 2nd Source 
gewünscht ist (Projektverwaltung)

Ab morgen werde ich die restlichen Dateien auf Templates umstellen und 
dann die Funktionen noch bereinigen. Ich werde abends das Ergebnis 
hochladen und hier kurz beschreiben, was geändert wurde.

von Gelöscht (kami89)


Lesenswert?

Ja, das wäre keine schlechte Idee mit den Herstellerlogos. Eigentlich 
könnte man doch da mehr oder weniger das Footprintsystem einfach 
kopieren oder?
Es soll nicht nur auf die Hersteller beschränkt sein, von denen wir die 
Logos haben. Es sollen auch eigene Hersteller hinzugefügt werden können.

von Udo N. (weinbauer73)


Lesenswert?

Meine Rede :-)

Noch ein paar Ideen zu den IC-Logos:
- Webseite
- Info zu welcher Firma die Firma jetzt gehört oder ob sie nicht mehr 
existiert

Daneben können wir doch noch die Logos und Footprints mit einer 
Versionsnummer versehen und per Updatefunktion holen. Die Infos kann man 
in der Datenbank unterbringen. Die Webseite selbst gibt alle Versionen 
in einer Liste aus und ein Script lädt aufsteigend bis zur letzten 
Version alle Updates. Das lässt sich eventuell auf der Konsole per 
cronjob automatisieren.

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Meine Rede :-)
>
> Noch ein paar Ideen zu den IC-Logos:
> - Webseite
> - Info zu welcher Firma die Firma jetzt gehört oder ob sie nicht mehr
> existiert

Hab daraus mal "Issue 26" gestrickt.

Udo Neist schrieb:
> Daneben können wir doch noch die Logos und Footprints mit einer
> Versionsnummer versehen und per Updatefunktion holen. Die Infos kann man
> in der Datenbank unterbringen. Die Webseite selbst gibt alle Versionen
> in einer Liste aus und ein Script lädt aufsteigend bis zur letzten
> Version alle Updates. Das lässt sich eventuell auf der Konsole per
> cronjob automatisieren.

Das versteh ich jetzt nicht ;-)
Die Bilder werden ja durch das SVN stets aktualisiert?
Und wozu soll eine Versionsnummer gut sein?

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
>> Noch ein paar Ideen zu den IC-Logos:
>> - Webseite
>> - Info zu welcher Firma die Firma jetzt gehört oder ob sie nicht mehr
>> existiert
>
> Hab daraus mal "Issue 26" gestrickt.

:-)

> Das versteh ich jetzt nicht ;-)
> Die Bilder werden ja durch das SVN stets aktualisiert?
> Und wozu soll eine Versionsnummer gut sein?

SVN ist gut, aber nicht zu allem zu gebrauchen. In der Praxis wird man 
einmal installieren und über eine Update-Funktion auf dem Laufenden 
bleiben wollen. Hier sind die meisten doch eher konservativ und wollen 
nur von uns freigebene Versionen haben. Das SVN gibt aber nur die 
Entwicklerversion her, das ist denen zu unsicher. Mit den Updates von 
Script, Logo und Footprints in getrennten Aktionen haben wir zudem auch 
noch Vorteile bei der Bandbreite. Und ob wir nur Script oder auch noch 
die Grafiken als weiteres Update anbieten, dürfte doch kein Problem 
sein. Die Versionsnummer ist nur für den Abgleich gedacht. Kann ja auch 
einfach nur das Releasedatum des Paketes sein. Zudem können wir ja auch 
ein Release aus der Datenbank herausnehmen und ein Downgrade 
veranlassen.

So in etwa werden auch AddOns bei diversen Softwarepaketen gehandhabt 
:-)

von Gelöscht (kami89)


Lesenswert?

Ah, so meinst du das. Das würde dann zum Issue 4 gehören 
(http://code.google.com/p/part-db/issues/detail?id=4).

Ich würde dann schon eher nur das Releasedatum der Pakete als 
Versionskontrolle nehmen, jedes Bild / jede Datei einzeln finde ich 
übertrieben.

von Udo N. (weinbauer73)


Lesenswert?

Genau. Es ist Teil des Updates. Ich meinte aber nicht das jedes einzelne 
Bild upgedatet wird. Wäre irrsinnig. Ne, wenn ein Update bei den Logos 
oder Footprints gemacht werden soll, dann werden alle neuen Grafiken in 
ein (!) Update-Archiv gepackt. So gibt es entweder zwei Updatevarianten 
(Script und Grafiken) oder drei (Script, Logos, Footprints). Damit man 
aber weiß, welche Grafikpakete installiert sind, sollen diese Pakete 
eine unabhängige Nummer bekommen. Ein Update des Scripts erzwingt dann 
aber auch eine Aktualisierung der Grafiken.

Ein Beispiel:

Installiert sind Script R488, Logo R3, Footprints R3. Es stehen Script 
R495, Logo R5 und Footprints R8 zur Verfügung. Das Script-Update holt 
R495, die Logos R4 bis R5 und die Footprints R4 bis R8. Würde man nur 
die Grafiken updaten, würden R4 bis R5 bzw. R4 bis R8 geladen.

Ich hoffe, es ist verständlich geworden :)

von Gelöscht (kami89)


Lesenswert?

Naja aber da würde ich dann nur ein einziges Update anbieten, und zwar 
gleich für alles zusammen. Ich finde es macht keinen Sinn nur ein Teil 
von Part-DB zu aktualisieren. Das macht es doch nur unnötig kompliziert.

von Udo N. (weinbauer73)


Lesenswert?

Ist ja nur ein Vorschlag von mir :-) Ich entscheide ja nicht, was ihr zu 
machen habt. Ich bin ja der Neuling in eurem Projekt.

Ich hab noch einen Fehler entdeckt. Die Funktion get_svn_revision() 
läuft anscheinend nach der Änderung vor einigen Tagen immer noch nicht 
richtig. Ich teste gleich mal ein Bugfix aus.
1
/** edit: 20120715 Udo Neist **/
2
3
global $conf;
4
5
if ( function_exists('shell_exec') )
6
{
7
     $repo_version = shell_exec('svnversion');
8
}
9
elseif ( file_exists( BASE.'/.svn/entries') )
10
{
11
     $svn = File( BASE.'/.svn/entries');
12
     $repo_version = $svn[ 3];
13
     unset($svn);
14
}
15
16
return( $repo_version . $conf['version']['string'] );
17
18
/** end: 20120715 Udo Neist **/

Okay läuft :) -> Revision 490

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Ist ja nur ein Vorschlag von mir :-) Ich entscheide ja nicht, was ihr zu
> machen habt. Ich bin ja der Neuling in eurem Projekt.

Naja so viel länger bin ich auch nicht dabei ;-)

Bezüglich automatisches Update habe ich mir mal ein paar Gedanken 
gemacht:

In einer Funktion wird eine Textdatei direkt von Google Code 
heruntergeladen. In dieser Textdatei steht die Versionsnummer des 
aktuellsten zur Verfügung stehenden Pakets, und die URL zum Paket. Ist 
die Versionsnummer neuer als die installierte Version, wird das gepackte 
Archiv heruntergeladen. Danach einfach per exec("gzip ...") entpackt und 
alle veralteten Dateien werden mit den neuen überschrieben.

Stelle ich mir das zu einfach vor, oder wäre das so tatsächlich möglich? 
gzip sollte eigentlich ziemlich jeder Hoster anbieten oder?

von Udo N. (weinbauer73)


Lesenswert?

So etwa dachte ich mir das auch. Ob gzip auf jedem Server installiert 
ist, kann ich nicht beurteilen. Man sollte vielleicht mehrere Archive 
anbieten?

Mir fällt gerade noch was ein. Warum sind eigentlich die Grafiken im 
Verzeichnis tools und nicht in img?

von Christian R. (holle)


Lesenswert?

Das mit den Mouse-Over Footprints stört mich ehrlich gesagt auch etwas. 
Vielleicht kann das das Mouse-Over durch einfache Links ersetzen?

Wenn das mit der Benutzerverwaltung fertig ist erübrigt sich ja eine 
"einfache" Upgradefunktion, da ein normaler User damit dann ja nichts 
mehr zu tun hat. Die Upgrades würden dann ja von den Entwicklern 
eingepflegt nachdem diese getestet wurden.

Stefan schrieb:
> - Ich wünschte mir eine Art Log, das anzeigt, wann und wie viele einer
> Baugruppe gebucht wurden. Dort könnte man eine Buchung -hoffentlich-
> auch rückgängig machen, sofern man aus Versehen mal 'was Falsches
> eingegeben hat.

Ja, das wäre praktisch.


Urban B. schrieb:
> Keine schlechte Idee, vorallem auch im Bezug auf die Benutzerverwaltung
> die ja noch kommen soll. Dann könnten die "Admins" auch nachvollziehen
> was andere Leute so in der Datenbank "rumfummeln" und können
> Fehlbuchungen rückgängig machen. Würde ich als durchaus nützlich
> betrachten.

Naja, die User hätten doch eh alle ihre eigenen Lagerplätze und 
Stückzahlen, somit hätten die Admins damit ja garnichts zu tun.
Die Admins hätten ja nur damit was zu tun, was "global" benutzt wird 
(Footprints, Datasheets, usw.), aber Benutzerspezifische Dinge wie 
"Lagerort oder Stückzahl" ändert ja jeder User nur für sich selber.

von Udo N. (weinbauer73)


Lesenswert?

Christian R. schrieb:
> Naja, die User hätten doch eh alle ihre eigenen Lagerplätze und
> Stückzahlen, somit hätten die Admins damit ja garnichts zu tun.
> Die Admins hätten ja nur damit was zu tun, was "global" benutzt wird
> (Footprints, Datasheets, usw.), aber Benutzerspezifische Dinge wie
> "Lagerort oder Stückzahl" ändert ja jeder User nur für sich selber.

Es müssen ja nicht die eigentlichen Admins eingreifen, es könnten ja 
auch Gruppenadmins geben, die das für ihren Bereich dürfen.

von Christian R. (holle)


Lesenswert?

Aber was genau soll ein Gruppenadmin da dann machen?
Wenn ein User seinen Bestand 330-Ohm-Widerstände von 100 auf 50 ändert 
oder seine Lagerfächer umstrukturiert ist das doch seine Sache, das 
betrifft auch nur den User selber. Wenn ein User hingegen den 
Conrad-Preis dieses Widerstandes ändert, sich dabei jedoch vertan hat, 
dann betrifft das alle User ...und somit ist das ein Fall für die 
Admins.

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Mir fällt gerade noch was ein. Warum sind eigentlich die Grafiken im
> Verzeichnis tools und nicht in img?

Das weiss ich auch nicht. Würde eigentlich Sinn machen, das nach img zu 
verschieben...

Christian R. schrieb:
> Wenn das mit der Benutzerverwaltung fertig ist erübrigt sich ja eine
> "einfache" Upgradefunktion, da ein normaler User damit dann ja nichts
> mehr zu tun hat. Die Upgrades würden dann ja von den Entwicklern
> eingepflegt nachdem diese getestet wurden.

Naja die meisten Leute werden wohl ihre Lagerverwaltung auf ihrem 
eigenen Server laufen lassen wollen, für diejenigen sind sie 
Update-Pakete gedacht.

Christian R. schrieb:
> Naja, die User hätten doch eh alle ihre eigenen Lagerplätze und
> Stückzahlen, somit hätten die Admins damit ja garnichts zu tun.
> Die Admins hätten ja nur damit was zu tun, was "global" benutzt wird
> (Footprints, Datasheets, usw.), aber Benutzerspezifische Dinge wie
> "Lagerort oder Stückzahl" ändert ja jeder User nur für sich selber.

Die Benutzerverwaltung soll (wie ich finde) in erster Linie dazu da 
sein, dass man seine eigene Part-DB-Installation auch anderen Leuten 
(Kumpels, Mitarbeiter, ...) zur Verfügung stellen kann. Und vor allem 
für den (mehr oder weniger) professionellen Einsatz in einer (kleinen) 
Firma ist es unverzichtbar, da sollen nunmal Einkäufer, Verkäufer, 
Lagerist und Elektroniker unterschiedliche Rechte haben, und der 
Lagerist soll nachvollziehen (und rückgängig machen) können, was die 
anderen (falsch) gemacht haben :-)

von Christian R. (holle)


Lesenswert?

Achso, dann habe ich das falsch verstanden.

Ich dachte dabei halt an myparts.info , wo eine große Datenbank von 
vielen vielen Usern genutzt werden soll. Die meisten der User werden 
vermutlich normale "Hobbyelektroniker" sein, welche keinen Server haben 
und ein relativ kleines Lager.

Für die professionelle Anwendung sieht das natürlich wieder ganz anders 
aus.

von Udo N. (weinbauer73)


Lesenswert?

Japp. Wir müssen beide Fälle betrachten. Im Normalfall wird es also nur 
eine Gruppe geben, in der auch nur ein User arbeitet (Standalone). Hier 
brauchen wir keine Benutzerverwaltung. In einer Firma wird es 
unterschiedliche Gruppen geben, die unterschiedliche Arbeiten tun 
sollen. Das Lager bearbeitet nur Lager und kennt die Baugruppen nicht. 
Auf unserem Server müssen wir quasi eine Firma nachbilden, in der es 
nicht nur eine Gruppe mit verschiedenen Rechten gibt, sondern mehrere. 
Wobei in einer Gruppe alle Personen mit gleichen Rechten und in einer 
anderen verschiedene Rechte bzw. Rollen geben könnte.

Mir schwebt sowas wie folgt vor:
1
- Firma bzw. Projekt
2
 -> Entwicklergruppe/Projekt bzw. Unterprojekt
3
  -> Rolle (Lagerist, Einkäufer, Entwickler, Verkäufer etc.)
4
   -> User

Gute Nacht :-)

von Christian R. (holle)


Lesenswert?

Dann gibt es aber noch den dritten Fall, für den ich extra myparts.info 
registriert habe.
Das ist für "Normal-User", die sich eine Datenbank teilen.
Da ist eine Benutzerverwaltung ebenfalls erforderlich.

Geplant ist das ja so:

Ein User meldet sich an und kann dann auf die vorhandene Datenbank 
zugreifen. Er sieht viele bereits angelegten Bauteile (samt Footprints, 
Datenblätter, Preise,...) und braucht nur noch seine Lagerfächer 
einzurichten und die Stückzahlen einzugeben. Solle er Bauteile haben 
welche noch nicht angelegt sind gibt es entweder die Möglichkeit dass er 
das Bauteil selber anlegen kann, oder dass er es auf eine Liste schreibt 
und Moderatoren dieses dann anlegen. Das war noch nicht geklärt wie man 
das dann handhaben will.

Auf jeden Fall hat das gegenüber der Einzelversion folgende Vorteile:
-Ein User benötigt keinen Webspace und auch keinen virtuellen Server
-Ein User erspart sich eine Menge Arbeit beim anlegen der Bauteile, der 
Suche nach dem Datenblatt, Zuordnung der Footprints usw. , denn diese 
sind größtenteils schon angelegt.
-Wenn ein User einen Preis aktualisiert profitieren alle User davon, 
somit sind die Daten allgemein aktueller.

von Udo N. (weinbauer73)


Lesenswert?

Revision 491: orderparts.php umgeschrieben. Infolge dessen auch die 
lib.php angepasst. print_http_charset() wird nach dem Umschreiben 
entfallen, da diese Funktion als Variable in vlib_head.tmpl steckt.

von Udo N. (weinbauer73)


Lesenswert?

So, ein kleines Update für die Reihenfolge der Arbeit mit SVN:

Arbeitskopie mit dem Server abgleichen
1
svn up
Konflikte mit den Mitteln von SVN lösen und ggfs. in die eigene 
Arbeitskopie einpflegen.

Backupdateien löschen (mein Editor ist Quanta+ und der legt Backups mit 
der Tilde am Ende an)
1
find . -name "*~" -exec rm {} \;
Neue Dateien und Verzeichnisse aufnehmen
1
svn add * --force
Commit der Version mit COMMENT als Kommentar
1
svn commit -m "COMMENT"
Arbeitskopie mit dem Server abgleichen, um die Revision upzudaten. Gibt 
sonst ein Konflikt bei einem weiteren commit.
1
svn up

von Udo N. (weinbauer73)


Lesenswert?

Revision 492: Woher die als fehlerhaft eingestufte und veraltete 
get_svn_revision kommt, weiß ich nicht. Ist behoben.

von Gelöscht (kami89)


Lesenswert?

@Christian R.
Ja, ich weiss dass diese Art von Benutzerverwaltung noch geplant ist. 
Aber ich denke in erster Linie sollte es mal eine Benutzerverwaltung für 
den Einsatz in einer kleinen Firma geben. Du musst etwas Geduld haben, 
es dauert halt bis neue Features eingebaut werden ;-D

@Udo Neist
hmm jetzt hast du für das greenway-css extra ein neues Template erzeugt? 
Eigentlich wollte ich das vermeiden weil es umso aufwändiger wird eine 
Änderung einfliessen zu lassen... Deshalb dachte ich man sollte auch 
mehrere CSS-Dateien zu einem Template zuordnen können, das würde die 
Wartung einfacher machen.

Übrigens habe ich festgestellt, dass auf Win7 (IE und FF) das Suchfeld 
nur gerade etwa halb so gross ist wie auf Linux (FF). Könnt ihr das auch 
nachvollziehen?
Ich habe nämlich extra mal die Feldlänge ein bisschen reduziert damit 
das Feld und der "Los"-Button noch nebeneinander Platz haben. Wenn es 
jetzt aber auf Win7 einfach viel zu kurz ist, ist das auch nicht das was 
ich erreichen wollte ;-)

von Gelöscht (kami89)


Angehängte Dateien:

Lesenswert?

Ich habe heute wiedermal ein bisschen um Part-DB herumstudiert. Zwei 
Sachen haben mich beschäftigt:

Einerseits denke ich es wäre von (grossem) Vorteil, wenn wir auf 
objektorientierte Programmierung umrüsten. Das würde das Ganze viel 
übersichtlicher, weniger fehleranfällig und einfacher wartbar machen 
(denke ich zumindest :-). Für die ganzen Klassen könnten wir gleich das 
Verzeichnis class/ benutzen, dass Udo für die vlib angelegt hat. Dann 
könnten wir unsere lib.php durch folgende Dateien ersetzen:
1
class/footprint.php
2
class/storeloc.php
3
class/supplier.php
4
usw.

Und dann habe ich mir noch ein paar Gedanken zur Benutzerverwaltung 
gemacht. Aus den Gedanken heraus sind dann die zwei Tabellen im Anhang 
entstanden.

Für die Rechte habe ich mir überlegt, wir machen das ähnlich wie bei den 
Unix-Dateirechten. Diese sind aber eher nicht passend genug für unseren 
Einsatz um sie einfach 1:1 zu übernehmen. Stattdessen dachte ich, es 
soll statt der drei Attributen (Lesen, Schreiben, Ausführen) diese sechs 
Attribute geben:
1
- Erben von übergeordnetem Element (schliesst die nachfolgenden Attribute aus)
2
- Betrachten
3
- Bearbeiten
4
- Erstellen
5
- Löschen
6
- Verschieben

Mit diesen Attributen könnten wir schon sehr viel erreichen. Dort wo es 
nicht genügt und spezielle Attribute notwendig sind (oder eine feinere 
Unterteilung möglich sein soll) (wie z.B. bei den "perms_parts_*") 
verwendet man halt für jedes einzelne Element eine Datenbankspalte.

Ich finde es wichtig, dass man das Attribut "Erben" einstellen kann. So 
kann man einer Gruppe die Rechte zuteilen, und jeder Benutzer dieser 
Gruppe erhält automatisch die selben Rechte (sofern "Erben" eingestellt 
ist).

Diese Attribute könnten wir wie beim Unix-Rechtesystem einfach als 
Integer in der Datenbank abspeichern. Wie es genau codiert werden soll 
(Reihenfolge) habe ich noch nicht festgelegt. Im Anhang habe ich noch 
den Wert "-1" für das Attribut "Erben" und "255" für "vollumfängliche 
Rechte" verwendet, ist aber erstmal uninteressant wofür das nun stehen 
soll.

Für die Benutzerverwaltung für myparts.info habe ich mir überlegt, man 
soll jedem Benutzer (bzw. Gruppe) die Tabellen für Baugruppen, Lagerorte 
usw. zuordnen können. Dazu sind die "dataset_*" Einträge da. Für die 
Kategorien, Lieferanten und Footprints wird es auf myparts.info 
vermutlich nur ein solches Datenset für alle Benutzer geben 
(Vollständigkeitshalber habe ich sie trotzdem mal als "variabel" 
angenommen und in die Tabelle aufgenommen). Man könnte aber auch einer 
Gruppe ein anderes Datenset zuweisen, dann teilen nur die User innerhalb 
dieser Gruppe alle Datensätze.

Das Datenset sollte übrigens besser nur beim Anlegen eines Benutzers 
zugewiesen werden. Wird nachträglich was verändert an diesen IDs, wird 
es zu einem ziemlichen Durcheinander kommen.

Natürlich fehlt in meinen Überlegungen noch einiges (z.B. die Anpassung 
der bestehenden Tabellen an das DatenSet-System). Vielleicht habe ich 
sogar noch einen groben Überlegungsfehler gemacht, so dass das System 
gar nicht so funktionieren kann wie ich es hier beschreibe.

Ich wäre froh wenn ihr euch das mal kurz (oder besser lange :-) 
anschauen könntet und berichtet was ihr davon haltet.

mfg

EDIT: Die Gruppe "Administratoren" könnte man auch löschen. Würde ich 
schöner finden :-) Der Benutzer "admin" braucht ja nicht unbedingt eine 
Gruppe denke ich...

von Gelöscht (kami89)


Lesenswert?

Urban B. schrieb:
> Übrigens habe ich festgestellt, dass auf Win7 (IE und FF) das Suchfeld
> nur gerade etwa halb so gross ist wie auf Linux (FF). Könnt ihr das auch
> nachvollziehen?

Lag wohl daran dass die Anzahl Zeichen als Breite angegeben war. Die 
Breitenangabe in Pixel soll da zuverlässiger sein (im Internet gelesen), 
hab das nun mal so ins SVN geladen. Bei mir funktionierts jetzt 
jedenfalls auf Win7 (FF / IE) und Linux (IE).

Bitte melden wenns bei jemanden nicht passt, dann machen wir das Feld 
halt noch ein bisschen schmaler.

von Udo N. (weinbauer73)


Lesenswert?

Die Aufteilung der lib.php sollte man schon angehen. Für den Anfang 
würde ich die Teile der lib.php in ein neues Verzeichnis lib/ 
unterbringen und später die OO-Teile in die Klasse verschieben. Für die 
Übergangszeit würde in der libs/xxx.php dann ein Wrapper für die 
entsprechende Klasse existieren, bis dieser Aufruf dann aus allen 
Bereichen auf OO umgestellt wurde. So haben wir einen Überblick über die 
Umstellung.

Ich habe mich noch nicht mit der Datenbankstruktur befasst, daher kann 
ich zur Benutzerverwaltung noch nichts konkretes beisteuern. Ich habe 
bisher eine Hierachie genutzt, bei der Gruppen nur für die Eingrenzung 
der Datensätze gedacht waren. Ob es sich lohnt, jeder Gruppe eigene 
Tabelle(n) zu geben oder nur einfach pro Ebene eine Spalte mehr nimmt, 
weiß ich nicht. Man könnte ja eine Arbeitsgruppe 1 mit Untergruppen 1, 2 
und 3 haben, die ihren jeweiligen Bestand bearbeiten, aber die anderen 
UG nur einsehen können. Das könnte man auch auf Arbeitsgruppen 
ausweiten, so dass am Ende die nächst höhere Instanz alle Bereiche 
unterhalb sehen kann. Das wäre eine Zuordnungstabelle für die 
Arbeitsgruppen bzw. noch eine für die Hierachie und zwei Spalten in den 
anderen Tabellen. Der Nutzer könnte innerhalb der Hierachie auch UGs aus 
verschiedenen AGs angehören und beim Einloggen die passende UG wählen. 
So in etwa funktioniert auch meine Chemiekalienverwaltung.

Hab noch keine weiteren Änderungen machen können. Wahrscheinlich kann 
ich morgen die nächste Version hochladen.

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Die Aufteilung der lib.php sollte man schon angehen. Für den Anfang
> würde ich die Teile der lib.php in ein neues Verzeichnis lib/
> unterbringen und später die OO-Teile in die Klasse verschieben. Für die
> Übergangszeit würde in der libs/xxx.php dann ein Wrapper für die
> entsprechende Klasse existieren, bis dieser Aufruf dann aus allen
> Bereichen auf OO umgestellt wurde. So haben wir einen Überblick über die
> Umstellung.

Naja ich weiss nicht ob es sinnvoll ist, jetzt noch eine Übergangslösung 
anzugehen. Da würde ich lieber noch einen Moment warten und dann die 
Umstellung auf OO gleich in einem Mal machen.

Udo Neist schrieb:
> Ich habe mich noch nicht mit der Datenbankstruktur befasst, daher kann
> ich zur Benutzerverwaltung noch nichts konkretes beisteuern. Ich habe
> bisher eine Hierachie genutzt, bei der Gruppen nur für die Eingrenzung
> der Datensätze gedacht waren. Ob es sich lohnt, jeder Gruppe eigene
> Tabelle(n) zu geben oder nur einfach pro Ebene eine Spalte mehr nimmt,
> weiß ich nicht.

Eigene Tabellen würde ich nicht machen, finde ich "unschön", dann 
explodiert unsere Datenbank für myparts.info. Mit den Datensets dachte 
ich einfach an eine zusätzliche Spalte in den bestehenden Tabellen, mit 
der ID des Datensets, dem die Einträge angehören.

Ich denke, das was ich "Datenset" nenne ist mehr oder weniger das, was 
du unter "Arbeitsgruppe" verstehst. Dass ein User auch mehreren 
Datensets angehören kann (und dieses beim Einloggen wählt), daran dachte 
ich bisher noch gar nicht. Würde eigentlich Sinn machen, da hast du 
recht.

Wir müssen nur aufpassen, dass es durch die Datensets kein Durcheinander 
gibt. Ein Bauteil muss dann z.B. nicht mehr nur die ID des Footprints 
haben, sondern auch noch die ID des Datensets der entsprechenden 
Footprint-Datensätzen. NACHTRAG: wobei, wenn die ID des Footprints ja 
eindeutig ist, bräuchte es das gar nicht. Die zusätzliche Spalte in der 
Footprint-Tabelle aber natürlich schon.

Es wird auf jeden Fall nicht ganz trivial :-D

Übrigens habe ich eine Seite gefunden, auf der es ziemlich coolen 
Ajax/DHTML Kram gibt, auch unter der GPL Lizenz: 
http://dhtmlx.com/docs/products/dhtmlxTree/index.shtml
Viellecht können wir davon in Zukunft noch was gebrauchen (Sichworte: 
Dateiupload-Dialog, Frames)

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
> Naja ich weiss nicht ob es sinnvoll ist, jetzt noch eine Übergangslösung
> anzugehen. Da würde ich lieber noch einen Moment warten und dann die
> Umstellung auf OO gleich in einem Mal machen.

Solange das in meinem Branch passiert, wäre das ja kein Problem. Erst 
wenn die Umstellung komplett ist, würde das dann in die offizielle 
Version einfliessen. Schliesslich müssen wir nicht alle Dinge im 
Hauptzweig testen.

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Solange das in meinem Branch passiert, wäre das ja kein Problem. Erst
> wenn die Umstellung komplett ist, würde das dann in die offizielle
> Version einfliessen. Schliesslich müssen wir nicht alle Dinge im
> Hauptzweig testen.

Ja, das habe ich mir auch irgendwie so vorgestellt.

von Udo N. (weinbauer73)


Lesenswert?

Man könnte ja erstmal mit den Datenbankabfragen beginnen. Das lohnt sich 
auf alle Fälle.

von Stefan . (xin)


Lesenswert?

wenn ich mit TortoiseSVN auf http://part-db.googlecode.com/svn/trunk/ 
part-db
einen 'Fully Recursive' Checkout mache, bekomme ich folgende 
Fehlermeldung:
URL 'http://part-db.googlecode.com/svn/trunk/%20part-db'; doesn't exist

Hat jemand einen Tip für mich ?

von Gelöscht (kami89)


Lesenswert?

Stefan --- schrieb:
> wenn ich mit TortoiseSVN auf http://part-db.googlecode.com/svn/trunk/
> part-db
> einen 'Fully Recursive' Checkout mache, bekomme ich folgende
> Fehlermeldung:
> URL 'http://part-db.googlecode.com/svn/trunk/%20part-db'; doesn't exist
>
> Hat jemand einen Tip für mich ?

Ja, den Befehl, den ich dir oben mal geschickt habe, hat nach dem 
Internetpfad noch ein Leerzeichen, und dann kommt der lokale Ordner wo 
das Zeug heruntergeladen werden soll. So gibt man das im Terminal ein 
für den "svn checkout" Befehl. Ich denke mal bei TortoiseSVN brauchst du 
den lokalen Pfad nicht, sondern nur die reine URL:
1
http://part-db.googlecode.com/svn/trunk/

von Stefan . (xin)


Lesenswert?

> sondern nur die reine URL:
Perfekt !  Danke :)

von Gelöscht (kami89)


Lesenswert?

Also ich habe mal mit den Klassen angefangen. Vor allem an einer Klasse 
für den Datenbankzugriff habe ich gearbeitet. Dazu habe ich was ziemlich 
nützliches gefunden: http://www.peterkropff.de/site/php/pdo.htm

Diese Klasse macht es möglich, dass wir später auch ganz einfach andere 
Datenbanken einsetzen können. Ausserdem gibt es einige Features, die SQL 
Injections stark erschweren.

Alles in allem denke ich wäre das eine gute Basis für unsere 
Datenbankklasse. Ein Nachteil ist halt, dass es mindestens PHP 5.1 
voraussetzt. Da aber seit PHP5 das ganze OOP nochmal verbessert wurde, 
denke ich es macht schon wegen den Klassen Sinn, dass wir nun halt PHP4 
nicht mehr unterstützen.

Ich denke damit kann man leben. Wer hat denn heutzutage noch PHP4? ;-)

Was mir aber noch ein bisschen Kopfzerbrechen macht, sind 
Datenbankeinträge mit Zeichen wie " oder ' im Namen. Irgendwo gibts 
einfach immer Konflikte. Sei es beim JavaScript Menü oder bei HTML 
Elementen.
Momentan werden alle Datenbankeinträge ja noch mit 
mysql_real_escape_string() bearbeitet. Aber brauchts das eigentlich? So 
wie ich die Klasse momentan programmier habe, kann man problemlos 
Variablen mit " und ' im Namen in der Datenbank ablegen. Die werden dann 
in phpmyadmin auch genau so angezeigt, also ohne Backslashes. Auch das 
holen von diesen Daten ist kein Problem. Ein Problem gibts erst wenn so 
ein String als HTML Code ausgegeben wird ;-)

Einfach diese beiden Zeichen verbieten finde ich aber nicht so toll, es 
kann sicher mal vorkommen dass man solche Zeichen auch wirklich 
verwenden will.

Weiss jemand wie man sowas am besten löst? Vor allem wenn beide von 
diesen Zeichen erlaubt sind sehe ich ein Problem. Würde man nur eines 
davon verbieten, könnte man gezielt das andere Zeichen abfangen, das 
wäre wohl kein grosses Problem mehr.

von Udo N. (weinbauer73)


Lesenswert?

Normalerweise reicht das Escapen bei den Zeichen aus, um diese zu 
speichern. Wenn nicht, dann als HTML kodieren und übertragen. Als letzte 
Möglichkeit wäre BLOB mit base64 oder ähnliches, nur das halte ich für 
übertrieben.

Ich selbst habe mir auch eine eigene Datenbankklasse geschrieben. PDO 
ist dort allerdings noch ein Dummy. Die SQL-Statements werden in meiner 
Klasse in ein Array gespeichert und von der Klasse dann zusammen 
gesetzt. Somit wären auch Prepared Statements möglich.

von Gelöscht (kami89)


Lesenswert?

Ich glaub das mit dem escapen schaue ich mir später nochmal an, dafür 
habe ich keine Nerven mehr...

Übrigens habe ich jetzt mal einen neuen Branch "kami89" angelegt für die 
Entwicklung der Klassen. So könnt ihr schonmal schauen was ich gemacht 
habe.

Diese Version dort ist soweit lauffähig dass die ganze Startseite 
aufgebaut wird inklusive dem Kategorien-Menü. Mehr läuft noch nicht. 
Damit diese Kleinigkeit aber überhaupt läuft, müsst ihr eure config.php 
etwas abändern (siehe template) und per phpmyadmin die Spalte 
'parentnode' von der Tabelle 'categories' in 'parent_id' umbenennen ;-) 
(Grund siehe class/structural_db_element.php)

In dieser Datei habe ich ein paar Notizen gemacht die mir beim 
programmieren einfach so eingefallen sind.

Die wichtigsten Dateien, an denen ich gearbeitet habe, sind system.php, 
database.php, structural_db_element.php und category.php. Anhand dieser 
Dateien solltet ihr erkennen wie ich mir das ganze System etwa 
vorstelle.

In nav.php seht ihr wie die Klassen dann später verwendet werden.

Ich arbeite noch nicht lange mit OOP (und schon gar nicht mit php^^), 
also meldet euch einfach wenn euch komische Sachen auffallen :-)

Ahja, wie die Datenbank-Klasse verwendet wird ist am Anfang vielleicht 
etwas schwierig zu verstehen. Es ist jetzt halt nicht mehr nur ein 
mysql_query() mit dem man auf die Datenbank zugreift (und jeder weiss 
wie es geht).
In meiner Klasse gibt es jetzt zwei Funktionen: exec() für Anfragen, bei 
denen man keine Datenrückgabe erwartet, und query() für Anfragen mit 
Datenrückgabe (also eigentlich nur SELECT).

Da es schnell passiert ist, dass man die Rückgabewerte nicht ganz sauber 
verarbeitet (z.B. 0 und false nicht getrennt behandelt), habe ich 
vorgefertigte Funktionen für die wichtigsten Anfragen [insert(), 
delete_record(), set_data_field(), ...] erstellt. Bei diesen muss man 
dann nur noch auf false oder true prüfen, was anderes geben die nicht 
zurück.

Ein Nachteil davon, dass in der Klasse alles mit prepared statements 
erledigt wird, ist halt dass eine Abfrage nur noch Fragezeichen als 
Platzhalter für Werte enthält, und die Werte selber dann separat 
übergeben werden. Ich denke aber damit kann man leben (es kommt ja auch 
der Sicherheit zugute).

von Udo N. (weinbauer73)


Lesenswert?

Ich habe an der editpartsinfo.php und startup.php gearbeitet. Die 
Autoren hab ich in eine authors.php reingeschoben, damit diese in einer 
Schleife in startup.php verarbeitet werden können. Das mit den Themen 
ist jetzt auch geändert. Man kann eine alternative CSS in css/ angeben, 
wobei diese Datei nach dem entsprechenden Thema genannt werden muss, 
z.B. Greenway -> css/Greenway.css. -> Revision 498

Deine Arbeiten an der Datenbankklasse übernehme ich später, wenn ich die 
Templates fertig habe.

von Udo N. (weinbauer73)


Lesenswert?

Ich habe mal auf die schnelle eine neues Install-Script (install.sh) 
geschrieben, dass das Anlegen der Datenbank (in der Version 12) 
vereinfacht. In dem SQL-Script habe ich die Befehle für die Erstellung 
und Rechtevergabe eingebaut.
1
DROP DATABASE IF EXISTS `DB_NAME`;
2
CREATE DATABASE `DB_NAME` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
3
GRANT USAGE ON *.* TO `DB_NAME`@`DB_HOST` IDENTIFIED BY "DB_PASS";
4
GRANT ALL PRIVILEGES ON `DB_NAME`.`*` TO `DB_USER`@`DB_HOST`;
5
USE `DB_NAME`;

Die vier Platzhalter DB_NAME, DB_HOST, DB_USER und DB_PASS werden im 
Script definiert und durch den sed (Stream EDitor) ersetzt und dann 
MySQL übergeben. Das SQL-Script muss mit passenden Rechten aufgerufen 
werden (Create, Grant). Es läuft unter Linux, dürfte aber auch auf 
anderen Un*xen laufen.
1
#!/bin/sh
2
3
# MySQL-user with rights to create a database
4
ADMIN_USER=root
5
ADMIN_PASS=
6
7
# Database
8
DB_HOST=localhost
9
DB_NAME=part-db
10
DB_USER=part-db
11
DB_PASS=part-db
12
13
# Install
14
SQL_INSTALL="readme/createtables-FOR-V0.2.1-rev12.sql"
15
16
sed "s/DB_NAME/$DB_NAME/g;s/DB_HOST/$DB_HOST/g;s/DB_USER/$DB_USER/g;s/DB_PASS/$DB_PASS/g" <$SQL_INSTALL | mysql -u$ADMIN_USER -p$ADMIN_PASS -h$DB_HOST

Das Update liegt als Revision 499 vor.

von Gelöscht (kami89)


Lesenswert?

Ist ja richtig viel los hier, sind denn alle in den Ferien? :-)

Ich könnte mal eure Hilfe gebrauchen. Und zwar will ich das neue System, 
dass man einem Bauteil mehrere Lieferanten+Preise zuordnen kann, gleich 
in die neuen Klassen einbauen.

Jetzt habe ich gedacht, für diese Einkaufsinformationen benutze ich 
einfach die Tabelle "preise" und ändere dessen Name in "orderdetails" ab 
(dann sind auch gleich alle Tabellennamen englisch^^). Da drin können 
dann also pro Bauteil mehrere Einträge vorhanden sein.

Soweit, sogut. Nur muss ich jetzt mit einem Datenbankupdate die Spalten 
"id_supplier" und "supplierpartnr" aus der Tabelle "parts" in diese (bis 
jetzt) "preise" Tabelle hineinkriegen, ohne dass dabei etwas kaputt 
geht.
Da bis jetzt in der Tabelle "preise" nur Einträge von Teilen existieren, 
denen mal ein Preis zugewiesen wurde, müssen jetzt teilweise also auch 
neue Einträge angelegt werden, für diejenigen Teile denen zwar ein 
Lieferant, aber kein Preis zugewiesen wurde. Bei Teilen mit Preis muss 
der bereits vorhandene Eintrag in "preise" einfach überschrieben werden.

Tja, nun kenne ich mich mit SQL leider etwas zu wenig aus um das 
hinzukriegen. Kann mir da jemand auf die Sprünge helfen?

Die Spalten "id_supplier" und "supplierpartnr" existieren 
interessanterweise schon in der Tabelle "preise", haben aber kein 
Inhalt...Ob da wohl schonmal was vorbereitet wurde für genau das, was 
ich jetzt machen will?

Zum Thema Klassen:
So langsam nimmt das Ganze Form an. Allerdings ist es gar nicht so 
einfach, eine saubere objektorientierte Programmierung hinzubekommen 
ohne dass die Performance stark leidet. Die ganzen (komplizierten) 
SQL-Abfragen, wie sie bisher genutzt werden, sind halt performancemässig 
einfach unschlagbar.
Ich möchte nun aber eigentlich viel mehr mit Objekten herumhantieren 
statt nur mir den Daten (Arrays), die von den SQL-Abfragen zurückkommen. 
Und da kommt halt schnell mal einiges an Overhead zusammen.

Naja, ich habs jetzt mal so gemacht dass die zeitintensiven Funktionen 
wirklich erst bei Bedarf aufgerufen werden, und dann bis zum nächsten 
Abrufen zwischengespeichert werden. Zum Beispiel die Attribute "level" 
oder "full_path" von den Kategorien, Footprints usw. werden beim 
Erzeugen eines neuen Objektes noch nicht zugewiesen. Erst wenn diese 
Attribute das erste Mal abgerufen werden, dann werden sie "berechnet" 
und auch gleich gespeichert bis zur nächsten Abfrage.
Damit kann man schon noch einiges an Zeit sparen, da häufig halt auch 
ganze Objekt-Arrays erzeugt werden bei denen viele Objektattribute 
nachher gar nie abgefragt werden.

Oder habt ihr da eine bessere Idee? Ich lad gleich nochmal die neuste 
Version in meinen SVN Branch damit ihr meinen aktuellen Stand seht.

Ach ja, wofür ist eigentlich die Tabelle "pending_orders"? Ist die bei 
euch auch leer? Die wird doch (noch?) gar nicht benutzt, oder?

von Gelöscht (kami89)


Angehängte Dateien:

Lesenswert?

Ich hab mal noch ein UML Diagramm erstellt damit man ein bisschen den 
Überblick über die Klassen hat. Es entspricht nicht ganz dem aktuellen 
Stand des Codes. Und die Klassen User und Group sind nicht komplett.

Die meisten Funktionen haben natürlich Argumente und Rückgabewerte, sind 
aber einfach im Diagramm nicht eingezeichnet.

Ausserdem habe ich nur die Verbindungen für die Vererbungen 
eingezeichnet.

P.S.
Ich wäre echt froh wenn mir noch jemand wegen dem Datenbankupdate für 
die Lieferinformationen (siehe letzter Beitrag) helfen könnte.

von Udo N. (weinbauer73)


Lesenswert?

HTMLTable? Das ganze wird doch über die vlibTemplate-Klasse abgebildet 
und benötigt keine weitere Kapselung. Genauso kann die 
build_html_tree()-Funktion durch eine einfach Array-Rückgabe ersetzt 
werden, denn die LOOP-Funktion in den Templates braucht einfach ein 
Array des Typs
1
$array[x]['name']

Dabei ist x eine Zählvariable (kann durch [] beim Aufbau ersetzt werden, 
was ein Anhängen der Daten an das Array bewirkt) und 'name' der Name 
(Schlüssel).

Ansonsten sieht das gut aus :-) Ich werde morgen mal wieder an die 
Templates rangehen, dann können wir anfangen, beide Versionen zu 
verschmelzen.

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> HTMLTable? Das ganze wird doch über die vlibTemplate-Klasse abgebildet
> und benötigt keine weitere Kapselung. Genauso kann die
> build_html_tree()-Funktion durch eine einfach Array-Rückgabe ersetzt
> werden, denn die LOOP-Funktion in den Templates braucht einfach ein
> Array des Typs
> $array[x]['name']
>
> Dabei ist x eine Zählvariable (kann durch [] beim Aufbau ersetzt werden,
> was ein Anhängen der Daten an das Array bewirkt) und 'name' der Name
> (Schlüssel).

Ach so, okay das ist natürlich super! Ich habe selber auch schon gedacht 
dass da teilweise noch etwas zu viel HTML drin ist in den Klassen.

Aber bezüglich HTMLTable hatte ich eben noch eine spezielle Idee, das 
mit unserem Issue 22 
(https://code.google.com/p/part-db/issues/detail?id=22) zusammenhängt:
Ich dachte da bei der HTMLTable an eine Klasse, der man einfach ein 
Array aus Objekten (v.a. Teile und Bestellinformationen), den Typ der 
Tabelle (showparts, orderparts, nopriceparts,...) und eine Referenz auf 
den aktuellen Benutzer übergeben kann. Wie in Issue 22 beschrieben, soll 
ja jeder Benutzer seine Tabellenspalten individuell gestalten können. 
Und genau das soll dann diese Klasse HTMLTable erledigen. Damit könnte 
man dann also extrem individuelle Tabellen erzeugen lassen.

Allerdings bin ich selber auch noch nicht ganz zufrieden mit diesem 
System, weil dann eben die Tabellen nicht durchs Templatesystem 
gestaltet werden.

Hast du grad eine gescheite Idee wie wir das am besten lösen?

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
> Aber bezüglich HTMLTable hatte ich eben noch eine spezielle Idee, das
> mit unserem Issue 22
> (https://code.google.com/p/part-db/issues/detail?id=22) zusammenhängt:
> Ich dachte da bei der HTMLTable an eine Klasse, der man einfach ein
> Array aus Objekten (v.a. Teile und Bestellinformationen), den Typ der
> Tabelle (showparts, orderparts, nopriceparts,...) und eine Referenz auf
> den aktuellen Benutzer übergeben kann. Wie in Issue 22 beschrieben, soll
> ja jeder Benutzer seine Tabellenspalten individuell gestalten können.
> Und genau das soll dann diese Klasse HTMLTable erledigen. Damit könnte
> man dann also extrem individuelle Tabellen erzeugen lassen.
>
> Allerdings bin ich selber auch noch nicht ganz zufrieden mit diesem
> System, weil dann eben die Tabellen nicht durchs Templatesystem
> gestaltet werden.
>
> Hast du grad eine gescheite Idee wie wir das am besten lösen?

Da die einzelnen Tabellen ja in den Templates vorhanden sind, brauchen 
wir ja nur das Array und die Tabelle zu übergeben und die HTML-Klasse 
würde das entsprechend veranlassen. Genauso können wir dann Kopf- und 
Fußzeilen übernehmen.
1
$html -> put_html_header($meta)
2
$html -> put_html_table($template,$array)
3
$html -> put_html_footer()

In dem Beispiel würde also zuerst der Header generiert ($meta ist ein 
Array und enthält alle Kopfdaten, die derzeit alle per Hand über 
$tmpl->setVar() gesetzt werden), dann die Templatevorlage geladen und 
mit den Array verbunden und am Schluss noch der Footer ausgegeben. 
Intern kann die Klasse die einzelnen Templates in privaten Funktionen 
(nur innerhalb der Klasse sichtbar) bearbeiten, um es übersichtlicher zu 
halten. Ich kann ja mal morgen eine HTML-Klasse erzeugen, die obiges 
implementiert.

Die Benutzerklasse würde ihre Daten in eine Session kopieren und diese 
Daten stehen global allen Klassen und Funktionen zur Verfügung. Die 
SQL-Abfragen würden dann auf $_SESSION zurückgreifen, um die Userdaten 
einzubauen. Sowas nutze ich in meinem eigenen CMS-Framework.

Für unsere eigenen Klassen- und Funktionsbenennung sollten wir auf alle 
Fälle ein festes Namensschema einführen, sonst kommen wir irgendwann 
durcheinander. Da du hier schon angefangen hast, wäre also 
Kleinschreibung und Trennung mit "_" für alle verbindlich? Zudem könnten 
wir auch Maintainer für die einzelnen Bereiche benennen :-) Templates 
und Benutzerverwaltung wäre dann wohl meine Sache? Das Tabellendesign 
bis auf die eigentliche Usertable und die Anforderungen an die anderen 
Tabellen überlasse ich dann anderen.

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> In dem Beispiel würde also zuerst der Header generiert ($meta ist ein
> Array und enthält alle Kopfdaten, die derzeit alle per Hand über
> $tmpl->setVar() gesetzt werden), dann die Templatevorlage geladen und
> mit den Array verbunden und am Schluss noch der Footer ausgegeben.
> Intern kann die Klasse die einzelnen Templates in privaten Funktionen
> (nur innerhalb der Klasse sichtbar) bearbeiten, um es übersichtlicher zu
> halten. Ich kann ja mal morgen eine HTML-Klasse erzeugen, die obiges
> implementiert.

Also ich habe jetzt nicht alles zu 100% verstanden, aber ich denke mal 
das kommt gut so :-) Das wäre super wenn du da mal eine solche Klasse 
bauen könntest.

Udo Neist schrieb:
> Die Benutzerklasse würde ihre Daten in eine Session kopieren und diese
> Daten stehen global allen Klassen und Funktionen zur Verfügung. Die
> SQL-Abfragen würden dann auf $_SESSION zurückgreifen, um die Userdaten
> einzubauen. Sowas nutze ich in meinem eigenen CMS-Framework.

OK dazu kann ich noch nicht viel sagen, von Sessions usw. habe ich noch 
nicht viel Ahnung.

Udo Neist schrieb:
> Für unsere eigenen Klassen- und Funktionsbenennung sollten wir auf alle
> Fälle ein festes Namensschema einführen, sonst kommen wir irgendwann
> durcheinander. Da du hier schon angefangen hast, wäre also
> Kleinschreibung und Trennung mit "_" für alle verbindlich?

Ja das wäre sicher vorteilhaft wenn wir uns da einigen. Da bisher der 
grösste Teil der Funktionen nach diesem Schema benannt wurde, habe ich 
das einfach mal so übernommen. Die Klassennamen habe ich aber gross 
geschrieben, ich denke das hat sich ja mehr oder weniger so 
eingebürgert.

Übrigens muss ich in den nächsten paar Wochen die Zeit fürs 
Programmieren etwas reduzieren, es sind bald Semesterprüfungen... ;-)
Ich bin aber eigentlich eh der Meinung dass wir jetzt an der ultimativen 
Version Eins Punkt Null (Part-DB v1.0) arbeiten, und Gut Ding will ja 
bekanntlich Weile haben :-D

von Udo N. (weinbauer73)


Lesenswert?

Update auf Revision 505: class_html.php erstellt.

Die HTML-Klasse (nicht HTMLTable wie im Schema, da einfach zu 
universell) kapselt jetzt die vlibTemplate-Klasse und stellt einige 
Funktionen bereit.

1
class HTML {
2
        function __construct()
3
        function set_html_meta ($meta = array())
4
        function set_html_variable ($key = '',$var = ''[optional $type = '',$format = array()])
5
        function unset_html_variable ($key = '')
6
        function clr_html_variable ()
7
        function set_html_loop ($key = '',$array = array())
8
        function unset_html_loop ($key = '')
9
        function clr_html_loop ()
10
        function print_html_header ()
11
        function print_html_footer ()
12
        function load_html_template ($template = '')
13
        function parse_html_template ($template = '',$array = array())
14
        function parse_html_table ($array = array())
15
        function print_html_template ()
16
        function print_error_state ($error = 0)
17
}

Ich habe die startup.php und config_system.php auf diese Klasse 
umgeschrieben. Beide Scripte zeigen dabei die zwei Ansätze, wie man die 
neue Klasse benutzen kann. Erstes Script nutzt statt der vlib-Funktionen 
setVar()/setLoop() die neuen Funktionen set_html_*(). 
set_html_variable() ist zudem noch etwas mächtiger als setVar(): 
optional kann man den Variablentyp setzen (wird beispielhaft gesetzt) 
oder die Formatierung nach number_format() oder sprintf() nutzen. Das 
andere Script verwendet parse_html_template(), welches 
load_html_template(), set_html_*() und print_html_template() 
zusammenfast.

Den HTML-Kopf wird durch print_html_header() ausgegeben, der Abschluss 
durch print_html_footer().

In der Klasse sind die Funktionen erklärt.

von Gelöscht (kami89)


Angehängte Dateien:

Lesenswert?

Okay, sieht ja ganz gut aus, aber wie man damit nun individuelle 
Tabellen zeichnen kann, habe ich noch nicht verstanden :-)

Übrigens ist mir noch aufgefallen dass du deutsche, und ich englische 
Kommentare verwende. Vielleicht sollten wir uns da auch noch einigen. 
Also ich bevorzuge eigentlich englisch, weil es halt einfach DIE Sprache 
für Programmierer ist, und für ein OpenSource Projekt sowieso. Und 
ausserdem kann ich so mein bescheidenes Englisch noch ein bisschen 
verbessern :-)

Und übrigens, in der config.php solltest du noch das define "LANGUAGE" 
in Anführungszeichen setzen (bekomme immer eine Fehlermeldung deswegen). 
Was hat es damit eigentlich auf sich? Soll das ermöglichen, dass part-DB 
in verschiedenen Sprachen angezeigt werden kann? Das wäre ja cool! Aber 
wo würde man dann die verschiedenen Übersetzungstexte definieren?

Ich habe nochmal ein neues Klassendiagramm angehängt, diesmal mit 
Parametern und Rückgabewerte. Ausserdem ist jetzt die Klasse "File" neu. 
Diese soll alle möglichen Dateianhänge von irgendwelchen Objekten 
vereinheitlichen. Man könnte dann also jedem Subelement von 
"FilesContainingElement" unbeschränkt viele Dateien anhängen.

Und die Klasse "Export" ist dazu gedacht, dass man die mit allen 
möglichen Objekten befüllen kann (Teile, Bestellinformationen, 
Lagerorte,...), ein Exportformat wählt, und dann eine CSV-Datei oder was 
auch immer bekommt. Später wäre natürlich dann noch schön wenn man 
bequem eigene Exportformate definieren kann, ist bisher aber noch nicht 
vorgesehen.

Nachtrag:
Ach ja, und die class_html.php würde ich noch in html.php umbenennen, 
dann hättest du das gleiche Namensschema wie ich. Die Dateien liegen ja 
eh alle im Ordnert "class", sollte also eh klar sein dass es sich dort 
um Klassen handelt.

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
> Okay, sieht ja ganz gut aus, aber wie man damit nun individuelle
> Tabellen zeichnen kann, habe ich noch nicht verstanden :-)

An dieser Stelle bin ich noch nicht. Aber ich hatte es so vorgesehen, 
das man den Namen des Templates zusammen mit einem Array übergibt und 
die entsprechende Funktion die Tabelle erzeugt. Im Grunde macht das 
print_html_table() ja schon, in dem ich dort das Template fest auf 
"vlib_table.tmpl" setze und der Aufruf von load_html_template() den 
Scriptnamen in den Pfad übernimmt.

> Übrigens ist mir noch aufgefallen dass du deutsche, und ich englische
> Kommentare verwende. Vielleicht sollten wir uns da auch noch einigen.
> Also ich bevorzuge eigentlich englisch, weil es halt einfach DIE Sprache
> für Programmierer ist, und für ein OpenSource Projekt sowieso. Und
> ausserdem kann ich so mein bescheidenes Englisch noch ein bisschen
> verbessern :-)

Man kann ja die Kommentare später übersetzen :) Solange lass ich die 
erstmal in Deutsch.

> Und übrigens, in der config.php solltest du noch das define "LANGUAGE"
> in Anführungszeichen setzen (bekomme immer eine Fehlermeldung deswegen).

Erledigt.

> Was hat es damit eigentlich auf sich? Soll das ermöglichen, dass part-DB
> in verschiedenen Sprachen angezeigt werden kann? Das wäre ja cool! Aber
> wo würde man dann die verschiedenen Übersetzungstexte definieren?

Erstmal ist das nur für LC_ALL 
(http://php.net/manual/de/function.setlocale.php) interessant, später 
könnte man damit auch die Templates internationalisieren. Nur wer 
übersetzt die Templates in andere Sprachen? gettext() wäre zwar 
interessant, aber für mich noch eine Spur zu hoch.

> Nachtrag:
> Ach ja, und die class_html.php würde ich noch in html.php umbenennen,
> dann hättest du das gleiche Namensschema wie ich. Die Dateien liegen ja
> eh alle im Ordnert "class", sollte also eh klar sein dass es sich dort
> um Klassen handelt.

Umbenennen geht immer :-) Ist eine Angewohnheit von mir, die Klassen und 
Libraries mit "class_" bzw. "class." oder "lib_" bzw. "lib." noch extra 
zu kennzeichnen, um Verwechselungen zu vermeiden. Könnte ja jemand 
meinen, Libraries und Klassen gehören in das gleiche Verzeichnis ;-)

Ich habe config_page.php auch auf mod_xsendfile erweitert. Noch 
funktioniert es nicht perfekt, aber wenn, dann lohnt es sich das in die 
File-Klasse zu verschieben.

von Gelöscht (kami89)


Angehängte Dateien:

Lesenswert?

Okay alles klar :-)

Das mit der Internationalisierung können wir ja mal machen wenn uns 
langweilig ist ;-) Momentan stehen aber wichtigere Sachen an...

Hast du eigentlich schon Erfahrung mit Doxygen? Meinst du, es würde sich 
lohnen bzw. Sinn machen den Sourcecode mit Doxygen zu dokumentieren? Ich 
bin mir nicht sicher ob das vielleicht erst bei viel grösseren Projekten 
beginnt Sinn zu machen.

Und kennst du dich eigentlich mit SQL gut aus? Könntest du mir beim 
Datenbankupdate fürs neue Lieferantendetails-System helfen? :-)

Anbei übrigens nochmal eine neuere version des Klassendiagrammes.

von Udo N. (weinbauer73)


Lesenswert?

Ich hab irgendwann mal mit Doxygen experimentiert, hab dann aber mal ein 
anderes System getestet. Hat mich beides nicht überzeugt. So hab ich die 
gesamte Doku über Dokuwiki gemacht, das keine Datenbank benötigt.

SQL ist für mich kein Buch mit sieben Siegeln, auch wenn ich nicht jede 
Möglichkeit kenne oder nutze.

Bin gerade an der print_table_row() aus der lib.php dran. Wenn das 
funktioniert, kann ich die beiden Aufrufe aus search.php und 
showparts.php auf die LOOPs umschreiben. Dann sieht man die Vorteile der 
neuen HTML-Klasse. Derzeit wird der Output abgefangen und als fertiger 
HTML-Block einfach eingefügt.

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> SQL ist für mich kein Buch mit sieben Siegeln, auch wenn ich nicht jede
> Möglichkeit kenne oder nutze.

Das heisst, du könntest mal probieren ein Datenbankupdate zu schreiben? 
:-) Was man machen müsste, habe ich ja hier geschrieben: 
Beitrag "Re: PART-DB RW 1.2"

Udo Neist schrieb:
> Bin gerade an der print_table_row() aus der lib.php dran. Wenn das
> funktioniert, kann ich die beiden Aufrufe aus search.php und
> showparts.php auf die LOOPs umschreiben. Dann sieht man die Vorteile der
> neuen HTML-Klasse. Derzeit wird der Output abgefangen und als fertiger
> HTML-Block einfach eingefügt.

OK das würde mich interessieren wie das dann ausschaut. Ich finde es 
einfach wichtig, dass man so eine Tabelle mit Objekten wie "Part", 
"Orderinformations", "Footprint", "File" usw. erzeugen kann. Dann muss 
man noch entscheiden, was für ein Tabellentyp es sein soll 
(nopriceparts, obsoleteparts, defectfilenamefiles, ...), und die 
Tabellenspalten werden dann in Abhängigkeit vom aktuellen Benutzer 
gestaltet (Sichtbarkeit und Reihenfolge der Spalten).

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
> Udo Neist schrieb:
>> SQL ist für mich kein Buch mit sieben Siegeln, auch wenn ich nicht jede
>> Möglichkeit kenne oder nutze.
>
> Das heisst, du könntest mal probieren ein Datenbankupdate zu schreiben?
> :-) Was man machen müsste, habe ich ja hier geschrieben:
> Beitrag "Re: PART-DB RW 1.2"

Schaue ich mir die Tage mal an :-)

> OK das würde mich interessieren wie das dann ausschaut. Ich finde es
> einfach wichtig, dass man so eine Tabelle mit Objekten wie "Part",
> "Orderinformations", "Footprint", "File" usw. erzeugen kann. Dann muss
> man noch entscheiden, was für ein Tabellentyp es sein soll
> (nopriceparts, obsoleteparts, defectfilenamefiles, ...), und die
> Tabellenspalten werden dann in Abhängigkeit vom aktuellen Benutzer
> gestaltet (Sichtbarkeit und Reihenfolge der Spalten).

Ganz so einfach geht das nicht. Zwar kann man die Reihenfolge der 
Spalten fast beliebig machen, aber dazu muss man das Template anders 
aufbauen und viele Funktionen in den Code überführen. Das würde derzeit 
ich in die ToDo- oder Wunschliste aufnehmen. Ich würde es bei im Moment 
bei den jetzigen Tabellen belassen. Durch die Templates wird so manches 
entschlackt, aber nicht an jeder Stelle flexibel.

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Schaue ich mir die Tage mal an :-)

Danke :-)

Udo Neist schrieb:
> Ganz so einfach geht das nicht. Zwar kann man die Reihenfolge der
> Spalten fast beliebig machen, aber dazu muss man das Template anders
> aufbauen und viele Funktionen in den Code überführen. Das würde derzeit
> ich in die ToDo- oder Wunschliste aufnehmen. Ich würde es bei im Moment
> bei den jetzigen Tabellen belassen. Durch die Templates wird so manches
> entschlackt, aber nicht an jeder Stelle flexibel.

Hmm okay. Naja, Voraussetzung für die flexiblen Tabellen ist ja sowieso 
die Implementierung der Benutzerverwaltung, und die braucht ja noch ein 
bisschen Zeit.

von Udo N. (weinbauer73)


Lesenswert?

Revision 506: search.php und showparts.php sind auf Templates 
umgestellt. Die Funtion print_table_row() gibt nur noch ein Array von 
Daten zurück.

Kurze Einführung in die HTML-Klasse:

Der HTML-Kopf ist in der vlib_head.tmpl gespeichert und ist in 
print_html_header() fest kodiert. Die verschiedenen Variablen werden 
durch set_html_meta() gesetzt.
1
$html = new HTML;
2
$html -> set_html_meta ( array(
3
  'title'         =>  'Deviceinfo',
4
  'http_charset'  =>  $http_charset,
5
  'theme'         =>  $theme,
6
  'css'           =>  $css,
7
  'menu'          =>  true,
8
  'popup'         =>  true,
9
  'hide_id'       =>  $hide_id
10
  )
11
);
12
$html -> print_html_header();

Das Herzstück der Klasse ist die Behandlung der einzelnen Templates. Es 
werden zwei Herangehensweisen unterstützt. Wer mit vlibTemplates schon 
vertraut ist, der kennt die Funktion setVar(). Diese wird durch 
set_html_variable() ersetzt. Zusätzlich beherrscht sie einige 
Formatierungen mittels number_format() und sprintf(). Die kürze und 
etwas elegantere Methode nutzt parse_html_template(). Man übergibt den 
Namen des Templates und ein assoziatives Array. Ist der Wert eines 
Paares ein Array, so wird dieses als Loop für die Templates 
interpretiert. Ein Beispiel ist folgender Code aus showparts.php:
1
$table = array(array('new_category'=>true));
2
$result   = parts_select_category( $cid, $subcat);
3
$row_odd = true;
4
while ( $data = mysql_fetch_assoc( $result))
5
{
6
  $table[] = print_table_row( $row_odd, $data, $hide_mininstock);
7
  $row_odd = ! $row_odd;
8
}
9
10
$array = array(
11
  'cid'                =>  $cid,
12
  'subcat'             =>  (! $subcat),
13
  'subcat_text'        =>  $subcat_text,
14
  'category_get_name'  =>  category_get_name($cid),
15
  'hide_mininstock'    =>  $hide_mininstock,
16
  'table'              =>  $table
17
  );
18
$html -> parse_html_template( 'table', $array );

Die Alternative parse_html_table() ist für Loops vorgesehen, die 
vollständige Blöcke (bei Tabellen müssen die table-tags im Template 
vorhanden sein) erzeugen. Teilausgaben müssen mit parse_html_template() 
Vorlieb nehmen.

Den Abschluss der Webseite gibt print_html_footer() aus. Die 
dazugehörige Datei ist vlib_foot.tmpl.
1
$html -> print_html_footer();

von Udo N. (weinbauer73)


Lesenswert?

> Udo Neist schrieb:
>> Ganz so einfach geht das nicht. Zwar kann man die Reihenfolge der
>> Spalten fast beliebig machen, aber dazu muss man das Template anders
>> aufbauen und viele Funktionen in den Code überführen. Das würde derzeit
>> ich in die ToDo- oder Wunschliste aufnehmen. Ich würde es bei im Moment
>> bei den jetzigen Tabellen belassen. Durch die Templates wird so manches
>> entschlackt, aber nicht an jeder Stelle flexibel.

Wuaah... Was hab ich da denn geschrieben?

Nochmal: Das würde ich derzeit in die ToDo- oder Wunschliste aufnehmen. 
Ich würde es bei den jetzigen Tabellen belassen.

von Udo N. (weinbauer73)


Lesenswert?

In der index.php steht ja ein require ('mobil/mobil.php') drin. Da es 
dieses Script nicht gibt, würde ein Aufruf von einem Tablet-PC unter 
Umständen ins Leere laufen. Wäre es da nicht sinnvoll vorerst ein 
"Sorry, wird derzeit nicht unterstützt" anzuzeigen und später einfach 
ein angepasstes Thema (dafür sind ja gerade die Templates so genial) zu 
laden?

Ich war so frei und hab zumindest ersteres implementiert.

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Nochmal: Das würde ich derzeit in die ToDo- oder Wunschliste aufnehmen.

Da ist es schon drin ;-)

> Ich würde es bei den jetzigen Tabellen belassen.

Ja vorerst kein Problem, aber ich dachte halt ich baue gleich schon so 
eine Klasse, damit man später nicht nochmal alles total umbauen muss. 
Ich hätte jetzt die Tabellengestaltung noch nicht benutzerspezifisch 
gemacht, aber halt einfach alles schonmal so vorbereitet dass man dann 
nur noch diese eine Klasse anpassen muss, sobald die Benutzerverwaltung 
steht.

Udo Neist schrieb:
> In der index.php steht ja ein require ('mobil/mobil.php') drin. Da es
> dieses Script nicht gibt, würde ein Aufruf von einem Tablet-PC unter
> Umständen ins Leere laufen. Wäre es da nicht sinnvoll vorerst ein
> "Sorry, wird derzeit nicht unterstützt" anzuzeigen und später einfach
> ein angepasstes Thema (dafür sind ja gerade die Templates so genial) zu
> laden?

Statt einem Hinweis können wir doch einfach die ganz normale Seite 
anzeigen lassen? Also ich hätte lieber eine Seite, die nicht auf 
Mobilgeräte angepasst ist, als gar keine Seite :-)

von Udo N. (weinbauer73)


Lesenswert?

check_mobile() in der index.php ist Geschichte. Man muss nicht alles in 
Funktionen giessen, wenn der Aufruf nur einmal im gesamten Kontext 
erfolgt. Folgende Variante ersetzt die Funktion komplett und verwendet 
eine while()-Schleife. In der index.php habe ich auf die Klammern 
verzichtet, um die Schleife als Zweizeiler zu bekommen. Ausgeschrieben 
läuft das so ab:
1
$agents = array(
2
  'Windows CE', 'Pocket', 'Mobile',
3
  'Portable', 'Smartphone', 'SDA',
4
  'PDA', 'Handheld', 'Symbian',
5
  'WAP', 'Palm', 'Avantgo',
6
  'cHTML', 'BlackBerry', 'Opera Mini',
7
  'Nokia', 'PSP', 'J2ME'
8
);
9
10
$mobile = false;
11
if (isset($_SERVER["HTTP_USER_AGENT"])) 
12
{
13
   while(list($agent) = each($agents) && !$mobile)
14
   {
15
      if (strpos($_SERVER["HTTP_USER_AGENT"], $agent))
16
      {
17
         $mobile = true;
18
      }
19
   }
20
}

while() wird solange durchlaufen, bis die Bedingung ein false ergibt. 
Enthält das Array ein Elemente hat und die Stringfunktion innerhalb der 
Schleife hat keinen Treffer ergeben, so bleibt die Variable $mobile auf 
false und wird durch die Negierung true. Die UND-Verknüpfung ergibt 
damit true. Ist das Array durchlaufen oder ein Treffer im Array 
gelandet, so wird die UND-Verknüpfung false und while() beendet sich. 
Man erspart sich das break.

Geht man noch eins weiter, kann man die äußere IF-Abfrage in die 
while()-Bedingung einfliessen lassen.
1
while(list($agent) = each($agents) && isset($_SERVER["HTTP_USER_AGENT"]) && !$mobile)
2
{
3
   if (strpos($_SERVER["HTTP_USER_AGENT"], $agent))
4
   {
5
      $mobile = true;
6
   }
7
}

Für die Hardcore-PHP-Fans als Dreizeiler:
1
$agents = array('Windows CE','Pocket','Mobile','Portable','Smartphone','SDA','PDA','Handheld','Symbian','WAP','Palm','Avantgo','cHTML','BlackBerry','Opera Mini','Nokia','PSP','J2ME');
2
$mobile = false;
3
while(list($agent) = each($agents) && isset($_SERVER["HTTP_USER_AGENT"]) && !$mobile) if (strpos($_SERVER["HTTP_USER_AGENT"], $agent)) $mobile = true;

von Udo N. (weinbauer73)


Lesenswert?

> Udo Neist schrieb:
>> In der index.php steht ja ein require ('mobil/mobil.php') drin. Da es
>> dieses Script nicht gibt, würde ein Aufruf von einem Tablet-PC unter
>> Umständen ins Leere laufen. Wäre es da nicht sinnvoll vorerst ein
>> "Sorry, wird derzeit nicht unterstützt" anzuzeigen und später einfach
>> ein angepasstes Thema (dafür sind ja gerade die Templates so genial) zu
>> laden?
>
> Statt einem Hinweis können wir doch einfach die ganz normale Seite
> anzeigen lassen? Also ich hätte lieber eine Seite, die nicht auf
> Mobilgeräte angepasst ist, als gar keine Seite :-)

Ich hab beim Vergleich der Branches festgestellt, das es die Meldung 
bereits gab und ich die schon vor längerem entsorgt habe.

Das Problem der Mobilgeräte ist die beschränkte Größe des Screens. Da 
kann man das Menü und den Content praktisch nicht nutzen. Man müsste das 
Menü auslagern. Sind die Frames mal verschwunden, lässt sich das Menü 
ganz einfach ausblenden (CSS: "display:none;"), damit der Inhalt 
angezeigt wird und umgekehrt. Das könnte man dann sehr simple mit einem 
Switch im Template freischalten. Genauso könnte man dann auch 
Nicht-Fullscreen-Fenster der Browser behandeln. Beides würde ein 
Javascript-Schnipsel machen.

Pseudocode:
1
var menu_on = {TMPL_IF NAME="menu_on"}1{TMPL_ELSE}0{/TMPL_IF};
2
3
if (menu_on == 1) div.menu.style="display:block";
4
if (menu_on == 0 and browser.width<=1024) div.menu.style="display:none";

von Udo N. (weinbauer73)


Lesenswert?

- Update auf Revision 507
- Webseite http://weinbauer73.myparts.info/ aktualisiert

Archiv ohne die Grafiken: 
http://weinbauer73.myparts.info/part-db-svn507-un20120730.tar.gz

von Gelöscht (kami89)


Lesenswert?

Ich habe in meinem Branch einen neuen Ordner "documentation" erstellt. 
Ich denke, den können wir später auch für die Dokumentation (für 
Anwender und Entwickler) verwenden, z.B. für Hilfedateien.

Darin habe ich den Unterordner "UML" erstellt, in dem ich das 
Klassendiagramm abgelegt habe. So werden die Versionen auch gleich vom 
SVN verwaltet, und es ist immer schnell erreichbar.

Das jeweils aktuelle PDF ist unter dieser Adresse erreichbar: 
https://part-db.googlecode.com/svn/branches/kami89/documentation/UML/class_diagram.pdf

von kirk d. (kirkdis)


Lesenswert?

Hallo Community,

ich war seit Januar 2012 auf der Suche nach einer Lagerverwaltung für 
mich in der Firma. Nur durch Zufall bin ich über die PArt-DB gestolpert 
und fand die auf Anhieb recht gut programmiert. Vor einem Monat dann 
haben wir angefangen in unserem Lager Ersatzteile jeglicher Art 
aufzunehmen. Mir ist im vornherein bewusst dass ich die Part-DB dafür 
zweckentfremde, da diese ja eigentlich nur für 
Kleinstelektronikkomponenten ausgelegt ist.

Was ich super finden ist, dass die GUI sehr sauber und einfach gehalten 
ist. Allderdings stört mich z.b. der Footprint in den einzelnen 
Bauteilen. Diesen kann ich nicht verwenden. Gibt es eine Möglichkeit 
diesen rauszunehmen? Vielleicht könnt ihr da zukünftig was Einbauen wo 
man den Punkt einfach per Checkbox ausblenden kann.

Aufgrund der Massen an Ersatzteilen merke ich dass wir nach und nach 
Probleme bekommen. Die Funktion mit den Bildern zu den Artikeln ist 
genial allerdings wird bei Kategorien mit vielen Teilen die Auflistung 
sehr träge.

Aktuell schaue ich fast täglich in die Google codes Projektseite 
allerdings ist die Entwicklung fast ausschließlich hier im Gange.

Ich selbst bin leider programmiertechnisch nicht soo fit, was mich aber 
nicht abhält auch mal Codeschnipsel nach Anleitung zu ändern.

Ich würde mich gerne aber als Tester bereit erklären euch zu helfen.

Was sich sehr gut bewährt hat ist die Hardware mit der ich arbeite. Die 
Datenbank und der Webserver läuft auf einer Synology DS 107. Von daher 
kann ich auf SVN´s verzichten und kann von mehreren Rechner 
unproblematisch auf die Datenbank zugreifen. Ich weiss nicht ob das von 
euch schon jemand getestet hat.

Keep the work going on!

Gruß Kirkdis

von Gelöscht (kami89)


Lesenswert?

Hallo kirkdis,

> ich war seit Januar 2012 auf der Suche nach einer Lagerverwaltung für
> mich in der Firma. Nur durch Zufall bin ich über die PArt-DB gestolpert
> und fand die auf Anhieb recht gut programmiert. Vor einem Monat dann
> haben wir angefangen in unserem Lager Ersatzteile jeglicher Art
> aufzunehmen.

Cool, dass unser Projekt bereits den Weg in eine Firma gefunden hat :-) 
Darf man fragen, wie viele Arbeiter auf die Part-DB zugreifen? Bisher 
ist Part-DB allerdings noch nicht für die Verwendung in einer Firma 
ausgelegt. Das soll sich aber noch ändern, es wird in Zukunft z.B. eine 
Benutzerverwaltung (mit Rechtevergabe) geben.

> Was ich super finden ist, dass die GUI sehr sauber und einfach gehalten
> ist. Allderdings stört mich z.b. der Footprint in den einzelnen
> Bauteilen. Diesen kann ich nicht verwenden. Gibt es eine Möglichkeit
> diesen rauszunehmen? Vielleicht könnt ihr da zukünftig was Einbauen wo
> man den Punkt einfach per Checkbox ausblenden kann.

Eine solche Idee hatte ich auch schon. Ich dachte da an eine Einstellung 
für die Kategorien, also quasi um anzugeben ob es sich bei einer 
Kategorie um Bauteile mit Footprints handelt. Ich habe bei mir z.B. eine 
Kategorie "Werkstatt" in dem ich Werkzeuge und Verbrauchsmaterialien 
verwalte. Und da machen die Footprints auch wenig Sinn. Daher wäre es 
wünschenswert, wenn man bei ausgewählten Kategorien die Footprints 
deaktivieren kann.

Da wir aber momentan an einem relativ grossen Umbau arbeiten (Einführung 
eines Templatesystems und Umbau auf objektorientierte Programmierung), 
denke ich, werden wir diese neue Funktion erst in die neue Version 
aufnehmen. Heisst also, es wird noch etwas dauern bis diese Funktion zur 
Verfügung stehen wird.

> Aufgrund der Massen an Ersatzteilen merke ich dass wir nach und nach
> Probleme bekommen. Die Funktion mit den Bildern zu den Artikeln ist
> genial allerdings wird bei Kategorien mit vielen Teilen die Auflistung
> sehr träge.

Von wievielen Teilen in der Auflistung reden wir hier etwa? Wie viele 
davon haben ein Bild zugeordnet? Footprint wird keines der Bauteile 
zugeordnet haben, oder? Und welche Version von Part-DB verwendest du 
(hast du das Archiv v0.2.2 installiert, oder die neuste SVN-Revision)?

> Ich würde mich gerne aber als Tester bereit erklären euch zu helfen.

Das können wir immer gebrauchen :-)

> Was sich sehr gut bewährt hat ist die Hardware mit der ich arbeite. Die
> Datenbank und der Webserver läuft auf einer Synology DS 107. Von daher
> kann ich auf SVN´s verzichten und kann von mehreren Rechner
> unproblematisch auf die Datenbank zugreifen. Ich weiss nicht ob das von
> euch schon jemand getestet hat.

Hmm was meinst du damit, dass du aufs SVN verzichten kannst? Übers SVN 
ist einfach immer die allerneuste (Entwickler-)Version erhältlich. Diese 
können aber durchaus auch mal einige Fehler enthalten. Die erhältlichen 
Archive sind etwas älter, aber sollten dafür stabiler/erprobter sein.
Und dass man von mehreren Rechnern auf Part-DB zugreifen kann, ist 
eigentlich der Sinn einer Webapplikation :-)

Gruss
Urban

von Udo N. (weinbauer73)


Lesenswert?

kirk disen schrieb:
> Aufgrund der Massen an Ersatzteilen merke ich dass wir nach und nach
> Probleme bekommen. Die Funktion mit den Bildern zu den Artikeln ist
> genial allerdings wird bei Kategorien mit vielen Teilen die Auflistung
> sehr träge.

Eventuell können wir hier recht schnell eine Abhilfe schaffen, denn das 
Abschalten der Footprints bzw. eine Option für Thumbnails oder reinen 
Textlink sind ja nur kleine Änderungen. Erstes könnte man in den 
Kategorien selbst unterbringen (zusätzliche Option beim Erstellen einer 
Kategorie) und das andere wäre etwas für die Einstellungen in config.php 
(und später für die Benutzer-/Gruppenverwaltung).

> Aktuell schaue ich fast täglich in die Google codes Projektseite
> allerdings ist die Entwicklung fast ausschließlich hier im Gange.

Das Projekt ist hier ja auch entstanden und viele Interessierte haben 
diesen Thread auch abonniert. Das wir auf Google Codes das Wiki mal 
überarbeiten sollten, ist mir schon in den Sinn gekommen :-)

> Ich selbst bin leider programmiertechnisch nicht soo fit, was mich aber
> nicht abhält auch mal Codeschnipsel nach Anleitung zu ändern.
>
> Ich würde mich gerne aber als Tester bereit erklären euch zu helfen.

Ich schliess mich da Urban an. Tester kann man immer gebrauchen. Wir 
Entwickler sehen ja nur einen Teil der möglichen Probleme und Fehler.

> Was sich sehr gut bewährt hat ist die Hardware mit der ich arbeite. Die
> Datenbank und der Webserver läuft auf einer Synology DS 107. Von daher
> kann ich auf SVN´s verzichten und kann von mehreren Rechner
> unproblematisch auf die Datenbank zugreifen. Ich weiss nicht ob das von
> euch schon jemand getestet hat.

Bei mir gibt es derzeit drei Systeme, auf denen ich die Entwicklung 
mache, einer ist öffentlich zugänglich und erhält die Updates meines 
Branches, wenn ich sie für stabil halte. Ich schätze, ich bin bei ca. 
70% des Umbaus auf Templates angelangt.

> Keep the work going on!

Wir sind dabei :-)

von kirk d. (kirkdis)


Lesenswert?

also so wie ich das im überflug gelesen habe handelt es sich bei svn um 
eine version für windows die eine datenbank und einen webserver 
emuliert. gut vielleicht verwechsle ich da grad was hab den ellenlangen 
threat zu meiner entschuldigung auch nicht ganz gelesen. aber so wie 
sich jetzt herausstellt handelt es sich dabei wohl um die neuste version 
eures entwicklerteams.

synology stellt miniaturwebserver her. google mal danach sind echt feine 
geräte.

aktuell läuft bei mir die 0.2.2. würde alternativ eure mal  ebenbei 
laufen lassen oder gibts da bekannte probleme mit der datenbank wenn 
zwei scripte darauf zugreifen. will mir auf keinen fall die sql db 
zerschiessen. falls die db von 0.2.2 mit eurer neuesten svn kompatibel 
ist werd ich mich montag mal drüber machen die parallel laufen zu 
lassen.

artikel haben wir aktuell ca 2500 eingetragen. wieviele davon mit bild 
kann ich nicht genau sagen werds aber mal checken am montag und 
berichten.

nur so nebenbei aktuell verwalten wir mit eurem system 2 kardex 
hochregallager. wobei da eine wichtige funtkion gerade noch fehlt. habt 
ihr in eurer neuesten bereits etwas integriert wo ich nach lagerplatz 
sortieren kann?

gruss  kirkdis

von Gelöscht (kami89)


Lesenswert?

kirk disen schrieb:
> also so wie ich das im überflug gelesen habe handelt es sich bei svn um
> eine version für windows die eine datenbank und einen webserver
> emuliert. gut vielleicht verwechsle ich da grad was hab den ellenlangen
> threat zu meiner entschuldigung auch nicht ganz gelesen. aber so wie
> sich jetzt herausstellt handelt es sich dabei wohl um die neuste version
> eures entwicklerteams.

SVN ist ein Versionsverwaltungssystem: 
https://de.wikipedia.org/wiki/Apache_Subversion

Google Code ist z.B. so ein SVN-Server, deshalb wird unser Projekt dort 
verwaltet.

> aktuell läuft bei mir die 0.2.2. würde alternativ eure mal  ebenbei
> laufen lassen oder gibts da bekannte probleme mit der datenbank wenn
> zwei scripte darauf zugreifen. will mir auf keinen fall die sql db
> zerschiessen. falls die db von 0.2.2 mit eurer neuesten svn kompatibel
> ist werd ich mich montag mal drüber machen die parallel laufen zu
> lassen.

Bezüglich Datenbank zerschiessen würde sich sowieso ein gelegentliches 
Backup anbieten. Vorallem im professionellen Einsatz sollte man 
unbedingt regelmässige Backups der Datenbank machen.

Du kannst nicht verschiedene Versionen von Part-DB auf die gleiche 
Datenbank zugreifen lassen, da einige Updates die Datenbankstruktur 
verändern. Auch ein Downgrade ist nicht mehr einfach so ohne weiteres 
möglich.

Ich würde dir empfehlen, dass du erstmal deine komplette Datenbank 
sicherst (z.B. über phpMyAdmin oder mysqldump). Dann lädst du die neuste 
Version aus dem SVN herunter. Den Link dazu gibts hier: 
https://code.google.com/p/part-db/source/checkout und Anleitungen findet 
man über Google.

Einfach die alten Dateien mit den neuen aus dem SVN überschreiben. 
Danach kannst du die Version austesten, schauen ob alles so läuft wie es 
soll. Ich habe immer die neuste SVN-Version als Produktivsystem 
installiert und hatte noch nie wirklich Probleme.

Bei der neusten Version gibts übrigens auch gleich die Möglichkeit, 
direkt aus Part-DB heraus eine Datenbanksicherung durchzuführen.

Wenn irgendwas nicht richtig funktioniert mit der SVN-Version von 
Part-DB spielst du einfach wieder das Datenbank-Backup der Version 0.2.2 
und die alten 0.2.2er-Dateien ein, und du hast wieder genau deinen 
jetztigen Stand.

> artikel haben wir aktuell ca 2500 eingetragen. wieviele davon mit bild
> kann ich nicht genau sagen werds aber mal checken am montag und
> berichten.

Naja ich wollte eigentlich wissen, wie viele Einträge in den Kategorien 
vorhanden sind, die schon sehr lange zum Laden brauchen. Die Ladezeit 
beim Anzeigen einer Kategorie hängt vielmehr von der Anzahl der 
anzuzeigenden Teile, als von der Gesamtanzahl Teile ab. Vorallem die 
Bilder brauchen vermutlich viel Zeit, deshalb wollte ich wissen wie 
viele (ungefähr) Bilder aufgelistet werden. Also z.B. "100 Teile in 
einer Kategorie, 30 davon mit Bild, Ladezeit 10 Sekunden".

Übrigens spielt die Grösse der Bilder wahrscheinlich auch noch eine sehr 
grosse Rolle. Wenn jedes Teil ein 1MB grosses Bild hat, wird es sehr 
lange dauern z.B. 50 davon aufzulisten.

Vielleicht müssen wir da mit Thumbnauls arbeiten, damit die Ladezeiten 
sich in Grenzen halten bei Kategorien mit vielen (grossen) Bildern.

> nur so nebenbei aktuell verwalten wir mit eurem system 2 kardex
> hochregallager. wobei da eine wichtige funtkion gerade noch fehlt. habt
> ihr in eurer neuesten bereits etwas integriert wo ich nach lagerplatz
> sortieren kann?

Ist bereits in der Wunschliste, aber noch nicht eingebaut. Zur Zeit 
musst du dich halt mit der Suchfunktion begnügen, die findet ja auch 
Lagerorte.

Vielleicht hast du auch Glück und jemand baut die Funktion nächstens mal 
ein, so eine grosse Sache wär das gar nicht. Ich habe aber leider in den 
nächsten paar Wochen nicht viel Zeit zum programmieren 
(Semesterprüfungen...).

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
> Vielleicht müssen wir da mit Thumbnauls arbeiten, damit die Ladezeiten
> sich in Grenzen halten bei Kategorien mit vielen (grossen) Bildern.

Lohnt sich auf alle Fälle. So 64 oder 96 Pixel, je nach Qualität.

von Udo N. (weinbauer73)


Lesenswert?

Update auf Revision 510

- Fehlerbehandlungsklasse eingeführt (error.php: class _exception)
- HTML-Klasse mit Exceptions versehen
- HTML-Klasse nimmt Defaults für Thema, CSS und Charset aus der 
config.php, braucht nicht mehr mit angegeben zu werden (kann aber 
überschrieben werden)
- startup.php auf HTML->parse_html_template() umgestellt

PS: Die englischen Kommentare müssten noch überarbeitet werden ;-)

von Udo N. (weinbauer73)


Angehängte Dateien:

Lesenswert?

Ich habe mal die Copyright-Info überarbeitet und hoffe, es ist euch 
recht so.
1
part-db version 0.1
2
Copyright (C) 2005 Christoph Lechner
3
http://www.cl-projects.de/
4
5
part-db version 0.2+
6
Copyright (C) 2009 K. Jacobs and others (see authors.php)
7
http://code.google.com/p/part-db/
8
9
This program is free software; you can redistribute it and/or
10
modify it under the terms of the GNU General Public License
11
as published by the Free Software Foundation; either version 2
12
of the License, or (at your option) any later version.
13
14
This program is distributed in the hope that it will be useful,
15
but WITHOUT ANY WARRANTY; without even the implied warranty of
16
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
GNU General Public License for more details.
18
19
You should have received a copy of the GNU General Public License
20
along with this program; if not, write to the Free Software
21
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA

Aktuelle Änderungen (ist noch nicht im SVN, da ich obige Änderung nicht 
ohne Zustimmung übernehmen will)
1
- Lizenzinfo in die einzelnen Scripte reinkopiert bzw. aktualisiert
2
- error.php entsprechend dem Namensschema umgeschrieben
3
- Einige Variablen aus der config.php in das Array $conf verschoben
4
- html.php angepasst
5
- install.sh geändert: Lizenz und Abfrage ob diese akzeptiert wird, sowie Abfrage der Daten zur Installation der Datenbank
6
- SQL-Script an install.sh angepasst

Ich hänge mal die install.sh hier an. Bitte testet die mal bei euch aus 
(läuft unter Bash) und gebt mir Rückmeldung, ob sie sauber funktioniert. 
Ich möchte nämlich die INSTALL.txt bzw. auch das Thema im Wiki 
überarbeiten.

von Udo N. (weinbauer73)


Lesenswert?

Zu Issue #3 (http://code.google.com/p/part-db/issues/detail?id=3):

config_db.php:
1
$db['backup_path'] = BASE.'/backup/%Y%/%M%/';
config_page.php:
1
$db['backup_path'] = str_replace('%Y%',date('Y'),$db['backup_path']); // Year
2
$db['backup_path'] = str_replace('%M%',date('m'),$db['backup_path']); // Month
3
$db['backup_path'] = str_replace('%W%',date('w'),$db['backup_path']); // Day of week
4
$db['backup_path'] = str_replace('%WY%',date('W'),$db['backup_path']); // Week of year
5
if ( !is_dir($db['backup_path']) ) mkdir($db['backup_path'],0775,true);
6
$backup_path = isset($db['backup_path']) ? $db['backup_path'] : "backup/";

list_backup_files() liest dazu aus $db['backup_path'] rekursiv und gibt 
alles als Array zurück. Download und Löschen muss ich noch anpassen.

von Udo N. (weinbauer73)


Lesenswert?

Udo Neist schrieb:
> list_backup_files() liest dazu aus $db['backup_path'] rekursiv und gibt
> alles als Array zurück. Download und Löschen muss ich noch anpassen.

list_backup_files() gibt jetzt den Pfad unterhalb der Installation 
zurück. Download und Löschen ergänzen dann noch zu einem absoluten Pfad, 
um darauf zurückgreifen zu können. Beim Download wird nur der Dateiname 
genutzt.

von Gelöscht (kami89)


Lesenswert?

@Udo Neist

Du gibst ja richtig Gas beim programmieren :-D

Also wenn du mich fragst, ich finde das neue Copyright gut, da man sieht 
dass das ursprüngliche Projekt von uns "weitergeführt wurde. Aber K.J. 
ist hier der Chef :-) Scheint aber momentan irgendwie nicht sehr aktiv 
zu sein, oder ist er vielleicht in den Ferien?

Übrigens, hast du das "Problem" mit dem Datenbankupdate fürs neue 
Preissystem mal angeschaut?
Wenn es nicht einfach so direkt per SQL-Anweisung möglich ist, dann 
müssten wir halt dafür etwas PHP Code schreiben, der dann das Update 
durchführt. Aber so mächtig wie SQL ist, wirds bestimmt auch ohne PHP 
möglich sein :-)

Ich habe mal wieder meinen Branch aktualisiert. Auch das Klassendiagramm 
wurde aktualisiert 
(https://part-db.googlecode.com/svn/branches/kami89/documentation/UML/class_diagram.pdf). 
Ich habe mal angefangen die Benutzerverwaltung einzubauen. Ich stelle 
mir das so vor, dass man bei jedem Objekt, das man anlegt, eine Referenz 
auf den aktuell angemeldeten Benutzer übergibt. Die Berücksichtigung der 
Rechte würde dann direkt innerhalb der einzelnen Klassen stattfinden.

Zuerst dachte ich es wäre besser wenn die Überprüfung auf die 
notwendigen Rechte ausserhalb der Klassen passieren würde. So könnte man 
auch besser auf fehlende Rechte reagieren und entsprechend eine 
Fehlermeldung ausgeben. Allerdings bin ich mir noch nicht sicher ob 
früher oder später einzelne Klassenmethoden doch noch eine Information 
über die vorhandenen Rechte brauchen werden. Und ausserdem wird so die 
Überprüfung der Rechte nur an einer zentralen Stelle durchgeführt und 
muss nicht für jede Seite extra programmiert werden.

Um trotzdem gescheite Fehlermeldungen ausgeben zu können, habe ich bei 
den Klassen eine Funktion "get_last_error()" eingebaut. Versucht ein 
Benutzer z.B. den Namen eines Bauteils abzuändern, kann man einfach 
"set_name()" ganz normal aufrugen, und direkt nach diesem Aufruf halt 
noch per "get_last_error()" überprüfen ob ein Fehler aufgetreten ist. 
Falls ein String zurückkommt, wird direkt dieser String als 
Fehlermeldung ausgegeben.

Irgendwann müssen wir ja unsere zwei Branches ja noch miteinander 
verschmelzen. Momentan sind meine Klassen aber noch nicht wirklich 
fertig, eigentlich möchte ich sie zuerst möglichst fertig kriegen bevor 
wir die Branches zusammenschnüren. Nur wird es voraussichtlich noch ca. 
5 Wochen dauern bis es soweit ist, weil ich eben momentan zu wenig Zeit 
zum programmieren habe. Ist das für dich ein Problem, oder hast du in 
dieser Zeit selber noch genug zu tun mit den Templates?
Was sicher nicht schaden würde, ist wenn du mein Klassendiagramm einfach 
ein bisschen studierst, damit du ungefähr weisst wie das ganze aufgebaut 
ist. Nicht dass es später noch böse Überraschungen gibt beim 
Verschmelzen unserer Branches.

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
> @Udo Neist
>
> Du gibst ja richtig Gas beim programmieren :-D

Ich hab an diesem WE nichts vor, bis jetzt jedenfalls ;-)

> Also wenn du mich fragst, ich finde das neue Copyright gut, da man sieht
> dass das ursprüngliche Projekt von uns "weitergeführt wurde. Aber K.J.
> ist hier der Chef :-) Scheint aber momentan irgendwie nicht sehr aktiv
> zu sein, oder ist er vielleicht in den Ferien?

Ich warte ab. Er muss ja zustimmen.

> Übrigens, hast du das "Problem" mit dem Datenbankupdate fürs neue
> Preissystem mal angeschaut?

Nein, ich habe mich heute Abend an ein Online-Update der Datenbank 
versucht. Bisher läuft es mit lokalen Daten. Hier fehlt noch der 
Download des entsprechenden Archivs.

Kurzfassung zum Prinzip: Es wird die Datenbankversion ausgelesen, auf 
dem Server nach einem Update-Archiv für diese Version geschaut, geladen 
und installiert. Das Archiv beinhaltet eine PHP-Datei mit einem Array 
für einen Gültigkeitscheck und eine Datei mit den SQL-Befehlen. 
Möglichst eine Zeile pro SQL-Befehl, wird anhand des Semikolons 
getrennt. Eventuell müsste ich da noch ein alternatives Trennzeichen 
einführen, falls irgendwo bei den Daten selbst ein Semikolon vorhanden 
ist.

> Wenn es nicht einfach so direkt per SQL-Anweisung möglich ist, dann
> müssten wir halt dafür etwas PHP Code schreiben, der dann das Update
> durchführt. Aber so mächtig wie SQL ist, wirds bestimmt auch ohne PHP
> möglich sein :-)

Ich will mir das auf alle Fälle noch anschauen, bevor ich mich dazu 
äußere. Also einfach noch ein bisschen liegen lassen ;-)

> Zuerst dachte ich es wäre besser wenn die Überprüfung auf die
> notwendigen Rechte ausserhalb der Klassen passieren würde. So könnte man
> auch besser auf fehlende Rechte reagieren und entsprechend eine
> Fehlermeldung ausgeben. Allerdings bin ich mir noch nicht sicher ob
> früher oder später einzelne Klassenmethoden doch noch eine Information
> über die vorhandenen Rechte brauchen werden. Und ausserdem wird so die
> Überprüfung der Rechte nur an einer zentralen Stelle durchgeführt und
> muss nicht für jede Seite extra programmiert werden.

Es gibt bestimmt Notwendigkeiten in den verschiedenen Klassen, auch mal 
die Benutzerrechte zu testen. Ich lasse schon im eigentlichen Script 
prüfen, ob jemand überhaupt berechtigt ist, diese Funktion zu nutzen. 
Die Klassenfunktionen brauchen hier dann nur noch das tun, für das sie 
gedacht sind.

> Um trotzdem gescheite Fehlermeldungen ausgeben zu können, habe ich bei
> den Klassen eine Funktion "get_last_error()" eingebaut.

Gute Idee. Im Prinzip mache ich das ähnlich. Entweder gibt es einen 
Zahlencode für verschiedene Fehler und man kann den dann als Klartext 
zurückbekommen oder, wenn es extrem wichtige Funktionen sind, es gibt 
eine Exception und die Ausführung wird abgebrochen.

> Irgendwann müssen wir ja unsere zwei Branches ja noch miteinander
> verschmelzen. Momentan sind meine Klassen aber noch nicht wirklich
> fertig, eigentlich möchte ich sie zuerst möglichst fertig kriegen bevor
> wir die Branches zusammenschnüren. Nur wird es voraussichtlich noch ca.
> 5 Wochen dauern bis es soweit ist, weil ich eben momentan zu wenig Zeit
> zum programmieren habe. Ist das für dich ein Problem, oder hast du in
> dieser Zeit selber noch genug zu tun mit den Templates?

Meine Idee war es, erstmal beide Konzepte soweit zu entwickeln, dass sie 
nutzbar sind. Die fehlenden Templates sind in vielleicht zwei Wochen 
erstellt, wenn ich nicht wieder irgendeine Idee zu einem Issue hab ;-)

> Was sicher nicht schaden würde, ist wenn du mein Klassendiagramm einfach
> ein bisschen studierst, damit du ungefähr weisst wie das ganze aufgebaut
> ist. Nicht dass es später noch böse Überraschungen gibt beim
> Verschmelzen unserer Branches.

Da sehe ich weniger ein Problem. Ich würde einfach Klasse für Klasse in 
meinen Branch integrieren. Wenn du die Klassen so geschrieben hast, das 
die Funktionen der lib.php praktisch identisch in einer Klasse 
existieren, so macht der Umstieg kaum Ärger. Ich integriere die 
Templates auch erstmal so, das nur der HTML-Teil vom Rest getrennt wird. 
Ist das Template funktionstüchtig, nehme ich mir i.d.R. auch die 
dortigen Routinen vor. Gibt so manches, was man sinnvoller umsetzen 
kann.

von Udo N. (weinbauer73)


Angehängte Dateien:

Lesenswert?

Ich sehe in deinem Klassendiagramm, das du Objekte einsetzt. Ich muss 
gestehen, ich hab mit Objekten bei PHP noch nicht gearbeitet.

Meine Klassendefinition habe ich mal als Text-Datei erstellt. Sie 
umfasst meine eigenen drei Klassen html.php, error.php und pack.php.

EDIT: Korrigierte Klassendefinition (zweite Datei laden)

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Wenn du die Klassen so geschrieben hast, das
> die Funktionen der lib.php praktisch identisch in einer Klasse
> existieren, so macht der Umstieg kaum Ärger.

Naja praktisch identisch ist es sicher nicht ;-) Die neuen Funktionen 
sind natürlich voll auf OOP ausgelegt, geben also z.B. keine Arrays von 
SQL-Querys mehr zurück, sondern Objekte.

Udo Neist schrieb:
> Ich sehe in deinem Klassendiagramm, das du Objekte einsetzt. Ich muss
> gestehen, ich hab mit Objekten bei PHP noch nicht gearbeitet.

Das verstehe ich jetzt nicht^^ Arbeitet man mit Klassen, so arbeitet man 
doch automatisch auch mit Objekten ;-) Ansonsten machen die Klassen bzw. 
OOP nicht viel Sinn...

von Udo N. (weinbauer73)


Lesenswert?

Ich hab nicht gesagt, ich hätte noch nicht mit Objekten zu tun gehabt. 
Nur unter PHP halt noch nicht, deswegen kenne ich die Zugriffe darauf 
noch nicht. Klassen sind der Weg zu Objekten, aber nach meinem 
Wissensstand haben Objekte auch noch Eigenschaften. Bisher habe ich 
Klassen nur Variablen zur Verarbeitung übergeben und vielleicht hier und 
da einen Ansatz zu Objekten drin gehabt.

Ob jetzt eine Funktion aus der lib.php ein String, Integer oder Bool 
zurück gibt oder eine Klasse ein Objekt, das die gleichen Infos liefert, 
macht keinen Unterschied. Es ist nur ein anderer Zugriff auf die Daten. 
Wir werden sehen, wie man beide Branches zusammenbringen werden. Ich bin 
zuversichtlich, dass es uns gelingen wird.

von Udo N. (weinbauer73)


Lesenswert?

Ich habe gerade die partsinfo.php auf Templates umgestellt. Dabei ist 
mir aufgefallen, das die Auflistung eine Schleife enthält, die aber wohl 
nur einen Datensatz durchläuft.
1
$result = parts_select( $_REQUEST["pid"]);
2
while ( $data = mysql_fetch_assoc( $result))
3
{
4
...
5
}

Wenn ich das System richtig verstehe, kann PID nur einen Wert annehmen, 
da parts_select() nur ein Ergebnis zurückliefert. Die Schleife wird also 
nur einmal durchlaufen. Somit ist sie überflüssig. Liege ich da richtig 
in meiner Annahme?

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Ich hab nicht gesagt, ich hätte noch nicht mit Objekten zu tun gehabt.
> Nur unter PHP halt noch nicht, deswegen kenne ich die Zugriffe darauf
> noch nicht. Klassen sind der Weg zu Objekten, aber nach meinem
> Wissensstand haben Objekte auch noch Eigenschaften. Bisher habe ich
> Klassen nur Variablen zur Verarbeitung übergeben und vielleicht hier und
> da einen Ansatz zu Objekten drin gehabt.

Ach so, okay :-)
Naja schwierig ist es nicht, einfach wie bei anderen Sprachen mit dem 
"new" Operator neue Objekte anlegen usw. Ich selber habe ja bis vor 
kurzem nichtmal PHP programmiert, und jetzt habe ich 22 Klassen erstellt 
in PHP (und das was ich bisher getestet habe, funktioniert auch :-)
Eigentlich ist ja vieles sehr änlich wie in C++, vorallem der 
objektorientierte Teil. Und wenn man sich mal etwas nicht sicher ist, 
findet man im Internet für fast alles eine Erklärung.

Udo Neist schrieb:
> Wenn ich das System richtig verstehe, kann PID nur einen Wert annehmen,
> da parts_select() nur ein Ergebnis zurückliefert. Die Schleife wird also
> nur einmal durchlaufen. Somit ist sie überflüssig. Liege ich da richtig
> in meiner Annahme?

Würde ich jetzt auch meinen, ja. Es darf ja keine zwei Teile mit der 
gleichen ID geben.

Übrigens kommt mir noch in den Sinn, dass ich mal daran dachte die 
device.php zu löschen, und deren Aufgabe auch in die deviceinfo.php 
einzubauen. Dann bräuchte das JavaScript-Menü der Baugruppen nicht mehr 
zwei unterschiedliche Links (device.php oder deviceinfo.php). Das 
JavaScript-Menü wird bei mir nun ja in der Klasse "StructuralDBElement" 
erzeugt, und ist somit für Footprints, Kategorien, Baugruppen usw. 
verwendbar, aber das System muss natürlich einheitlich sein. Da sind 
solche "Extrawürste" wie zwei unterschiedliche URLs nicht erwünscht.

Vielleicht könntest du das ja noch bei Gelegenheit einbauen? Übrigens 
würde ich dann vielleicht die deviceinfo.php auch gleich showdevices.php 
nennen, das ist aussagekräftiger und wird ja bereits bei der 
showparts.php verwendet.

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
> Ach so, okay :-)
> Naja schwierig ist es nicht, einfach wie bei anderen Sprachen mit dem
> "new" Operator neue Objekte anlegen usw. Ich selber habe ja bis vor
> kurzem nichtmal PHP programmiert, und jetzt habe ich 22 Klassen erstellt
> in PHP (und das was ich bisher getestet habe, funktioniert auch :-)
> Eigentlich ist ja vieles sehr änlich wie in C++, vorallem der
> objektorientierte Teil. Und wenn man sich mal etwas nicht sicher ist,
> findet man im Internet für fast alles eine Erklärung.

Ich hab mir die PHP-Interpretation angeschaut. Im Prinzip hab ich das ja 
schon in den Klassen drin. Nur noch nie so betrachtet :-)

C++ hab ich mal angefangen, aber bin nicht weit gekommen. Ich hab 
irgendwo die C++-Bibel, nur finde ich die gerade nicht. Hab mir die 
ganzen Sachen selbst beigebracht :-)

> Würde ich jetzt auch meinen, ja. Es darf ja keine zwei Teile mit der
> gleichen ID geben.

Ich nehme das mal raus. Überflüssiges müssen wir nicht mitschleppen.

> Übrigens kommt mir noch in den Sinn, dass ich mal daran dachte die
> device.php zu löschen, und deren Aufgabe auch in die deviceinfo.php
> einzubauen. Dann bräuchte das JavaScript-Menü der Baugruppen nicht mehr
> zwei unterschiedliche Links (device.php oder deviceinfo.php). Das
> JavaScript-Menü wird bei mir nun ja in der Klasse "StructuralDBElement"
> erzeugt, und ist somit für Footprints, Kategorien, Baugruppen usw.
> verwendbar, aber das System muss natürlich einheitlich sein. Da sind
> solche "Extrawürste" wie zwei unterschiedliche URLs nicht erwünscht.
>
> Vielleicht könntest du das ja noch bei Gelegenheit einbauen? Übrigens
> würde ich dann vielleicht die deviceinfo.php auch gleich showdevices.php
> nennen, das ist aussagekräftiger und wird ja bereits bei der
> showparts.php verwendet.

Ich bin auch dafür, möglichst viel zu vereinheitlichen. Wenn es sinnvoll 
ist, warum auch nicht. Ich werde beides mal umsetzen :-)

So... deviceinfo.php ist erstmal ein Wrapper für showdevices.php. Sobald 
ich das auf vlibTemplate umgeschrieben habe, werde ich mir device.php 
schnappen und integrieren.

von Udo N. (weinbauer73)


Lesenswert?

Die deviceinfo.php ist in showdevices.php umbenannt und schätzungsweise 
zu 50% auf vlibTemplate umgestellt.

Anmerkungen:

1) Mir ist aufgefallen, dass manche Beschreibungen bzw. Überschriften 
der Funktionsblöcke auf der Webseite zu Verwirrungen führen können. Auf 
Anhieb hätte ich nicht gewußt, dass "Benötigte Teile abfassen" die 
Entnahme eines oder mehrerer kompletten Bausatzes/Bausätze bedeutet. Es 
wäre hilfreich, wenn man die Hilfe auch in Form von Tooltips anbieten 
würden. Man könnte am rechten Rand der Überschrift ein kleines 
Fragezeichen einbauen, welches dann den Tooltip präsentiert.

2) Warum bei "Zugeordnete Bauteilen" rechts das Kästchen für "Entfernen" 
markieren und dann über den Button "Löschen" löschen? Das könnte man 
doch in die Funktion hinter "Übernehmen" integrieren. Schließlich will 
man ja das als Änderung übernehmen. Etwas unlogisch nach meiner Meinung.

3) Die Javscript-Funktion validatePosIntNumber() erlaubt keine Änderung 
per "Backspace", "Ins", "Del" oder den Cursortasten. Mein Vorschlag:
1
function validatePosIntNumber(evt)
2
{
3
   var theEvent = evt || window.event;
4
   var key = theEvent.keyCode || theEvent.which;
5
   if (key==8 || key==45 || key==46 || key==37 || key==39 ) return key;
6
   key = String.fromCharCode( key );
7
   var regex = /[0-9]/;
8
   if( !regex.test(key) ) {
9
      theEvent.returnValue = false;
10
      if(theEvent.preventDefault) theEvent.preventDefault();
11
   }
12
}

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
>> Vielleicht könntest du das ja noch bei Gelegenheit einbauen? Übrigens
>> würde ich dann vielleicht die deviceinfo.php auch gleich showdevices.php
>> nennen, das ist aussagekräftiger und wird ja bereits bei der
>> showparts.php verwendet.
>
> Ich bin auch dafür, möglichst viel zu vereinheitlichen. Wenn es sinnvoll
> ist, warum auch nicht. Ich werde beides mal umsetzen :-)

Wunderbar, danke :-)

Udo Neist schrieb:
> 1) Mir ist aufgefallen, dass manche Beschreibungen bzw. Überschriften
> der Funktionsblöcke auf der Webseite zu Verwirrungen führen können. Auf
> Anhieb hätte ich nicht gewußt, dass "Benötigte Teile abfassen" die
> Entnahme eines oder mehrerer kompletten Bausatzes/Bausätze bedeutet. Es
> wäre hilfreich, wenn man die Hilfe auch in Form von Tooltips anbieten
> würden. Man könnte am rechten Rand der Überschrift ein kleines
> Fragezeichen einbauen, welches dann den Tooltip präsentiert.

Klingt gut. Wenn es aber mal noch eine richtige Dokumentation geben 
wird, würde ein Link auf die entsprechende Stelle in der Doku ja auch 
genügen.

Udo Neist schrieb:
> 2) Warum bei "Zugeordnete Bauteilen" rechts das Kästchen für "Entfernen"
> markieren und dann über den Button "Löschen" löschen? Das könnte man
> doch in die Funktion hinter "Übernehmen" integrieren. Schließlich will
> man ja das als Änderung übernehmen. Etwas unlogisch nach meiner Meinung.

Jup, das finde ich auch. Ausserdem verbraucht die "Löschen"-Spalte 
extrem viel Platz, obwohl nur kleine Kästchen drin stehen. Vielleicht 
könnte man auch da noch etwas verbessern, also den Platz besser 
ausnutzen.

Udo Neist schrieb:
> 3) Die Javscript-Funktion validatePosIntNumber() erlaubt keine Änderung
> per "Backspace", "Ins", "Del" oder den Cursortasten. Mein Vorschlag:

Jo, wenns funktioniert --> einbauen :-)

von M. K. (avr-frickler) Benutzerseite


Lesenswert?

Ich habe vor 2 Wochen zu Testzwecken auch mal die Datenbank (Version 
0.2.2) in der Firma/Abteilung) installiert.

Wir sind eine 7 Mann große Entwicklungsabteilung und haben unser 
Bauteilellager bisher mit Excel 'gepflegt'. Ich habe dann mal so vor 2 
Wochen den Vorschlag gemacht sich diese Datenbank mal anzusehen.
Was ich bisher so von den Kollegen gehört habe klang sehr positiv.

Bevor ich jetzt aber unsere Excel-Tabelle in die Datenbank überführe 
würde mich interessieren, wann ihr meint in etwa mit dem Zusammenführen 
eurer Branches fertig zu sein. Wenn das jetzt nur so 2-3 Wochen dauert, 
würde ich noch warten ;-)

Wenn ich das richtig verstanden habe ist es in der neuen Version dann 
möglich einem Bauteil mehreren Lieferanten zuzuordnen?
Macht es vielleicht auch Sinn einem Bauteil mehrere Hersteller zuordnen 
zu können?

Dann ist uns aufgefallen das beim anlegen von Bauteilen ein zweites 
Fenster aufpoppt wenn man neue Footprints/Lagerorte anlegt, kann man 
nicht da zum bereits offenem Dialog wieder zurückkehren?

Eine Suche nach Preis oder die Splate Preis bei den Suchergebnissen 
währe sicher sehr hilfreich.

Wenn ihr noch jemandem zum Test braucht, kann ich euch da auch gerne 
weiterhelfen. Ich habe die Datenbank in einer XEN-Domu am laufen und 
kann die schnell klonen und so auch Tests mit einer umfangreichen 
Datenbank machen.
Mit PHP und MySQL kenn ich mich auch etwas aus, kleinere Aufgaben kann 
ich auch gerne übernehmen.

von Gelöscht (kami89)


Lesenswert?

M. K. schrieb:
> Ich habe vor 2 Wochen zu Testzwecken auch mal die Datenbank (Version
> 0.2.2) in der Firma/Abteilung) installiert.
>
> Wir sind eine 7 Mann große Entwicklungsabteilung und haben unser
> Bauteilellager bisher mit Excel 'gepflegt'. Ich habe dann mal so vor 2
> Wochen den Vorschlag gemacht sich diese Datenbank mal anzusehen.
> Was ich bisher so von den Kollegen gehört habe klang sehr positiv.

Das freut uns natürlich :-)

M. K. schrieb:
> Bevor ich jetzt aber unsere Excel-Tabelle in die Datenbank überführe
> würde mich interessieren, wann ihr meint in etwa mit dem Zusammenführen
> eurer Branches fertig zu sein. Wenn das jetzt nur so 2-3 Wochen dauert,
> würde ich noch warten ;-)

Also ich von meiner Seite würde sagen, dass ich in ca. 5 Wochen die 
Klassen einigermassen fertig habe. Ab dann wird es aber sicher nochmal 1 
bis 2 Wochen dauern bis die beiden Branches zusammengeführt und 
lauffähig sind. Bis dann ein neues Downloadarchiv rauskommt (also eine 
als "stabil" bezeichnete Version) wird es dann aber nochmal ein weilchen 
dauern, die neue Version muss ja erst noch gründlich getestet und Fehler 
ausgemerzt werden.

Aber warten musst du ja eigentlich nicht, du kannst auch die Version 
0.2.2 oder die aktuelle SVN Version benutzen bis die "brandneue" Version 
rauskommt. Danach kannst du einfach deine Version aktualisieren, das ist 
kein Problem, die Datenbankstruktur wird automatisch angepasst. Part-DB 
ist so gebaut, dass man problemlos immer auf die neuste Version 
aktualisieren kann.

M. K. schrieb:
> Wenn ich das richtig verstanden habe ist es in der neuen Version dann
> möglich einem Bauteil mehreren Lieferanten zuzuordnen?

Jup, genau. Und auch den Bezug der Preise auf eine bestimmte 
Bestellmenge wird dann vermutlich möglich sein.

> Macht es vielleicht auch Sinn einem Bauteil mehrere Hersteller zuordnen
> zu können?

Hmm...Also ich würde da jetzt nicht direkt einen Sinn erkennen. Ich 
würde ähnliche Bauteile (genau gleich werden sie ja kaum sein), die von 
anderen Herstellern stammen, als separate Bauteile abspeichern. Dieses 
hat dann ja auch wieder andere Bestellnummern, andere Lieferanten, 
andere Preise. Gemeinsamkeiten unter den verschiedenen Teilen gibt es 
dann ja kaum noch (softwaretechnisch betrachtet, nicht die Bauteile an 
sich verglichen).

Wenn du aber einen guten Grund hast, warum diese Funktion Sinn machen 
würde, dann immer her damit :-)

M. K. schrieb:
> Dann ist uns aufgefallen das beim anlegen von Bauteilen ein zweites
> Fenster aufpoppt wenn man neue Footprints/Lagerorte anlegt, kann man
> nicht da zum bereits offenem Dialog wieder zurückkehren?

Entweder habe ich dich falsch verstanden, oder dieses Verhalten ist in 
der aktuellen SVN-Version nicht mehr so vorhanden. Ich habe leider grad 
keine 0.2.2er Version installiert, kann es also grad nicht testen.

Wenn die Online-Demo funktionieren würde, könntest du es dort rasch 
probieren. Aber irgendwie scheint der ganze Server momentan ein Problem 
zu haben, sogar auf der normalen Seite von K.J. kommen MySQL Fehler. Ich 
schreib ihm mal eine PN...

M. K. schrieb:
> Eine Suche nach Preis oder die Splate Preis bei den Suchergebnissen
> währe sicher sehr hilfreich.

Es ist geplant, dass die Tabellen(spalten) individuell anpassbar werden 
sollen. Allerdings wird das noch eine ganze Weile dauern, da wir zuerst 
die Benutzerverwaltung brauchen. Wenn es dringend ist, müsstest du es 
halt selber einbauen, oder nochmal hier nachfragen ob es jemand von uns 
machen kann (also nur für dich, nicht allgemein). Sollte keine grosse 
Sache sein.

M. K. schrieb:
> Wenn ihr noch jemandem zum Test braucht, kann ich euch da auch gerne
> weiterhelfen.

Wie ich schon weiter oben einmal geschrieben habe: Tester kann man immer 
brauchen :-) Alles was wir uns von euch wünschen, ist Feedback :-)
Speziell wenn Part-DB beruflich eingesetzt wird, sind die 
Anforderungen/Erwartungen an die Software ja anders als bei privater 
Nutzung. Da Part-DB vermutlich (noch?) nicht stark im beruflichen Umfeld 
genutzt wird, sind die Feedbacks von solchen Benutzern speziell wichtig.

Gruss
Urban

von kirk d. (kirkdis)


Lesenswert?

Urban B. schrieb:
> Ich würde dir empfehlen, dass du erstmal deine komplette Datenbank
> sicherst (z.B. über phpMyAdmin oder mysqldump). Dann lädst du die neuste
> Version aus dem SVN herunter. Den Link dazu gibts hier:
> https://code.google.com/p/part-db/source/checkout und Anleitungen findet
> man über Google.
>
> Einfach die alten Dateien mit den neuen aus dem SVN überschreiben.
> Danach kannst du die Version austesten, schauen ob alles so läuft wie es
> soll. Ich habe immer die neuste SVN-Version als Produktivsystem
> installiert und hatte noch nie wirklich Probleme.

Steig da grad bei der Struktur auf Google code nicht ganz durch.

Muss ich da die einzelnen Branches einfach nachinstallieren, oder gibts 
da irgendwo ein komplettarchiv dass ich dann einfach komplett einspiele? 
Wollte da grad mal loslegen aber da habperts schon weil ich bei google 
code nur einzelne files runterladen kann, vielleicht hab ich da auch nur 
was übersehen?!?

von Gelöscht (kami89)


Lesenswert?

kirk disen schrieb:
> Muss ich da die einzelnen Branches einfach nachinstallieren, oder gibts
> da irgendwo ein komplettarchiv dass ich dann einfach komplett einspiele?
> Wollte da grad mal loslegen aber da habperts schon weil ich bei google
> code nur einzelne files runterladen kann, vielleicht hab ich da auch nur
> was übersehen?!?

Du brauchst einen SVN Client (ein Programm) um das komplette Projekt 
herunterladen zu können.
Für Windows gibts dieses hier: http://tortoisesvn.net/
Für Linux muss das Paket "subversion" installiert sein.
Mit diesem Programm können dann die Dateien heruntergeladen werden. Du 
musst das Programm einfach mit diesem Link füttern:
1
http://part-db.googlecode.com/svn/trunk/

Wie TortoiseSVN genau funktioniert weiss ich nicht, da ich Linux 
verwende. Aber es sollte genügend Anleitungen dazu geben im Internet.

von Udo N. (weinbauer73)


Lesenswert?

Die Verzeichnisse "uneist" und "kami89" unterhalb von 
http://part-db.googlecode.com/svn/branches/ sind aktuell in Entwicklung 
und sollen nach der Zusammenführung die neue Version von Part-DB werden. 
Ich schätze, es dürfte Weihnachten werden, bis wir soweit sind. Das 
Update wird auf alle Fälle so unkompliziert wie möglich gemacht. Wir 
sind dabei, einen Update-Mechanismus dafür zu entwickeln :-)

von kirk d. (kirkdis)


Lesenswert?

Danke erstmal mti dem Tipp zum Tortoise SVN. Aber warum so kompliziert? 
wäre es denn nicht sinnvoll einfach ein aktuelles Package mit den ganzen 
Files online zu stellen? Bin ansich kein Freund von Client Programmen 
weshalb ich auch so erfreut über eure offene Part-DB bin. Einziger 
Vorteil den ich aktuell sehe durch das SVN ist dass Traffic gespart wird 
falls neue Versionen rauskommen wobei das bei der aktuellen Nutzerzahl 
wohl eher unwichtig ist. Das soll ja die neue Version von Part-DB 
selbstständig managen können so wie ich das aktuell lese. Erklär mir 
jetzt bitte noch wie man dem "umständlichen" SVN das verklickert die 
Files in nem Ordner zu laden. hab das grad beim 3. versuch immernoch 
nicht hinbekommen...

von Gelöscht (kami89)


Lesenswert?

kirk disen schrieb:
> Aber warum so kompliziert?
> wäre es denn nicht sinnvoll einfach ein aktuelles Package mit den ganzen
> Files online zu stellen?

Das SVN ist eigentlich nur für die Entwickler gedacht, nicht für die 
"Endkunden". Mit dem SVN können wir nämlich sehr bequem und schnell 
Änderungen in Google Code hochladen, Branches erstellen, Branches 
verschmelzen, Versionen verwalten, Änderungen nachvollziehen usw. Es 
gibt eine Menge Vorteile für uns Entwickler. Gerade auch wenn eben 
mehrere Personen am gleichen Projekt arbeiten. Und natürlich kann man 
eben seine eigene, lokal installierte Testversion ganz einfach immer 
aktuell halten.

Der "Nachteil" ist aber, dass die (aktuellste) SVN-Version nicht immer 
stabil läuft, noch Fehler enthält usw. weil eben mehrere Leute dran 
"rumfummeln" und sich auch mal gegenseitig in die Quere kommen können. 
Ist also wirklich nicht für die Endkunden gedacht, das würde nur Ärger 
geben.

Zwischendurch, wenn wir der Ansicht sind dass die aktuelle SVN-Version 
stabil und fehlerfrei läuft, stricken wir ein Archiv zusammen, das dann 
in Google Code unter "Downloads" erscheint. Das ist dann die offizielle 
stable-Version die für die Endkunden bestimmt ist.

Da aber unser Projekt noch einigermassen überschaubar ist (verglichen 
mit anderen SVN Projekten), nicht zu viele Leute dran rumschrauben und 
die aktuelle SVN-Version gar nicht schlecht läuft, "darf" man momentan 
auch die SVN-Version benutzen wenns sein muss.

kirk disen schrieb:
> Das soll ja die neue Version von Part-DB
> selbstständig managen können so wie ich das aktuell lese.

Genau. Das würde das Updaten dann sehr bequem machen.

kirk disen schrieb:
> Erklär mir
> jetzt bitte noch wie man dem "umständlichen" SVN das verklickert die
> Files in nem Ordner zu laden.

Was willst du genau machen? Die Dateien aus dem SVN herunterladen? Wie 
gesagt, bei TortoiseSVN kenne ich mich überhaupt nicht aus.
Bei Linux geht es sehr bequem mit einem einzigen Terminalbefehl:
1
svn checkout http://part-db.googlecode.com/svn/trunk/ part-db
Dieser Befehl lädt das ganze Projekt nach /home/'user'/part-db/
Das Paket "subversion" muss dazu installiert sein.

von M. K. (avr-frickler) Benutzerseite


Angehängte Dateien:

Lesenswert?

Udo Neist schrieb:
> Das
> Update wird auf alle Fälle so unkompliziert wie möglich gemacht. Wir
> sind dabei, einen Update-Mechanismus dafür zu entwickeln :-)

Das hört sich sehr gut an. Dann werde ich erst einmal bei Version 0.2.2 
bleiben und mich dann auf die nächste Version freuen ;-)

Urban B. schrieb:
> M. K. schrieb:
>> Dann ist uns aufgefallen das beim anlegen von Bauteilen ein zweites
>> Fenster aufpoppt wenn man neue Footprints/Lagerorte anlegt, kann man
>> nicht da zum bereits offenem Dialog wieder zurückkehren?
>
> Entweder habe ich dich falsch verstanden, oder dieses Verhalten ist in
> der aktuellen SVN-Version nicht mehr so vorhanden. Ich habe leider grad
> keine 0.2.2er Version installiert, kann es also grad nicht testen.

Ich habe mal ein Bild angehangen, wenn man auf die rot eingekreisten 
Buttons klickt öffnet sich ein neues Popup mit der selben Maske wo dann 
nur die DropDown-Listen aktualisiert sind.
Es scheint nur den Internet Explorer (IE 8.0) zu betreffen der Firefox 
12 macht dies nicht.

Ein paar Fragen zu dem CSV-Import:
Im Beispiel wird vor den Daten eine Zeile mit den Spaltennamen 
angegeben, sind in dem Beispiel alle Spalten aufgeführt die es gibt und 
das # am Anfang muss auch sein?
Hier nochmal das Beispiel von der Seite:
1
# Kategorie; Name; Beschreibung; Anzahl; Footprint; Lagerort; Lieferant; Bestellnummer; Kommentar

Wenn ich die Vorschaubilder(Footprints) benutzen möchte muss ich bei 
Footprint exakt den Namen des Vorschaubildes angeben?

Die Lagerorte haben bei uns Unterkategorien, wie kann ich die in der 
CSV-Datei angeben? z.B. Schubladenkästen -> S-0123
Das gleiche bei den Bauteilkategorien.

von Gelöscht (kami89)


Lesenswert?

M. K. schrieb:
> Ich habe mal ein Bild angehangen, wenn man auf die rot eingekreisten
> Buttons klickt öffnet sich ein neues Popup mit der selben Maske wo dann
> nur die DropDown-Listen aktualisiert sind.
> Es scheint nur den Internet Explorer (IE 8.0) zu betreffen der Firefox
> 12 macht dies nicht.

Ah ja, stimmt, beim IE läuft da was falsch :-)
Ich habe den Fehler auch schon gefunden und lade ihn gleich noch ins SVN 
hoch. Wer nicht auf die SVN-Version aktualisieren will, kann die 
Änderungen auch selber durchführen.

Dazu einfach die folgenden Dateien herunterladen und die alten Dateien 
damit überschreiben:

https://part-db.googlecode.com/svn-history/r512/trunk/editpartinfo.php
https://part-db.googlecode.com/svn-history/r512/trunk/newpart.php

Dann muss man in der newpart.php die Zeile 145
1
$p_footprint = footprint_add( $NewFootprint, '');
ersetzen durch diese Zeile:
1
$p_footprint = footprint_add( $NewFootprint);

Und ausserdem muss in der alten partinfo.php eine neue Zeile (Nr. 54) 
eingefügt werden:
1
49:<head>
2
50:    <title>Detailinfo</title>
3
51:    <?php print_http_charset(); ?>
4
52:    <link rel="StyleSheet" hr*nospam*ef="css/partdb.css" type="text/css">
5
53:    <script type="text/javascript" src="popup.php"></script>
6
54:    <base target="_self" /> <!-- Diese Zeile ist neu -->
7
55:</head>

@Udo
Kannst du diese Änderungen auch gleich in deinen Branch übernehmen? Und 
natürlich sollte der Header immer vor der ersten Ausgabe geschrieben 
werden, was in der editpartinfo.php momentan nicht so ist. Da habe ich 
etwas "gebastelt", da es eh nur eine Übergangslösung ist (die Seite wird 
ja eh noch auf Templates umgestellt).

von Gelöscht (kami89)


Lesenswert?

M. K. schrieb:
> Ein paar Fragen zu dem CSV-Import:
> Im Beispiel wird vor den Daten eine Zeile mit den Spaltennamen
> angegeben, sind in dem Beispiel alle Spalten aufgeführt die es gibt und
> das # am Anfang muss auch sein?

Ja es sind alle Spalten aufgeführt, die existieren. Und alle Zeilen mit 
einem # am Anfang werden einfach ignoriert, das sind nur Kommentare 
(brauchts also nicht).

M. K. schrieb:
> Wenn ich die Vorschaubilder(Footprints) benutzen möchte muss ich bei
> Footprint exakt den Namen des Vorschaubildes angeben?

Ja, in Version 0.2.2 ist das noch so. Die aktuelle SVN-Version 
unterscheidet nun zwischen Footprint-Name und Dateiname (sind also 
unabhängig voneinander). Allerdings ist das Zuweisen eines Bildes noch 
nicht sehr bequem möglich, mann muss direkt den Dateinamen inkl. Pfad 
angeben. Es gibt aber immerhin einen Trick: Einfach den Dateinamen (ohne 
Pfad) eingeben, und so speichern. Danach ist dieser Footprint unter 
"Fehlerhafte Dateinamen" aufgelistet (mit einem Vorschlag als 
Dateinamen) und man muss nur noch bestätigen, dass der neue Pfad 
übernommen wird.
Das ist halt alles noch ein bisschen provisorisch weil uns der neue 
Uploadmanager noch fehlt (bzw. der Programmierer, der ihn programmiert) 
;-)

M. K. schrieb:
> Die Lagerorte haben bei uns Unterkategorien, wie kann ich die in der
> CSV-Datei angeben? z.B. Schubladenkästen -> S-0123
> Das gleiche bei den Bauteilkategorien.

Das automatische Anlegen von Kategorien funktioniert meines Wissens 
nicht mit Unterkategorien. Alle noch nicht existierenden Kategorien 
werden unter der Kategorie "Import" abgelegt.
Existieren die Kategorien aber bereits, dann brauchst du nur den 
direkten Kategorienamen anzugeben (ohne Pfad), das müsste funktionieren. 
Allerdings funktioniert das nur dann zuverlässig, wenn es nur eine 
einzige Kategorie mit diesem Namen gibt!

Für deinen Fall wäre die einzig gescheite Lösung also, dass du alle 
Kategorien schon vorher von Hand anlegst. Wäre das zu aufwändig (hast du 
viele Kategorien)? Dann könnte vielleicht auch jemand das Importscript 
so abändern, dass man auch ganze Pfade angeben kann, und die dann auch 
so angelegt werden...

von M. K. (avr-frickler) Benutzerseite


Lesenswert?

Urban B. schrieb:
> Für deinen Fall wäre die einzig gescheite Lösung also, dass du alle
> Kategorien schon vorher von Hand anlegst. Wäre das zu aufwändig (hast du
> viele Kategorien)? Dann könnte vielleicht auch jemand das Importscript
> so abändern, dass man auch ganze Pfade angeben kann, und die dann auch
> so angelegt werden...

Soviele sind es nicht, diese vorher per Hand anzulegen dürfte recht gut 
gehen. Die Lagerorte sind eindeutig, die Bauteilkategorien sollten auch 
eindeutig sein, wenn nicht lässt sich da sicher ein wenig tricksen.

Mehr Arbeit habe ich im Moment sowieso damit die Daten aus Excel 
aufzubereiten :-/

Urban B. schrieb:
>> Macht es vielleicht auch Sinn einem Bauteil mehrere Hersteller zuordnen
>> zu können?
>
> Hmm...Also ich würde da jetzt nicht direkt einen Sinn erkennen. Ich
> würde ähnliche Bauteile (genau gleich werden sie ja kaum sein), die von
> anderen Herstellern stammen, als separate Bauteile abspeichern. Dieses
> hat dann ja auch wieder andere Bestellnummern, andere Lieferanten,
> andere Preise. Gemeinsamkeiten unter den verschiedenen Teilen gibt es
> dann ja kaum noch (softwaretechnisch betrachtet, nicht die Bauteile an
> sich verglichen).
>
> Wenn du aber einen guten Grund hast, warum diese Funktion Sinn machen
> würde, dann immer her damit :-)

Darüber haben wir gerade nochmal überlegt, dann ist uns aufgefallen das 
es überhaupt keine Spalte für den Hersteller gibt. :D
Wahrscheinlich reicht es uns wenn wir solche Bauteile dann doppelt 
anlegen.

Was aber öfters vorkommt ist, das wir 2 Bauteile an 2 Lagerorten haben. 
Eine kleine Menge in unseren Schubladenkästen für Prototypen und eine 
größere Menge die wir evtl. unseren Bestücker für die erste Serie 
beistellen. Manchmal passen die Teile auch nicht in eine Schublade dann 
wird das auf 2 oder 3 Schubladen aufgeteilt.
Man kann dafür zwar auch mehrere Bauteile anlegen, wenn sich dann aber 
der Preis, Bestellnummer, Datenblatt ändert muss man halt daran denken 
bei allen die Änderung durchzuführen.

von Gelöscht (kami89)


Lesenswert?

M. K. schrieb:
> Darüber haben wir gerade nochmal überlegt, dann ist uns aufgefallen das
> es überhaupt keine Spalte für den Hersteller gibt. :D
> Wahrscheinlich reicht es uns wenn wir solche Bauteile dann doppelt
> anlegen.

Ja, noch gibt es keine solche Spalte, aber die kommt noch :-)

M. K. schrieb:
> Was aber öfters vorkommt ist, das wir 2 Bauteile an 2 Lagerorten haben.
> Eine kleine Menge in unseren Schubladenkästen für Prototypen und eine
> größere Menge die wir evtl. unseren Bestücker für die erste Serie
> beistellen.

Hmm ja, ich denke darüber lässt sich nachdenken. Mal schauen ob wir das 
so einbauen werden.

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
> @Udo
> Kannst du diese Änderungen auch gleich in deinen Branch übernehmen? Und
> natürlich sollte der Header immer vor der ersten Ausgabe geschrieben
> werden, was in der editpartinfo.php momentan nicht so ist. Da habe ich
> etwas "gebastelt", da es eh nur eine Übergangslösung ist (die Seite wird
> ja eh noch auf Templates umgestellt).

Ich habe die Änderungen gerade eingepflegt :-) Meine aktuelle Version 
stelle ich heute abend ins SVN, unabhängig von der Freigabe der neuen 
Lizenzinfo.

Von meiner Seite ist es auch geplant, die Popups auf Pseudo-Popups 
(DIV-Blöcke, die über die Seite gelegt werden und wie neue Fenster 
aussehen) zu ändern. Aber lasst mich erstmal die Templates erstellen und 
die Klassen zusammen mit Urban integrieren :-)

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Ich habe die Änderungen gerade eingepflegt :-) Meine aktuelle Version
> stelle ich heute abend ins SVN, unabhängig von der Freigabe der neuen
> Lizenzinfo.

Wunderbar :-) Ich habe K.J mal eine PN geschickt, auch deine 
Lizenzänderung habe ich erwähnt. Jedoch hat er bisher nicht geantwortet.

Es erstaunt mich dass dieser Bug erst jetzt gemeldet wurde, es war ein 
extrem nerviges Verhalten wenn man den IE verwendet. Es waren nicht nur 
die genannten drei Buttons betroffen, es gab auch noch andere 
Situationen in denen unnötig neue Popups geöffnet wurden. Naja 
vielleicht arbeitet einfach kein Mensch mehr mit dem IE ;-)

Udo Neist schrieb:
> Von meiner Seite ist es auch geplant, die Popups auf Pseudo-Popups
> (DIV-Blöcke, die über die Seite gelegt werden und wie neue Fenster
> aussehen) zu ändern.

Klingt gut, bin gespannt wie das aussehen wird :-)

von Udo N. (weinbauer73)


Lesenswert?

Revision 513:

- neue Lizenzinfo in den Scripten, abgesehen von externen 
Third-Party-Modulen
- diverse Templates erstellt, darunter für die Tools
- Änderung von validatePosIntNumber()
- Erstes Updatesystem für die Datenbank: soll auf einem spezifierten 
Server nach einem Update für die Datenbank suchen und installieren
- Bugfix (siehe ein paar Posts weiter oben)

Infos zum Updatesystem:

Das Updatesystem prüft auf einem spezifizierten Server, ob zur 
installierten Datenbank ein passendes Update vorliegt. Die aktuelle 
Datenbank trägt die Version 12. Das neue System verlangt eine Version, 
Subversion und Revision. Dafür legt die derzeitige update.php über das 
mitgelieferte update/part-db_update_rev12.zip zwei zusätzliche Einträge 
dbSubversion und dbRevision in der Tabelle internal an. Damit 
können wir sehr genau steuern, welche Version wir zum Update anbieten. 
Treten Fehler in unseren Versionen auf, soll ein passender Mechanismus 
ein Rollback und ein neues Update ermöglichen. Geplant ist es, die 
betreffenden Tabellen bzw. die gesamte Datenbank zuvor zu sichern.

Ob das Updatesystem auch ein Online-Update der Scripte/Templates 
ermöglicht, das kann man zum jetzigen Zeitpunkt noch nicht sagen.

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Das Updatesystem prüft auf einem spezifizierten Server, ob zur
> installierten Datenbank ein passendes Update vorliegt. Die aktuelle
> Datenbank trägt die Version 12. Das neue System verlangt eine Version,
> Subversion und Revision. Dafür legt die derzeitige update.php über das
> mitgelieferte update/part-db_update_rev12.zip zwei zusätzliche Einträge
> dbSubversion und dbRevision in der Tabelle internal an. Damit
> können wir sehr genau steuern, welche Version wir zum Update anbieten.

Das verstehe ich nicht ganz. Wir sollten kein Durcheinander mit dem 
Update der Datenbank, und dem Update des Systems (die Dateien) machen.

Die Updatefunktion der Datenbank finde ich so wie sie momentan ist, 
eigentlich sehr gut. Es ist total unkompliziert und vorallem aber prüft 
sie quasi immer, ob das aktuell installiere System (die Dateien) eine 
neuere Datenbankversion braucht als die aktuell installierte. Es ist so 
quasi ein sehr selbstständiges und unkompliziertes System. Und 
ausserdem, was ich auch noch sehr wichtig finde: Wenn jemand die 
Updatefunktion des Systems nicht nutzen will oder kann, aber trotzdem 
eine aktuelle Version haben will, der kann weiterhin problemlos die 
neuen Dateien einfach von Hand auf den Server laden. Ein eventuell 
notwendiges Datenbankupdate wird dann automatisch durchgeführt wenn die 
db_update.php mit einer neueren Version überschrieben wurde.

Daher denke ich wir sollten es nicht unnötig kompliziert machen. Also 
das Datenbankupdate und das Systemupdate sollen unabhängig voneinander 
funktionieren, und das tun sie wenn wir das Datenbankupdate genau so 
lassen wie es jetzt ist.

Beim Systemupdate dachte ich, dass ein Updatearchiv einfach alle neuen 
(geänderten) Dateien enthalten soll, auch Footprint-Bilder usw. Durch 
ein einfaches Entpacken werden dann alle Dateien überschrieben. Und 
damit man auch Dateien löschen, verschieben usw. kann, wäre vielleicht 
ein im Archiv enthaltenes Shell-Script eine einfache, aber sehr flexible 
Lösung. Dieses Skript soll sich vielleicht nach einem erfolgreichen 
Ausführen gleich automatisch Löschen, dann bräuchten wir nichtmal zu 
überprüfen ob das Skript bereits ausgeführt wurde, oder ob es noch 
ausgeführt werden muss.

EDIT: Oder man benutzt genau das gleiche Prinzip wie beim 
Datenbankupdate. Das Skript enthält ein switch-case, mit einem case pro 
Systemversion. Das wäre meiner Meinung nach eine gut geeignete Lösung.

> Treten Fehler in unseren Versionen auf, soll ein passender Mechanismus
> ein Rollback und ein neues Update ermöglichen. Geplant ist es, die
> betreffenden Tabellen bzw. die gesamte Datenbank zuvor zu sichern.

Für die Datenbank soll es dazu in meiner Datenbankklasse ja die 
Funktionen backup() und restore() geben. Fürs System müsste man wohl 
zuerst alle Dateien sichern (zippen?), um sie auch wiederherstellen zu 
können. Zumindest die Systemdateien (ohne Bilder, das wäre wohl zu viel 
des Guten).

Ach übrigens, K.J. hat auf meine PN geantwortet und schrieb dass die 
Lizenzänderung so in Ordnung sei.

von Gelöscht (kami89)


Lesenswert?

Hmm nach einigem Nachdenken gefällt mir mein Vorschlag zwar auch nicht 
mehr so gut, also vergiss diesen Teil meines letzten Beitrages einfach 
wieder^^

Ich bin noch ein bisschen am überlegen wie man es besser machen 
könnte...

von Udo N. (weinbauer73)


Lesenswert?

Das Prinzip neue Softwareversion = neue Datenbankversion bleibt ja 
weiterhin bestehen. Dieser Mechanismus soll dafür sorgen, das zur 
jeweiligen Software auch immer die richtige Datenbankversion installiert 
ist. Wenn es ein Fehler in der Datenbank gibt, können wir den Bugfix auf 
diese Weise zur Verfügung stellen. Der jetzige Ansatz bedingt ja, das 
wir die Änderungen immer in der db_update.php einbauen. Das wird aber 
nicht in jedem Fall auch funktionieren. Nicht jeder hat Zugriff auf die 
Dateien von Part-DB und muss daher eine passende Updatefunktion für 
Datenbank und System besitzen.

Switch oder If-Sequenzen für jede einzelne Datenbankversion? Das wird 
irgendwann unwartbar werden.

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Der jetzige Ansatz bedingt ja, das
> wir die Änderungen immer in der db_update.php einbauen. Das wird aber
> nicht in jedem Fall auch funktionieren. Nicht jeder hat Zugriff auf die
> Dateien von Part-DB und muss daher eine passende Updatefunktion für
> Datenbank und System besitzen.

Warum hat nicht jeder Zugriff auf die Dateien von Part-DB? Direkten 
Dateizugriff hat nicht jeder, das ist klar. Aber ein Update wird ja 
nicht vom Benutzer durchgeführt, sondern vom Webserver (auf Linux 
standardmässig ja die Gruppe "www-data"). Der Webserver sollte ja in 
jedem Fall Zugriff auf die Dateien haben. Hat er kein Schreibrecht im 
ganzen Part-DB Ordner, kann man ein automatisches Update natürlich 
vergessen, da keine Dateien aktualisiert werden können.

Und per separaten Updates nur die Datenbank zu aktualisieren halte ich 
für unnötig. Entweder gibts das ganze Update-Programm oder nix :-)

Aber eigentlich sollte es ja kein Problem darstellen, dass man dem 
Benutzer "www-data" Schreibrechte für den ganzen Ordner von Part-DB gibt 
oder?

Udo Neist schrieb:
> Switch oder If-Sequenzen für jede einzelne Datenbankversion? Das wird
> irgendwann unwartbar werden.

Ja das denke ich eben momentan auch gerade. Es wäre schon nicht 
schlecht, wenn jedes Update immer nur diejenigen Updateschritte enthält, 
die für dieses Update notwendig sind. Das Problem ist dann allerdings, 
dass das System wirklich nur noch Version für Version aktualisiert 
werden darf. Wenn man immer die Online-Updates benutzt ist das kein 
Problem. Will man aber nur manuelle Updates machen, und das nur einmal 
im Jahr, dann müsste man ja alle in dieser Zeit veröffentlichten 
Update-Pakete separat herunterladen, nacheinander auf den Server 
kopieren und jedesmal nach dem Kopieren die Seite im Browser 
aktualisieren damit die Updateschritte durchgeführt werden ;-)

Oder hast du für dieses Problem auch eine Lösung? :-)

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
> Ja das denke ich eben momentan auch gerade. Es wäre schon nicht
> schlecht, wenn jedes Update immer nur diejenigen Updateschritte enthält,
> die für dieses Update notwendig sind. Das Problem ist dann allerdings,
> dass das System wirklich nur noch Version für Version aktualisiert
> werden darf. Wenn man immer die Online-Updates benutzt ist das kein
> Problem. Will man aber nur manuelle Updates machen, und das nur einmal
> im Jahr, dann müsste man ja alle in dieser Zeit veröffentlichten
> Update-Pakete separat herunterladen, nacheinander auf den Server
> kopieren und jedesmal nach dem Kopieren die Seite im Browser
> aktualisieren damit die Updateschritte durchgeführt werden ;-)
>
> Oder hast du für dieses Problem auch eine Lösung? :-)

Wenn man das ganze mal weiter spinnt, wäre folgendes wohl sinvoller: 
Statt einem Update gäbe es Sammelupdates, also ein Paket von x 
SQL-Scripte. Die PHP-Datei würde dann eine Zuordnung SQL-Script zur 
Datenbank- und Part-DB-Version beinhalten. Wir würden also zur 
Datenbankversion 12 ein Paket anbieten, zur 13 ein anderes, zur 14 
wieder ein anderes. Die Updatefunktion durchsucht das Array in der 
PHP-Datei nach gültigen Updates für sich und spielt die ein. Im Prinzip 
könnten wir so auch die Installation der Datenbank durchführen, 
sozusagen als Update Nummer 0 ;-)

So in etwa stelle ich mir das vor:
1
$up2date[12]['sqlscript'][]=12-0-0.sql;
2
$up2date[12]['required'][]=511;
3
$up2date[12]['sqlscript'][]=12-0-1.sql;
4
$up2date[12]['required'][]=553;
5
$up2date[12]['sqlscript'][]=12-0-2.sql;
6
$up2date[12]['required'][]=599;
7
$up2date[12]['sqlscript'][]=12-0-3.sql;
8
$up2date[12]['required'][]=615;

Das Update der Datenbank selbst wäre ja eher ein Sonderfall. Ich kann 
mir vorstellen, dass wir das in Richtung Update von Logos, Footprints 
u.ä. weiter"spinnen". Es wären also nicht nur SQL-Scripte in dem Archiv, 
sondern auch Dateien, die ins System kopiert werden. Wenn man so will, 
wäre das das Systemupdate, was wir wollen :-)

von K. J. (Gast)


Lesenswert?

Hi, wollte mich mal kurz melden um einiges zu erwähnen:

- Das mit der Lizenz ist ok find auch das jeder der was dran macht sich 
ja auch da unter verewigen kann in etwa wie folgt wen nur ich da stehe 
ist das irgendwie blöd:

"- Nick  Art der Änderungen  Datum"

Ansonsten die Demo DB ist erstmal bis Mo. nicht funktionsfähig, leider 
gab es eine Sicherheitslücke im Plesk des Servers, also werde ich den am 
WE neu aufsetzen müssen, diesmal ohne Admin Interface ;-)

So ich glaub das war es erstmal, ansonsten per Mail wen was wichtiges 
ist (die gmail. addy)

von Udo N. (weinbauer73)


Lesenswert?

K. J. schrieb:
> Hi, wollte mich mal kurz melden um einiges zu erwähnen:
>
> - Das mit der Lizenz ist ok find auch das jeder der was dran macht sich
> ja auch da unter verewigen kann in etwa wie folgt wen nur ich da stehe
> ist das irgendwie blöd:
>
> "- Nick  Art der Änderungen  Datum"

Gute Idee :-) Ich denke, das sollten wir im offiziellen 
Entwicklungszweig einführen und, wenn die beiden Zweige von Urban und 
mir zusammengeführt sind, entsprechend neu starten. Ist ja fast ein 
kompletter Rewrite des Codes.

Ich führe in meinem Zweig ein kurzes Logfile, welches die wichtigsten 
Änderungen zusammenfasst.

> Ansonsten die Demo DB ist erstmal bis Mo. nicht funktionsfähig, leider
> gab es eine Sicherheitslücke im Plesk des Servers, also werde ich den am
> WE neu aufsetzen müssen, diesmal ohne Admin Interface ;-)

Aus diesem Grund hab ich auf jegliche Adminoberfläche verzichtet und 
nutze nur wenige Webtools. Alles andere geht über die Konsole :-)

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Das Update der Datenbank selbst wäre ja eher ein Sonderfall. Ich kann
> mir vorstellen, dass wir das in Richtung Update von Logos, Footprints
> u.ä. weiter"spinnen". Es wären also nicht nur SQL-Scripte in dem Archiv,
> sondern auch Dateien, die ins System kopiert werden. Wenn man so will,
> wäre das das Systemupdate, was wir wollen :-)

Jo, ein Updatepaket soll alles mögliche beinhalten: Die neuen 
PHP-Dateien, Footprints, IC-Logos, Dokumentation, Updateanweisungen für 
exec() und Datenbankupdate.

Wenn wir jetzt die Updatepakete so minimal bauen, dass damit die Version 
immer nur um eine erhöht wird, wäre das schlussendlich für das 
automatische Update wohl das Beste, da die Pakete dadurch immer nur so 
gross sind wie nötig. Und ausserdem ist es zuverlässiger, da nicht die 
unmöglichsten Versionssprünge überwunden werden müssen, sondern wirklich 
immer nur die jeweils nächstneuere. Also ich meine jetzt dateitechnisch 
ist es so sicherer, weil keine Dateivsersionen übersprungen werden 
können.

Für die Manuell-Updater müssten wir dann halt ab und zu mal komplette 
Updatearchive anbieten, mit denen dann auch grössere Versionssprünge auf 
einmal gemacht werden können. Ist halt leider schon wieder ein 
zusätzlicher Aufwand für uns Entwickler, aber man muss ja nicht bei 
jedem neuen Einzelupdate auch ein Komplettupdate anbieten.

Man könnte vielleicht ja auch der Versionsbezeichnung eine Bedeutung 
zuweisen. also wenn die Versionsbezeichnung wie die 0.2.2 aus drei 
Zahlen besteht, ist die erste Zahl die Hauptversion, die zweite Zahl 
entspricht den Komplettupdatepaketen und die dritte Zahl den 
Einzelupdates. Ist aber nur mal ein Vorschlag...

Für die Updates könnte man vielleicht einen neuen Ordner anlegen, z.B. 
"updates/". Die Dateien darin sind genau nach der jeweiligen 
Versionsnummer benannt, z.B. "0.2.3.inc" (oder php, wie auch immer...). 
In den Einzelupdatepaketen ist jeweils nur eine solche Datei vorhanden, 
in den Komplettupdatepaketen ist für jede Version, die mit dem Archiv 
überwunden werden kann, eine Datei vorhanden. Bei den Komplettupdates 
kann es ja auch vorkommen, dass eine gewisse Version Voraussetzung ist, 
um problemlos updaten zu können. Also wenn man v0.2.2 installiert hat, 
und dann das Komplettpaket v0.4.0 installieren will, das aber unbedingt 
v0.3.3 voraussetzt, muss das System merken dass die Update-Dateien für 
die Versionen 0.2.2 bis v0.3.3 gar nicht vorhanden sind.

In den jeweiligen Updatedateien sind dann vielleicht folgende 
Informationen enthalten:
- Version, die vorausgesetzt wird (normalerweise immer eine Version 
tiefer als die von der Datei, aber für Sprünge von z.B. 0.2.9 auf 0.3.0 
ist diese Information wichtig)
- Version, die installiert wird (könnte man ev. auch weglassen, da der 
Dateinamen diese Information ja schon enthält)
- Kurze Zusammenfassung des Updates (Changelog, der dem Benutzer auch 
gezeigt wird damit man weiss was neu ist)
- Eine Updatefunktion, der eine Referenz auf das PDO meiner 
Datenbankklasse übergeben wird (und ev. noch weitere Parameter)
- In dieser Funktion sind dann direkt die kompletten Datenbankupdates 
enthalten, also nicht nur die SQL-Querys. Dies hat den Vorteil, dass man 
einfach flexibler ist. Man kann auch mal ein kompliziertes 
Datenbankupdate durchführen, bei dem eine PHP Schleife notwendig ist 
oder sowas, da man über das PDO den direkten Vollzugriff auf die 
Datenbank hat.
- In der Funktion können auch per exec() noch spezielle Sachen gemacht 
werden, wie z.B. nicht mehr benötigte Dateien löschen, Dateien 
verschieben usw. Da ist man dann eigentlich völlig frei was man hier 
noch machen will.

So, und jetzt lese ich das gleich nochmal ein paarmal durch und finde 
bestimmt wieder einige Aspekte die ich noch vergessen habe :-)

K. J. schrieb:
> - Das mit der Lizenz ist ok find auch das jeder der was dran macht sich
> ja auch da unter verewigen kann in etwa wie folgt wen nur ich da stehe
> ist das irgendwie blöd:
>
> "- Nick  Art der Änderungen  Datum"

Jo, das finde ich gut. So kann man nämlich sehr schnell nachvollziehen 
wer welche Änderung gemacht hat, das ist ab und zu mal nützlich. Wenn 
ich einen Vorschlag machen darf, würde ich aber das Datum zu vorderst 
schreiben, so dass es dann eine schöne, nach Datum sortierte Liste gibt 
:-)

von kirk d. (kirkdis)


Lesenswert?

die updatefunktion ist schon schön allerdings muss ich gestehen dass 
meine partdb aktuell ohne internetleitung auskommt und das möchte ich 
auch ungern ändern schon allein wegen der datensicherheit. updatepakete 
wären toll. beim ersten start kann dann das script prüfen ob die 
datenbank auf dem neuesten stand ist.

Was mich noch freuen würde wenn man auch andere einheiten benutzen kann 
als nur stückzahlen. aktuell ist es so dass wir im lager auch kabel 
verwalten da geht et z.b. um meter, oder habt ihr schon eine lösung 
bezüglich teile die nicht stückzahlabhängig geführt werden? die 
problematik die ich aktuell habe sind dann so sachen wie aderendhülsen 
die in massen im lager liegen. wir behelfen uns momentan damit dass wir 
einfach 999999 als stückzahl eingeben, allerdings schlägt sich das in 
der statistik nieder. im vergleich mit anderen "professionellen" 
lagerverwaltungssystemen ist ich die partdb um längen voraus. gibts 
schon eine lösung die footprints auszublenden? ich weiss ihr seid voll 
im wuseln mit der updateroutine. falls ihr mal ein aktuelles package zum 
testen habt das ohne grobe bugs läuft wäre es schön wenn ihr dass mal 
irgendwo online stellen könnt. ich würde das dann mal versuchen bei uns 
im alltag einzusetzen, da findet man am ehesten fehler und bugs..

gruß

von Gelöscht (kami89)


Angehängte Dateien:

Lesenswert?

kirk disen schrieb:
> die updatefunktion ist schon schön allerdings muss ich gestehen dass
> meine partdb aktuell ohne internetleitung auskommt und das möchte ich
> auch ungern ändern schon allein wegen der datensicherheit. updatepakete
> wären toll. beim ersten start kann dann das script prüfen ob die
> datenbank auf dem neuesten stand ist.

Es wird natürlich weiterhin möglich sein, die Updates manuell 
einzuspielen. Man lädt sich dann halt die Updatepakete selber im 
Internet runder, entpackt sie und kopiert die neuen Dateien auf den 
Webserver. Das Update der Datenbank führt dann das System selber durch.

kirk disen schrieb:
> Was mich noch freuen würde wenn man auch andere einheiten benutzen kann
> als nur stückzahlen. aktuell ist es so dass wir im lager auch kabel
> verwalten da geht et z.b. um meter, oder habt ihr schon eine lösung
> bezüglich teile die nicht stückzahlabhängig geführt werden?

Daran habe ich noch gar nie gedacht, ist aber natürlich eine sehr gute 
Idee. Wird aber wohl auch noch ein Weilchen dauern bis wir das eingebaut 
haben. Bis dahin musst du dir halt z.B. bei Kabel einfach vorstellen es 
wäre nicht die Stückzahl, sondern die Anzahl Meter ;-)

kirk disen schrieb:
> im vergleich mit anderen "professionellen"
> lagerverwaltungssystemen ist ich die partdb um längen voraus.

Ja das ist natürlich klar, hier arbeiten keine 50 gut bezahlte Leute je 
8 Stunden am Tag an dem Programm :-)
Und die Versionsnummer 0.2.2 sollte auch darauf hinweise, dass es noch 
eine sehr frühe Version ist, also noch nicht wahnsinnig fortgeschritten.

kirk disen schrieb:
> gibts
> schon eine lösung die footprints auszublenden? ich weiss ihr seid voll
> im wuseln mit der updateroutine. falls ihr mal ein aktuelles package zum
> testen habt das ohne grobe bugs läuft wäre es schön wenn ihr dass mal
> irgendwo online stellen könnt. ich würde das dann mal versuchen bei uns
> im alltag einzusetzen, da findet man am ehesten fehler und bugs..

Also ich habe dir zuliebe mal rasch eine Funktion eingebaut, damit man 
die Footprints deaktivieren kann. Es ist aber keine 100% saubere Arbeit 
sondern eher eine Übergangslösung bis es dann in der nächsten Version 
richtig eingebaut wird.
Ich habe mal die aktuellste SVN-Version mit diesem neuen Feature hier 
angehängt (dann musst du dich nicht auch noch mit dem SVN 
auseinandersetzten :-)
Einfach wieder die config.php_template als config.php kopieren und die 
Einstellungen setzen. Die neue Variable $disable_footprints müsstest du 
dann auf "true" setzen.

von Udo N. (weinbauer73)


Lesenswert?

kirk disen schrieb:
> die updatefunktion ist schon schön allerdings muss ich gestehen dass
> meine partdb aktuell ohne internetleitung auskommt und das möchte ich
> auch ungern ändern schon allein wegen der datensicherheit. updatepakete
> wären toll. beim ersten start kann dann das script prüfen ob die
> datenbank auf dem neuesten stand ist.

An sowas hab ich schon gedacht. Es wird zwei Optionen geben: On- oder 
Offlineupdate (aus einem lokalen Verzeichnis).

> Was mich noch freuen würde wenn man auch andere einheiten benutzen kann
> als nur stückzahlen. aktuell ist es so dass wir im lager auch kabel
> verwalten da geht et z.b. um meter, oder habt ihr schon eine lösung
> bezüglich teile die nicht stückzahlabhängig geführt werden?

Könnte man in der Kategorie lösen. Dort würde ich quasi die verwendete 
Verpackung hinterlegen, z.B. Stk, VE, Meter, Trommel oder einfach nur 
ein Schalter für "Vorhanden/Bestellt/Nicht verfügbar". Letzeres wäre für 
Massenartikel wie die Aderendhülsen.

Ich habe mir zudem überlegt, ob Part-DB nicht auch Platinen oder Gehäuse 
aufnehmen sollte. Damit wären dann die Baugruppen soweit komplett.

> gibts schon eine lösung die footprints auszublenden? ich weiss ihr seid
> voll im wuseln mit der updateroutine. falls ihr mal ein aktuelles
> package zum testen habt das ohne grobe bugs läuft wäre es schön wenn ihr
> dass mal irgendwo online stellen könnt. ich würde das dann mal versuchen
> bei uns im alltag einzusetzen, da findet man am ehesten fehler und bugs..

Wenn ich die Tage Zeit finde, kann ich mal schauen, ob ich eine schnelle 
Lösung dafür finde. Quick&Dirty wäre das Ein- und Ausschalten der 
Footprints per Konfiguration. Besser wäre es, wenn wir die Grafiken 
anders präsentieren. Mir schwebt vor, die Grafiken entweder 
user-/gruppengebunden bzw. in der Kategorie schaltbar zu machen oder per 
Tooltip bzw. Popup anzuzeigen. Mal schauen :-)

von Christian R. (holle)


Lesenswert?

Zu den Updates:
Kann man es nicht so machen, dass man Zum einen immer aktuelle Pakete 
bereit stellt und zu anderen (z.B. für diejenigen die eine langsame 
Internetverbindung haben) eine Update-Funktion.
Die Update-Funktion könnte ich mir so vorstellen dass zuerst einmal die 
aktuelle Version ausgelesen wird (z.B. 2.0.1). Das Update soll nun auf 
2.0.5 updaten, also erst einmal auf 2.0.2 , dann auch 2.0.3 usw.
Wird die Update-Funktion zu groß, dann setzt man ab da die Version x.x.x 
voraus, welche man dann halt komplett herunterladen muss.
So wären die Updatefunktionen überschaubar und man müsste nicht immer 
gleich "alles" herunterladen.
Auch denkbar wäre eine Funktion, die immer wenn man Part-DB startet auf 
Updates prüft und wenn verfügbar, dann eine Meldung erscheint.
In dem Fall könnte es dann so aussehen, dass man in einem Webordner alle 
Updates ablegt. Part-DB schaut nun in den Webordner (bei jedem start) 
und listet die Dateien auf, welche mit einer bestimmten Ziffernfolge 
beginnen (z.B. PDBU020005 --> Part DB Update 2.0.5) und vergleicht das 
mit der eigenen Version. Ist irgendeine Datei im Webordner größer als 
die vorhandene, dann wird stückweise geupdatet. Das könnte dann so 
aussehen:

Vorhandene Version = 2.0.0 , neuste Version im Webordner 2.0.5   ...
Da ich mich mit PHP nicht auskenne schreibe ich es einfach mal grob auf:

1. Dateien auslesen
2. PDBU aus den Dateinamen filtern und die Dateiendung entfernen, so 
dass nur noch die Zahl übrig bleibt, davon die höchste Nummer merken 
(neustesUpdate)
3. Hat nichts mit PHP zu tun, soll nur grob erklären wie ich es meine:

Version := aktuelleVersion
While (neustesUpdate > Version) (Schleife bis alle Dateinamen überprüft 
sind)
{
  update := Version + 1
  if (exist Update) {  ;püfen ob dieses Update existiert
      Gosub Updateroutine Update  ;Updateroutine mit Update als Param.
  }
  Version := neueVersion
}

So könnte man das vollautomatisch machen (zumindest für diejenigen die 
einen Internetzugang haben).
Da ich mich mit php leider nicht auskenne weiß ich natürlich nicht ob 
das so einfach realisierbar ist wie mit anderen Programmiersprachen, 
aber es soll ja auch nur ein Vorschlag sein.

von Gelöscht (kami89)


Lesenswert?

Christian R. schrieb:
> Zu den Updates:
> Kann man es nicht so machen, dass man Zum einen immer aktuelle Pakete
> bereit stellt und zu anderen (z.B. für diejenigen die eine langsame
> Internetverbindung haben) eine Update-Funktion.

Und warum soll eine Update-Funktion eine weniger schnelle 
Internetverbindung benötigen als wenn man es von Hand herunterlädt?
Ich verstehe nicht richtig was du meinst...

Aber keine Angst, es wird sicher eine gescheite Lösung rauskommen ;-)
Es wird ganz sicher die Möglichkeit geben, dass man zwischen manuellem 
und automatischen Update wählen kann.
Diejenigen, deren Webserver die technischen Voraussetzungen für ein 
automatisches Update haben, können direkt aus Part-DB heraus ein Update 
durchführen lassen. Dabei soll das System natürlich immer selber 
überprüfen ob eine neurere Version verfügbar ist.
Und für die, deren Webserver aus technischen oder sonst irgendwelchen 
Gründen kein Update durchführen können oder wollen, die können die 
Updatepakete einfach von Hand im Internet runterladen und auf den 
Webserver kopieren.

Udo Neist schrieb:
>> gibts schon eine lösung die footprints auszublenden? ich weiss ihr seid
>> voll im wuseln mit der updateroutine. falls ihr mal ein aktuelles
>> package zum testen habt das ohne grobe bugs läuft wäre es schön wenn ihr
>> dass mal irgendwo online stellen könnt. ich würde das dann mal versuchen
>> bei uns im alltag einzusetzen, da findet man am ehesten fehler und bugs..
>
> Wenn ich die Tage Zeit finde, kann ich mal schauen, ob ich eine schnelle
> Lösung dafür finde. Quick&Dirty wäre das Ein- und Ausschalten der
> Footprints per Konfiguration.

Genau das habe ich ja schon gemacht, guckst du SVN Revision 514 ;-)

von Udo N. (weinbauer73)


Lesenswert?

Das ist entspricht in etwa meiner Vorstellung:

- ein Listbefehl auf einen FTP oder einem lokalen Verzeichnis loslassen 
und alle Updatepakete ab eigener Version in ein Array aufnehmen
- Update in der Reihenfolge bis zum letzten Version innerhalb der 
Majorversion vornehmen

Die Beschreibungsdatei jedes Updatearchivs sagt, was wohin kopiert 
werden soll und welche SQL-Scripte in welcher Reihenfolge ausgeführt 
werden müssen.

Könnte wie folgt aussehen:
1
$up2date['514']['copy'][] = array('from' => DATEI, 'to' => DATEI);
2
$up2date['514']['copy'][] = array('from' => DATEI, 'to' => DATEI);
3
$up2date['514']['copy'][] = array('from' => DATEI, 'to' => DATEI);
4
$up2date['514']['delete'][] = DATEI;
5
$up2date['514']['sql'][] = SQLDATEI;
6
$up2date['514']['sql'][] = SQLDATEI;
7
$up2date['514']['cleanup'][] = true;
8
$up2date['514']['stable']=true;
9
$up2date['514']['version']='515';
10
$up2date['515']['copy'][] = array('from' => DATEI, 'to' => DATEI);
11
$up2date['515']['copy'][] = array('from' => DATEI, 'to' => DATEI);
12
$up2date['515']['sql'][] = SQLDATEI;
13
$up2date['515']['cleanup'][] = false;
14
$up2date['515']['stable']=false;
15
$up2date['515']['version']='516';

Die erste Ebene im Array $up2date enthält die Versionsnummer, für die 
die folgenden Anweisungen gelten:

- copy : Welche Datei wohin kopiert wird, wobei das Ziel als Backup 
gesichert wird
- delete : Welche Datei gelöscht wird (darf nur nach copy ausgeführt 
werden)
- sql : SQL-Scripte
- cleanup : Macht eine Bereinigung der automatisch angelegten 
Backupdateien (true) oder nicht (false). Bei false wäre sogar ein 
Rollback der Scripte möglich.
- version : Ändert die Versionsnummer auf die angegebene
- stable : Damit können wir bestimmte Versionen als stabil 
kennzeichnen und dem User damit sagen, das dieses Update "gefahrlos" 
ist. Wer bis auf das letzte stabile System updaten will, der durchläuft 
dann aber auch alle unstable Versionen.

Weitere Befehle wären z.B.:
- mkdir
- rmdir
- chmod

Mit einem solchen System könnte man sogar Sammelupdates für Systeme 
anbieten, die keine Internetverbindung haben oder nur selten upgedatet 
werden soll.

Programmtechnisch wäre das also ein Interpreter für eine Art 
Scriptsprache. Wenn jetzt jemand sagt, db_update.php beinhaltet doch 
sowas schon, dem kann ich sagen jein. Hier werden ja nur SQL-Befehle 
in der Reihenfolge wie im Array gespeichert ausgeführt. Die 
Versionsabfrage verläuft statisch per switch(). Vorrausetzung ist 
allerdings, das die Datenbank nicht mehr eine eigene Versionsnummer 
besitzt, sondern die (SVN-)Version von Part-DB nutzt. Für uns Entwickler 
bedeutet es, dass wir die zur Vorversion geänderte Dateien in diese 
Liste eintragen müssen. svn diff nimmt uns zum Glück etwas Arbeit ab 
und gibt die Änderungen zum Repository aus. Dabei benötigen wir ja nur 
die Dateinamen selbst:
1
svn diff | grep "Index: " | cut -d" " -f2

Folgender Code könnte dann das Array copy füllen:
1
#!/bin/sh
2
FILES=`svn diff | grep "Index: " | cut -d" " -f2`
3
4
for FILE in $FILES; do
5
        echo -e "\$up2date[513]['copy'][]=array('from'=>'up513/$FILE','to'=>'$FILE');"
6
done

Meine Arbeitskopie spuckt dann folgendes aus:
1
$up2date[513]['copy'][]=array('from'=>'up513/lib.php','to'=>'lib.php');
2
$up2date[513]['copy'][]=array('from'=>'up513/newpart.php','to'=>'newpart.php');
3
$up2date[513]['copy'][]=array('from'=>'up513/editpartinfo.php','to'=>'editpartinfo.php');
4
$up2date[513]['copy'][]=array('from'=>'up513/config.php','to'=>'config.php');
5
$up2date[513]['copy'][]=array('from'=>'up513/db_update.php','to'=>'db_update.php');

Ich kann mich ja mal an einen solchen Interpreter versuchen :-)

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
>> Wenn ich die Tage Zeit finde, kann ich mal schauen, ob ich eine schnelle
>> Lösung dafür finde. Quick&Dirty wäre das Ein- und Ausschalten der
>> Footprints per Konfiguration.
>
> Genau das habe ich ja schon gemacht, guckst du SVN Revision 514 ;-)

Eine Baustelle weniger ;-)

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> - ein Listbefehl auf einen FTP oder einem lokalen Verzeichnis loslassen
> und alle Updatepakete ab eigener Version in ein Array aufnehmen
> - Update in der Reihenfolge bis zum letzten Version innerhalb der
> Majorversion vornehmen
>
> Die Beschreibungsdatei jedes Updatearchivs sagt, was wohin kopiert
> werden soll und welche SQL-Scripte in welcher Reihenfolge ausgeführt
> werden müssen.
>
> Könnte wie folgt aussehen:

Ich finde so eine Lösung aber irgendwie ziemlich aufwändig und 
unflexibel.
Ausserdem, wozu sollen die neuen Dateien noch manuell herumkopiert 
werden? Das kann man doch direkt mit dem Entpacken eines Updatesarchiv 
erledigen, in nur einem einzigen Befehl.

Nehmen wir mal an, ein Update v0.2.3 beihaltet eine neue lib.php, ein 
neues Dioden-Footprintbild, und die Informationen zum Update.
Ein Updatepaket könnte dann in etwa so aussehen:
1
part-db_v0.2.3.tar.gz:
2
    - update/0.2.3/updateinfo.inc
3
    - update/0.2.3/update.tar.gz:
4
        - lib.php
5
        - tools/footprints/Aktiv/Dioden/SMD/neuediode.png
Die neuen Dateien sind also nochmal separat in einem Archiv 
zusammengefasst.

In einem ersten Schritt würde Part-DB alle verfügbaren Updates nach 
update/ herunterladen. Wenn man die automatischen Updates nicht 
aktiviert hat, legt man die Pakete einfach von Hand in diesen Ordner, 
mehr muss man nicht machen.

Das System merkt jetzt, dass im Ordner update/ Archive für neuere 
Versionen als die momentan installierte verfügbar sind. Einfach anhand 
der Dateinamen der Archive, mehr brauchts nicht.
Sind neue Dateien vorhanden, beginnt das System sich zu aktualisieren. 
Als erstes werden alle neuen Archive einfach mal entpackt. Dann entsteht 
für jedes Update ein Ordner wie z.B. update/0.2.3/, in dem eine 
Infodatei und das Update an sich (als Archiv) liegen.

Jetzt wird die Datei updates/x.x.x/updateinfo.inc ausgelesen. Darin 
stehen:
- Version des Updates
- Vorausgesetzte Version
- Status (stable, unstable, ...)
- Checksumme des Archives "update.tar.gz", um auf Beschädigung zu prüfen
- Changelog, der dem Benutzer schon vor dem Update gezeigt werden kann
- Eine Funktion, die noch alle zusätzlich notwendigen Schritte enthält

Und genau diese Funktion ist das Geniale: Darin kann man einfach ALLES 
machen, was man möchte. Man hat nicht nur ein Array zur Verfügung, das 
man mit vordefinierten Befehlen befüllen kann. Nein, man hat vollen 
Zugriff auf das PDO Objekt, kann also auch Querys durchführen, Schleifen 
einbauen usw. Und für Systemoperationen kann man direkt den exec() 
Befehl benutzen.

Der nächste Schritt ist nun stinkeinfach, erledigt aber schon fast 
alles: Einfach nur das Archiv update/x.x.x/update.tar.gz der 
nächstneueren Version ins Hauptverzeichnis entpacken. Die Dateien sind 
jetzt schon alle auf dem neusten Stand, mit nur einem einzigen Befehl.

Danach wird dann noch die oben beschriebene Funktion aufgerufen, die ein 
Datenbankupdate, exec() Anweisungen oder was auch immer enthalten kann.

Wäre das nicht ein sehr einfaches, aber extrem flexibles und dadurch 
mächtiges Updatesystem?

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
> Ich finde so eine Lösung aber irgendwie ziemlich aufwändig und
> unflexibel.
> Ausserdem, wozu sollen die neuen Dateien noch manuell herumkopiert
> werden? Das kann man doch direkt mit dem Entpacken eines Updatesarchiv
> erledigen, in nur einem einzigen Befehl.
>
> Nehmen wir mal an, ein Update v0.2.3 beihaltet eine neue lib.php, ein
> neues Dioden-Footprintbild, und die Informationen zum Update.
> Ein Updatepaket könnte dann in etwa so aussehen:part-db_v0.2.3.tar.gz:
>     - update/0.2.3/updateinfo.inc
>     - update/0.2.3/update.tar.gz:
>         - lib.php
>         - tools/footprints/Aktiv/Dioden/SMD/neuediode.png
> Die neuen Dateien sind also nochmal separat in einem Archiv
> zusammengefasst.

Funktioniert aber nur dort, wo auch tar zur Verfügung steht. Windows 
kennt den Befehl von Haus aus nicht. GNU tar reagiert anders als die 
Versionen auf anderen Unices. ZIP (über zlib) müsste von PHP auf allen 
Plattformen laufen, sofern das Modul existiert. Statt dem copy-Befehl im 
Array ginge natürlich auch ein unpack :-) Mir wäre es lieber, wenn wir 
die PHP-Funktionen anstelle der Shell nehmen, denn einige Provider 
verbieten exec() und ähnliches.

> In einem ersten Schritt würde Part-DB alle verfügbaren Updates nach
> update/ herunterladen. Wenn man die automatischen Updates nicht
> aktiviert hat, legt man die Pakete einfach von Hand in diesen Ordner,
> mehr muss man nicht machen.

Geschenkt ;-) Wichtig ist, das nur alle Updates für die aktuelle Version 
und höher geladen werden. Alle vorherigen Updates wären überflüssig beim 
Download. Deshalb ja der List-Befehl auf einen FTP angewendet und 
durchforsten.

> Das System merkt jetzt, dass im Ordner update/ Archive für neuere
> Versionen als die momentan installierte verfügbar sind. Einfach anhand
> der Dateinamen der Archive, mehr brauchts nicht.
> Sind neue Dateien vorhanden, beginnt das System sich zu aktualisieren.
> Als erstes werden alle neuen Archive einfach mal entpackt. Dann entsteht
> für jedes Update ein Ordner wie z.B. update/0.2.3/, in dem eine
> Infodatei und das Update an sich (als Archiv) liegen.
>
> Jetzt wird die Datei updates/x.x.x/updateinfo.inc ausgelesen. Darin
> stehen:
> - Version des Updates
> - Vorausgesetzte Version
> - Status (stable, unstable, ...)
> - Changelog, der dem Benutzer schon vor dem Update gezeigt werden kann
> - Eine Funktion, die noch alle zusätzlich notwendigen Schritte enthält
>
> Und genau diese Funktion ist das Geniale: Darin kann man einfach ALLES
> machen, was man möchte. Man hat nicht nur ein Array zur Verfügung, das
> man mit vordefinierten Befehlen befüllen kann. Nein, man hat vollen
> Zugriff auf das PDO Objekt, kann also auch Querys durchführen, Schleifen
> einbauen usw. Und für Systemoperationen kann man direkt den exec()
> Befehl benutzen.

Letzteres geht nicht auf allen Servern! myparts.info lässt den 
Shell-Zugriff nicht zu. Und ich würde auf irgendwelche Scripte im 
Updatesystem verzichten oder willst du eine Hintertür erlauben? Ein paar 
Zeilen eingeschmuggelt und schon hat jemand anderes eine komplette 
Datenbank. cURL braucht nur ein paar Zeilen Code. Und es steht einem 
Angreifer zudem alle Möglichkeiten offen, die im Kontext des Webservers 
möglich sind.

> Der nächste Schritt ist nun stinkeinfach, erledigt aber schon fast
> alles: Einfach nur das Archiv update/x.x.x/update.tar.gz der
> nächstneueren Version ins Hauptverzeichnis entpacken. Die Dateien sind
> jetzt schon alle auf dem neusten Stand, mit nur einem einzigen Befehl.
>
> Danach wird dann noch die oben beschriebene Funktion aufgerufen, die ein
> Datenbankupdate, exec() Anweisungen oder was auch immer enthalten kann.
>
> Wäre das nicht ein sehr einfaches, aber extrem flexibles und dadurch
> mächtiges Updatesystem?

Nein, denn es scheitert an eventuell fehlenden Rechten bei PHP, die man 
oft nicht ändern kann (safe_mode, open_basedir, disable_functions, 
disable_classes), fehlende Programme auf der Plattform, Manipulation von 
Daten über die Shell (falls Zugriff möglich) und so manch anderes 
Problem. Part-DB muss den Systemrichtlinien der IT-Abteilungen von 
Firmen standhalten und erst recht im Internet funktionieren. Ansonsten 
können wir das Projekt myparts.info gleich wieder beerdigen. 
Cross-site-Scripting, SQL-Injections, Auslesen verschiedener 
Systemdateien, Backdoor installieren und so weiter... DNS umbiegen ist 
auch beliebt. Die Liste der möglichen Angriffe ist lang.

Wenn du deinen Vorschlag umsetzen willst, dann denk auch gleich über 
eine Signierung der Archive nach und wie man die Gültigkeit überprüft. 
Nicht vertrauenswürdige Schlüssel bzw. Signaturen sind dann ein Grund, 
ein Update zu verweigern.

Ich will hier nicht deine Ideen zerreden, aber ich bin nicht erst seit 
gestern Admin von einigen Servern im Inter- und Intranet. Musste hin und 
wieder mal Bots entfernen, die sich über schlechte PHP-Scripte 
eingeschlichen hatten. Geht ja erstmal ums Prinzip und darum, den 
gangbarsten Weg zu finden. Ich werde erstmal einen Interpreter erstellen 
und diesen zur Diskussion stellen.

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Funktioniert aber nur dort, wo auch tar zur Verfügung steht. Windows
> kennt den Befehl von Haus aus nicht. GNU tar reagiert anders als die
> Versionen auf anderen Unices. ZIP (über zlib) müsste von PHP auf allen
> Plattformen laufen, sofern das Modul existiert.

OK kein Problem, dann halt ZIP :-) Das ist ja auch wurscht, hauptsache 
irgend ein Archiv.

> Statt dem copy-Befehl im
> Array ginge natürlich auch ein unpack :-) Mir wäre es lieber, wenn wir
> die PHP-Funktionen anstelle der Shell nehmen, denn einige Provider
> verbieten exec() und ähnliches.

Ebenfalls kein Problem, da man ja in der Funktion, die ich oben 
erwähnte, ja so flexibel ist und die Befehle einbauen kann, die man 
möchte :-)

Was eben noch ein Hintergedanke von mir ist:
Es könnte ja mal vorkommen, dass wir ein Datenbankupdate durchführen 
müssen, das nicht mehr nur durch reine SQL Querys machbar ist, sondern 
zwingend über einen individuellen PHP-Code gemacht werden muss. Man kann 
dann aus dieser Funktion heraus auch auf alle meine Klassen zugreifen, 
und mit Objekten arbeiten usw.
Und vielleicht tauchen ja mal noch irgendwelche andere Probleme auf, die 
wir nur duch einen individuellen Codeblock lösen können, an die wir 
momentan nicht denken.

Udo Neist schrieb:
> Geschenkt ;-) Wichtig ist, das nur alle Updates für die aktuelle Version
> und höher geladen werden. Alle vorherigen Updates wären überflüssig beim
> Download. Deshalb ja der List-Befehl auf einen FTP angewendet und
> durchforsten.

Ja, es werden natürlich immer nur die neueren Versionen runtergeladen. 
Und jedes Updatearchiv beinhaltet nur gerade die neuen Dateien, also nur 
die, die sich verändert haben. So kann ein Update sogar aus nur einer 
einzigen PHP Datei bestehen, wenn z.B. ein Fehler in der lib.php behoben 
wurde. (Also natürlich würde sich diese lib.php dann auch zusammen mit 
einer Updateinfo-Datei in einem Archiv befinden)

Udo Neist schrieb:
> Letzteres geht nicht auf allen Servern! myparts.info lässt den
> Shell-Zugriff nicht zu. Und ich würde auf irgendwelche Scripte im
> Updatesystem verzichten oder willst du eine Hintertür erlauben? Ein paar
> Zeilen eingeschmuggelt und schon hat jemand anderes eine komplette
> Datenbank. cURL braucht nur ein paar Zeilen Code. Und es steht einem
> Angreifer zudem alle Möglichkeiten offen, die im Kontext des Webservers
> möglich sind.

Das mit der Shell bzw. exec() ist nun klar das geht wohl nicht, ist aber 
auch egal (war ja nur ein Beispiel. Ich hätte auch eine PHP Funktion als 
Beispiel nehmen können xD).

Wie will jemand ein paar Zeilen in die Updatefunktion einschmuggeln? 
Dazu gäbe es doch nur zwei Möglichkeiten: Entweder der "Angreifer" hat 
FTP-Zugriff auf dem Webserver, dann hilft aber jegliche 
Sicherheitsfunktion nichts mehr. Oder aber per DNS umbiegen oder sowas 
könnte man das Updatepaket von einer anderen Seite holen lassen, aber 
auch da kann man dann nichts mehr dagegen machen, denn dann müsste man 
ja nur z.B. eine neue, startup.php (die was Böses enthält) ins 
gefälschte Updatearchiv legen, und schon wird das böse Skript sogar bei 
jedem Aufruf der Seite, und nicht nur einmalig beim Update ausgeführt 
:-)
Somit sehe ich dieses Updatesystem nicht als Sicherheitslücke, zumindest 
nicht unsicherer als dein System (sofern ich deines richtig verstanden 
habe).

Udo Neist schrieb:
> Wenn du deinen Vorschlag umsetzen willst, dann denk auch gleich über
> eine Signierung der Archive nach und wie man die Gültigkeit überprüft.
> Nicht vertrauenswürdige Schlüssel bzw. Signaturen sind dann ein Grund,
> ein Update zu verweigern.

Das wäre doch eigentlich gar keine schlechte Idee!
Wie gesagt, ich denke auch jedes andere Updatesystem, das sich Daten von 
anderen Webserver holt ist eigentlich ja schonmal nicht 100%tig sicher. 
Somit wäre eine Signatur wohl sowieso für jedes Updatesystem eine sehr 
gute und nützliche Sicherheitseinrichtung.

Udo Neist schrieb:
> Ich will hier nicht deine Ideen zerreden, aber ich bin nicht erst seit
> gestern Admin von einigen Servern im Inter- und Intranet.

Jo kein Problem, wir diskutieren ja hier um eine Lösung zu finden, mit 
der möglichst alle Beteiligten zufrieden sind :-)
Und dass ich keine grosse Erfahrung mit dem Sicherheits-"Kram" von 
Servern habe, das ist halt so. Aber ich kann ja trotzdem Vorschläge 
machen, dann lerne ich auch gleich noch was dabei wenn du gute 
Gegenargumente bringst :-)

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
> Udo Neist schrieb:
>> Funktioniert aber nur dort, wo auch tar zur Verfügung steht. Windows
>> kennt den Befehl von Haus aus nicht. GNU tar reagiert anders als die
>> Versionen auf anderen Unices. ZIP (über zlib) müsste von PHP auf allen
>> Plattformen laufen, sofern das Modul existiert.
>
> OK kein Problem, dann halt ZIP :-) Das ist ja auch wurscht, hauptsache
> irgend ein Archiv.

ZIP hab ich auch schon in meiner Packer-Klasse drin :-)

> Was eben noch ein Hintergedanke von mir ist:
> Es könnte ja mal vorkommen, dass wir ein Datenbankupdate durchführen
> müssen, das nicht mehr nur durch reine SQL Querys machbar ist, sondern
> zwingend über einen individuellen PHP-Code gemacht werden muss. Man kann
> dann aus dieser Funktion heraus auch auf alle meine Klassen zugreifen,
> und mit Objekten arbeiten usw.
> Und vielleicht tauchen ja mal noch irgendwelche andere Probleme auf, die
> wir nur duch einen individuellen Codeblock lösen können, an die wir
> momentan nicht denken.

Ich wüsste nicht, welche Probleme wir noch mittels Script lösen müssen. 
Thumbnails erzeugen oder ähnliches geht auch mit entsprechend geänderten 
Scripte, die über das normale Update rein kommen. Sollte doch mal was 
gemacht werden, so wäre es am Besten, wenn der User aufgefordert wird 
oder mittels Redirect ein Post-Update-Script aus dem Archiv laufen zu 
lassen. Perfekt ist diese Lösung zwar nicht, aber man kann zumindest 
dieses Script je nach Wichtigkeit absichern (md5, sha1 oder was auch 
immer).

> Das mit der Shell bzw. exec() ist nun klar das geht wohl nicht, ist aber
> auch egal (war ja nur ein Beispiel. Ich hätte auch eine PHP Funktion als
> Beispiel nehmen können xD).

War das schlechteste Beispiel g


> Wie will jemand ein paar Zeilen in die Updatefunktion einschmuggeln?

Die Leute, die einem schaden wollen, die sind sehr erfinderisch. Und PHP 
gilt nicht als die sicherste Sprache, also lieber ein paar mehr 
Prüfungen rein als notwendig.

> Dazu gäbe es doch nur zwei Möglichkeiten: Entweder der "Angreifer" hat
> FTP-Zugriff auf dem Webserver, dann hilft aber jegliche
> Sicherheitsfunktion nichts mehr. Oder aber per DNS umbiegen oder sowas
> könnte man das Updatepaket von einer anderen Seite holen lassen, aber
> auch da kann man dann nichts mehr dagegen machen, denn dann müsste man
> ja nur z.B. eine neue, startup.php (die was Böses enthält) ins
> gefälschte Updatearchiv legen, und schon wird das böse Skript sogar bei
> jedem Aufruf der Seite, und nicht nur einmalig beim Update ausgeführt

Im schlechtesten Fall wäre das ganze System ohne Überprüfung und würde 
direkt den Code beim Updaten mit ausführen. Lässt man keinen Code zu, so 
muss der Angreifer die Scripte manipulieren. Hat man Checksummen wie 
sha1 und gibt die dem Updatesystem mit, so ist eine Hürde mehr drin. Man 
kann zu jedem Update-Archiv ein zweites anbieten, das Checksummen und 
ähnliches vorhält.

> Somit sehe ich dieses Updatesystem nicht als Sicherheitslücke, zumindest
> nicht unsicherer als dein System (sofern ich deines richtig verstanden
> habe).

Zumindest wären bei mir keine direkten Zugriffe möglich. Wäre in der 
Form noch ein include() nötig, aber ich möchte auch darauf verzichten 
und so eine Art INI-Datei oder XML nutzen. Die lassen sich nicht mit 
include(), require() oder eval() ausführen. Da braucht man einen 
Interpreter. Und wenn man genauer hinschaut, brauchst du auch einen 
solchen, ansonsten könntest du die Variablen nicht verabeiten. Für uns 
Entwickler würde ich passende Scripte schreiben, die das Zusammenbauen 
(weitgehends) erledigen.

> Udo Neist schrieb:
>> Wenn du deinen Vorschlag umsetzen willst, dann denk auch gleich über
>> eine Signierung der Archive nach und wie man die Gültigkeit überprüft.
>> Nicht vertrauenswürdige Schlüssel bzw. Signaturen sind dann ein Grund,
>> ein Update zu verweigern.
>
> Das wäre doch eigentlich gar keine schlechte Idee!
> Wie gesagt, ich denke auch jedes andere Updatesystem, das sich Daten von
> anderen Webserver holt ist eigentlich ja schonmal nicht 100%tig sicher.
> Somit wäre eine Signatur wohl sowieso für jedes Updatesystem eine sehr
> gute und nützliche Sicherheitseinrichtung.

GPG wäre ja eine gute Lösung, aber PHP unterstützt es nicht direkt. Und 
sowas selbst zu Entwicklen ist overkill. sha1 für Checksummen (wird in 
einer anderen Datei gespeichert, die man auch noch downloaden muss) ist 
schon recht gut.

> Jo kein Problem, wir diskutieren ja hier um eine Lösung zu finden, mit
> der möglichst alle Beteiligten zufrieden sind :-)
> Und dass ich keine grosse Erfahrung mit dem Sicherheits-"Kram" von
> Servern habe, das ist halt so. Aber ich kann ja trotzdem Vorschläge
> machen, dann lerne ich auch gleich noch was dabei wenn du gute
> Gegenargumente bringst :-)

Es heißt nicht umsonst im PHP-Umfeld: Drum prüfe, was du bekommst. In 
den wenigsten Teilen habe ich vernünftige Prüfungen der übergebenen 
Daten gesehen. $_REQUEST ist fast immer falsch, $_GET oder $_POST ist 
besser. $_GET für die Sachen, die man darstellen will, $_POST für die 
Formulare. $_REQUEST unterscheidet nicht, woher die Daten kommen. 
Desweiteren ist Part-DB ziemlich anfällig was SQL-Injections betrifft. 
Viele Variablen werden gar nicht auf den Typ geprüft. IDs sind entweder 
numerisch oder ein String. Fehlt eine Prüfung, kann aus einem harmlosen 
Select auch schnell mal ein Truncate oder Drop werden, denn ein 
Semikolon und ein Kommentarzeichen an der richtigen Stelle, schon wars 
das. Hier und da ein paar settype() reingeschrieben, noch ein paar 
Wertebereiche geprüft und die Daten möglichst noch escaped. Wobei man so 
oder so auf Prepared Statements setzen sollte.

Ich habe in meiner HTML-Klasse die Variablen im Konstruktor typisiert. 
Prüfungen des Inhalts gibt es kaum/keine, sind zum Teil auch gar nicht 
durchführbar, manches wird von vlibTemplate abgefangen. Sicher kann ich 
hier also auch nicht wirklich sein, was die übergebenen Daten angeht. 
Zumindest prüfe ich einige Daten und werfe bei Fehlern ein Exception. 
Das kann man erweitern und aus einem Abbruch mit Fehlermeldung noch 
zusätzlich ein Warning bei problematischen Parametern/Inhalten ausgeben.

Gute Nacht :-)

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Ich wüsste nicht, welche Probleme wir noch mittels Script lösen müssen.
> Thumbnails erzeugen oder ähnliches geht auch mit entsprechend geänderten
> Scripte, die über das normale Update rein kommen. Sollte doch mal was
> gemacht werden, so wäre es am Besten, wenn der User aufgefordert wird
> oder mittels Redirect ein Post-Update-Script aus dem Archiv laufen zu
> lassen. Perfekt ist diese Lösung zwar nicht, aber man kann zumindest
> dieses Script je nach Wichtigkeit absichern (md5, sha1 oder was auch
> immer).

OK hier mal ein Beispiel, das zwar keinen Sinn macht, technisch aber 
tatsächlich so ein Fall für eine PHP-Funktion statt einem SQL-Query ist:
Es sollen bei allen Footprint-Datensätzen, deren Bilddateiname ungültig 
sind, der Dateiname gelöscht werden.
Per SQL-Query kann man wohl kaum überprüfen, ob ein Datenbankeintrag 
einen Pfad zu einer existierenden Datei darstellt, oder nicht.
Wäre also ein Fall für PHP statt für SQL.

Oder:
Momentan ist es noch möglich, in einer Kategorie mehrere Unterkategorien 
mit dem selben Namen zu haben. Dies soll später verboten werden, da es 
z.B. für den Teile-Import notwendig ist, dass die Pfade zu Kategorien, 
Footprints usw. eindeutig sind.
Sobald dieses Update eingespielt wird, muss die Datenbank auf solche 
doppelten (gleichnamigen) Kategorien durchsucht werden. Sind solche 
doppelte Einträge vorhanden, wäre es am besten wenn die Updatefunktion 
z.B. gleich sein eigenes PopUp mitliefert, in dem alle doppelt 
vorkommenden Kategorien aufgelistet werden, mit der Möglichkeit die 
Kategorien gleich umzubenennen.

Solche Überprüfungen in die Systemdateien einzubauen ist, wie du schon 
selber geschrieben hast, ziemlich unschön und sollte vermieden werden.
Ist man beim Update so flexibel dass man sogar solche Sachen wie "Popups 
öffnen um Benutzereingaben zu erfassen" machen kann, wäre das sehr 
vorteilhaft und eine saubere Implementierung (alles ist da, wo es 
hingehört).

Übrigens wäre die von mir genannte updateinfo.inc eine normale PHP 
Datei, das ".inc" habe ich nur geschrieben weil ich diese Datei nicht 
als ganz normale PHP Datei betrachte, sondern als Include-Datei für die 
Systemdatei (z.B. update.php), die das Update durchführt :-) Vielleicht 
verwirrt es aber auch zu sehr und sie sollte doch besser in ".php" 
umbenannt werden xD

Udo Neist schrieb:
> Im schlechtesten Fall wäre das ganze System ohne Überprüfung und würde
> direkt den Code beim Updaten mit ausführen. Lässt man keinen Code zu, so
> muss der Angreifer die Scripte manipulieren. Hat man Checksummen wie
> sha1 und gibt die dem Updatesystem mit, so ist eine Hürde mehr drin. Man
> kann zu jedem Update-Archiv ein zweites anbieten, das Checksummen und
> ähnliches vorhält.

Also ich sehe da keinen Unterschied, ob man nun Code zulässt oder nicht. 
Schafft es ein Angreifer, ein Updatepaket zu manipulieren (bzw. zu 
fälschen), stehen ihm sowieso alle Tore offen und er kann machen was er 
will. Ich meine, einem Update kann nicht verboten werden, die 
Systemdateien zu überschreiben, sonst kann man damit schlecht ein Update 
durchführen ;-) Der Angreifer hat also sowieso die Möglichkeit, 
Systemdateien zu überschreiben, warum soll er sich dann nur die 
Updatedatei unter denn Nagel reissen, wenn er das ganze System 
manipulieren kann?

OK was man an meiner Version noch ändern könnte, wäre folgendes:
Die updateinfo.inc wird aufgeteilt in zwei Dateien. Eine davon ist nur 
eine Textdatei, die es nicht ermöglicht, Code auszuführen. In einer 
anderen Datei ist dann die eigentliche Updatefunktion, die es erlaubt 
PHP Code auszuführen.
Zuerst wird dann nur die Textdatei gelesen, die PHP-Datei wird noch gar 
nicht includet. Erst wenn die Angaben aus der Textdatei die Gültigkeit 
des Updates bestätigen (per Hash oder sowas), wird die PHP-Datei mit der 
Updatefunktion includet.

Udo Neist schrieb:
> Für uns
> Entwickler würde ich passende Scripte schreiben, die das Zusammenbauen
> (weitgehends) erledigen.

Daran dachte ich auch schon, das wäre natürlich für meine Updatevariante 
genau so gut möglich wie für deine.

Udo Neist schrieb:
> GPG wäre ja eine gute Lösung, aber PHP unterstützt es nicht direkt. Und
> sowas selbst zu Entwicklen ist overkill. sha1 für Checksummen (wird in
> einer anderen Datei gespeichert, die man auch noch downloaden muss) ist
> schon recht gut.

Was bringt es denn, wenn man die Checksumme noch separat herunterlädt? 
Wenn ein Angreifer ein Paket fälschen kann, kann er das doch auch mit 
einer Checksumme machen.

Udo Neist schrieb:
> Es heißt nicht umsonst im PHP-Umfeld: Drum prüfe, was du bekommst. In
> den wenigsten Teilen habe ich vernünftige Prüfungen der übergebenen
> Daten gesehen.

Viele solcher Überprüfungen müssen später gar nicht mehr in den PHP 
Dateien der einzelnen Seiten gemacht werden, da meine Klassen bei jeder 
Zuweisung von neuen Daten diese zuerst auf Gültigkeit überprüft. Diese 
Variante halte ich eh für sinnvoller, da dann die Überprüfung nur noch 
an einer zentralen Stelle (in der Klasse) überprüft werden müssen, und 
nicht in jeder einzelnen Datei, die diese Klasse verwendet.

Udo Neist schrieb:
> Desweiteren ist Part-DB ziemlich anfällig was SQL-Injections betrifft.
> Viele Variablen werden gar nicht auf den Typ geprüft. IDs sind entweder
> numerisch oder ein String. Fehlt eine Prüfung, kann aus einem harmlosen
> Select auch schnell mal ein Truncate oder Drop werden, denn ein
> Semikolon und ein Kommentarzeichen an der richtigen Stelle, schon wars
> das. Hier und da ein paar settype() reingeschrieben, noch ein paar
> Wertebereiche geprüft und die Daten möglichst noch escaped. Wobei man so
> oder so auf Prepared Statements setzen sollte.

Hast du schonmal meine Datenbankklasse angeschaut? Dort stelle ich ja 
die zwei Funktionen execute() und query() zur Verfügung für die 
Benutzung der Datenbank. ALLE Datenbankzugriffe von ganz Part-DB laufen 
schlussendlich über eine dieser beiden Funktionen. Und dort werden dann 
genau Prepared Statements verwendet. Voraussetzung ist natürlich, dass 
man diesen Funktionen die Parameter richtig übergibt, also den 
Query-String mit Fragezeichen als Platzhalter und dann die Variablen 
separat.
Ich denke damit ist die Gefahr einer SQL Injection ziemlich stark 
gesunken.

Udo Neist schrieb:
> Gute Nacht :-)

Ebenfalls :-)

P.S.
Versteh mich bitte nicht falsch: Ich zweifle nicht an der 
Funktionsfähigkeit oder Sicherheit deiner vorgeschlagenen 
Updatefunktion.
Nur habe ich das Gefühl, dass:
1. Irgendwann die Flexibilität deiner Methode nicht mehr ausreicht, und 
ab und zu extra für Updates umgebaut/erweitert werden muss
2. Es auch einfacher geht :-)

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
> OK hier mal ein Beispiel, das zwar keinen Sinn macht, technisch aber
> tatsächlich so ein Fall für eine PHP-Funktion statt einem SQL-Query ist:
> Es sollen bei allen Footprint-Datensätzen, deren Bilddateiname ungültig
> sind, der Dateiname gelöscht werden.
> Per SQL-Query kann man wohl kaum überprüfen, ob ein Datenbankeintrag
> einen Pfad zu einer existierenden Datei darstellt, oder nicht.
> Wäre also ein Fall für PHP statt für SQL.

Lässt sich in der entsprechenden Funktion dauerhaft einbauen. Somit ist 
es unabhängig von eventuell technischen Problemen auf dem Server. Könnte 
ja sein, das die Bilder auf einer anderen Partition liegen. Zudem könnte 
man die Datenbank per Admintool von "Leichen" befreien. Das ist 
sinnvoller als sowas per Update machen zu wollen.

Und der Datenbank macht das nichts, wenn sie ein paar unnütze Daten mehr 
drin hat :-) Ich glaube kaum, das Part-DB jemals TB von Daten verwalten 
wird.

> Oder:
> Momentan ist es noch möglich, in einer Kategorie mehrere Unterkategorien
> mit dem selben Namen zu haben. Dies soll später verboten werden, da es
> z.B. für den Teile-Import notwendig ist, dass die Pfade zu Kategorien,
> Footprints usw. eindeutig sind.
> Sobald dieses Update eingespielt wird, muss die Datenbank auf solche
> doppelten (gleichnamigen) Kategorien durchsucht werden. Sind solche
> doppelte Einträge vorhanden, wäre es am besten wenn die Updatefunktion
> z.B. gleich sein eigenes PopUp mitliefert, in dem alle doppelt
> vorkommenden Kategorien aufgelistet werden, mit der Möglichkeit die
> Kategorien gleich umzubenennen.

Geht per SQL-Script ebenso. Wenn man den SQL-Scripten im Update eine 
Flag für Rückgabewerte (show, question oder ähnliches) mitgibt, läuft 
das auch ohne Script. Wenn das nicht als SQL-Statement geht, dann als 
Stored Procedure :D

Zudem sollte man alle Vorkommnisse beim Updaten mitloggen und auch zum 
Ausdrucken anbieten. So kann der User entsprechende Meldungen per Hand 
beseitigen.

> Solche Überprüfungen in die Systemdateien einzubauen ist, wie du schon
> selber geschrieben hast, ziemlich unschön und sollte vermieden werden.
> Ist man beim Update so flexibel dass man sogar solche Sachen wie "Popups
> öffnen um Benutzereingaben zu erfassen" machen kann, wäre das sehr
> vorteilhaft und eine saubere Implementierung (alles ist da, wo es
> hingehört).

Ich meinte nicht die üblichen Tests auf fehlerhafte Eingaben oder 
unlogische Datensätze, sondern eher das typische Wartungsaufgaben wie 
ein Update nichts darin verloren haben. Das gehört in die Kategorie 
Admintools und sind Sonderaufgaben mit eigenen Scripten.

> Übrigens wäre die von mir genannte updateinfo.inc eine normale PHP
> Datei, das ".inc" habe ich nur geschrieben weil ich diese Datei nicht
> als ganz normale PHP Datei betrachte, sondern als Include-Datei für die
> Systemdatei (z.B. update.php), die das Update durchführt :-) Vielleicht
> verwirrt es aber auch zu sehr und sie sollte doch besser in ".php"
> umbenannt werden xD

Ich würde das gar nicht als PHP-Datei machen, sondern als Pseudo-Sprache 
definieren. Damit hast du wohl das größte Problem aus der Welt: ein 
Fehler im Updatescript und der User steht höchstwahrscheinlich mit einer 
unbenutzbaren Part-DB-Installation da. Und warum für jedes Update dann 
ein eigenes Script schreiben wollen? Zeitverschwendung! Alle wichtigen 
Funktionen in eine Update-Klasse und falls notwendig, wird diese dann 
ersetzt, bevor das eigentliche Update läuft. Stichwort: 
Stapelverarbeitung (Batch-Datei, Bash-Script etc. nur nicht so mächtig 
wie diese).

> Hast du schonmal meine Datenbankklasse angeschaut? Dort stelle ich ja
> die zwei Funktionen execute() und query() zur Verfügung für die
> Benutzung der Datenbank. ALLE Datenbankzugriffe von ganz Part-DB laufen
> schlussendlich über eine dieser beiden Funktionen. Und dort werden dann
> genau Prepared Statements verwendet. Voraussetzung ist natürlich, dass
> man diesen Funktionen die Parameter richtig übergibt, also den
> Query-String mit Fragezeichen als Platzhalter und dann die Variablen
> separat.
> Ich denke damit ist die Gefahr einer SQL Injection ziemlich stark
> gesunken.

Ich gehe erstmal von der offiziellen Version aus. Das die neue Version 
etliche Probleme schon jetzt beseitigt hat, das denke ich mir.

Nicht jede Überprüfung sollte zudem in eine Klassenfunktion ausgelagert 
werden. Funktionen sollten die übergebenen Daten auf Gültigkeit für 
ihren Scope prüfen. Das Hauptscript prüft, ob die Funktion überhaupt 
gebraucht wird. Welche Funktion kostet am wenigsten?

1) Wert -> Funktion -> Wert falsch -> Rückgabe Wert nicht verwertbar

2) Wert falsch -> Nächste Funktion


> P.S.
> Versteh mich bitte nicht falsch: Ich zweifle nicht an der
> Funktionsfähigkeit oder Sicherheit deiner vorgeschlagenen
> Updatefunktion.
> Nur habe ich das Gefühl, dass:
> 1. Irgendwann die Flexibilität deiner Methode nicht mehr ausreicht, und
> ab und zu extra für Updates umgebaut/erweitert werden muss
> 2. Es auch einfacher geht :-)

Jede Updatefunktion ist nie perfekt und muss immer wieder neu 
geschrieben werden. Aber warum jedesmal ein neues Script erstellen, wenn 
man eine Klasse mit den üblichen Funktionen bereits hat und diese 
vielleicht alle x Updates überarbeiten muss?

Aktuell wären folgende "Befehle" in der Updateklasse nötig (private 
Funktionen, wird vom Interpreter aufgerufen):
- copy
- delete
- mkdir
- rmdir
- chmod
- log
- unpack
- sync (Gleicht Datenbank mit Verzeichnis ab, z.B. Grafiken)
- sql

Diese Funktionen sind übergeordnete Funktionen und werden von update.php 
direkt aufgerufen:
- check_version (Prüft die installierte Version gegen dem Update)
- check_updates (Überprüft auf Updates)
- get_updates (Holt die Updates)
- parse (Der eigentliche Interpreter)

Sind halt zwei Positionen die wir hier einnehmen und beide haben in 
verschiedenen Fragestellungen wahrscheinlich ihren Vorteil. Wir müssten 
einfach mal jeder ein Beispielupdate erstellen und dann kann man 
schauen, was wir von welchem System übernehmen sollten.

Grüße
Udo

von Christian R. (holle)


Lesenswert?

Urban B. schrieb:
> Christian R. schrieb:
>> Zu den Updates:
>> Kann man es nicht so machen, dass man Zum einen immer aktuelle Pakete
>> bereit stellt und zu anderen (z.B. für diejenigen die eine langsame
>> Internetverbindung haben) eine Update-Funktion.
>
> Und warum soll eine Update-Funktion eine weniger schnelle
> Internetverbindung benötigen als wenn man es von Hand herunterlädt?
> Ich verstehe nicht richtig was du meinst...

Ich habe mich ungünstig ausgedrückt. Mit Pakete meinte ich eigentlich 
ein komplettes Archiv aller Dateien, also für jemanden der neu auf 
Part-DB stößt. So kann diese Person gleich die aktuellste Version 
herunterladen anstatt Version XXX welche dann gleich auf YYY geupdatet 
werden kann.
Bei automatischen Updates kommt es letztendlich aufs gleiche hinaus, 
aber aus eigener Erfahrung fühlt es sich besser an die "aktuellste 
Version" herunterladen zu können, statt eine "veraltete" die dann 
aktualisiert werden muss.


Udo Neist schrieb:
> Das ist entspricht in etwa meiner Vorstellung:
>
> - ein Listbefehl auf einen FTP oder einem lokalen Verzeichnis loslassen
> und alle Updatepakete ab eigener Version in ein Array aufnehmen
> - Update in der Reihenfolge bis zum letzten Version innerhalb der
> Majorversion vornehmen

Genau so meinte ich das.


Urban B. schrieb:
> Ausserdem, wozu sollen die neuen Dateien noch manuell herumkopiert
> werden? Das kann man doch direkt mit dem Entpacken eines Updatesarchiv
> erledigen, in nur einem einzigen Befehl.

Durch manuelles kopieren kann man die zu überschreibenden Dateien 
sichern um notfalls die Ursprungsversion wieder herzustellen falls doch 
mal irgendetwas nicht klappt.

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Urban B. schrieb:
>> OK hier mal ein Beispiel, das zwar keinen Sinn macht, technisch aber
>> tatsächlich so ein Fall für eine PHP-Funktion statt einem SQL-Query ist:
>> [...]
>
> Lässt sich in der entsprechenden Funktion dauerhaft einbauen.

Ja klar lässt sich das dauerhaft einbauen, aber:
- Wer sagt uns dass nachher nicht bei jedem 3. Update nochmal eine 
zusätzliche, spezielle Funktion gebraucht wird? In Version 3.x.x Platzt 
dann doch die Update-Klasse aus allen Nähnten, weil darin noch 20 
Funktionen für irgendwelche Updates rumliegen, die nur ein einziges Mal 
gebraucht wurden. Und nach jedem Update wieder die nicht mehr benötigten 
Funktionen aus der Update-Klasse zu löschen zeugt auch nicht grad von 
einem durchdachten System ;-)
- Wozu sollen Funktionen, die nur ein einziges Mal (beim Update) 
gebraucht werden, ins System integriert werden? Die haben dort nichts zu 
suchen, die wurden geschrieben um Version x.x.a auf x.x.b zu 
aktualisieren, also gehören sie zum Update x.x.b und nicht ins System.

> Somit ist
> es unabhängig von eventuell technischen Problemen auf dem Server. Könnte
> ja sein, das die Bilder auf einer anderen Partition liegen.

Was für technische Probleme auf dem Server? Meine Variante wäre sicher 
nicht fehleranfälliger als deine Variante. Da die Updatefunktion ja zum 
Ausführen includet werden muss, hat sie somit auch Zugriff auf den 
ganzen Rest von Part-DB (Einstellungen aus der config.php, 
Datenbankklasse, ...).
Dort, wo Part-DB die Bilder sucht, dort sucht sie auch meine 
Updatefunktion, egal ob das nun auf einer anderen Partition liegt oder 
nicht.

> Zudem könnte
> man die Datenbank per Admintool von "Leichen" befreien. Das ist
> sinnvoller als sowas per Update machen zu wollen.

Um sich von Leichen zu befreien, dazu soll natürlich ein Admintool 
vorhanden sein, das ist richtig. Das habe ich nämlich schon mit den 
Dateien vor, es soll möglich sein die Datenbank nach Dateien zu 
durchforsten die nicht (mehr) existieren.
Aber: Es gibt auch Funktionen, die wirklich nur ein einziges mal beim 
Update ausgeführt werden müssen, und nachher für den Benutzer nicht 
erreichbar sein sollen. Und genau für solche (und nur für solche) 
Funktionen wäre meine individuelle Updatefunktion gedacht.

>> Oder:
>> Momentan ist es noch möglich, in einer Kategorie mehrere Unterkategorien
>> mit dem selben Namen zu haben. Dies soll später verboten werden, da es
>> z.B. für den Teile-Import notwendig ist, dass die Pfade zu Kategorien,
>> Footprints usw. eindeutig sind.[...]
>
> Geht per SQL-Script ebenso. Wenn man den SQL-Scripten im Update eine
> Flag für Rückgabewerte (show, question oder ähnliches) mitgibt, läuft
> das auch ohne Script. Wenn das nicht als SQL-Statement geht, dann als
> Stored Procedure :D

Ja logisch geht es. Aber es muss extra wieder in die Updatefunktion 
eingebaut werden, das bläht die Updatefunktion immer stärker auf und 
wird unnötig kompliziert.
Das ist ja genau das, was ich dir versuche mitzuteilen :-) Natürlich 
kann man mit deiner Methode auch alles bewerkstelligen was zu 
bewerkstelligen ist. Aber es macht die Update-Klasse immer komplizierter 
wegen Features, die nur ein einziges Mal bei einem Update gebraucht 
wurden und nachher kein Mensch mehr braucht.
Ich bin einfach der Meinung: Updateroutinen sind von Update zu Update 
individuell und sollen daher immer mit dem jeweiligen Update 
mitgeliefert werden. Individuelle Updateroutinen gehören nicht ins 
System, und eine Allgemeine, flexible Updateroutine die ALLES machen 
kann, das die Updates jemals brauchen könnten, macht die Updateklasse 
viel zu aufwändig, zu kompliziert und daher evtl. auch noch 
fehleranfällig.

> Zudem sollte man alle Vorkommnisse beim Updaten mitloggen und auch zum
> Ausdrucken anbieten. So kann der User entsprechende Meldungen per Hand
> beseitigen.

Sowas könnte man natürlich auch in meiner Variante einbauen. Die 
Log-Funktion gehört dann natürlich ins System, da sie bei jedem Update 
gebraucht wird. In der Updatefunktion, die im Updatearchiv daherkommt, 
müsste dann z.B. nur noch ein Array mit den Meldungen gefüllt werden, so 
ähnlich wie in den case-Blöcken der momentanenen db_update.php.

> Ich meinte nicht die üblichen Tests auf fehlerhafte Eingaben oder
> unlogische Datensätze, sondern eher das typische Wartungsaufgaben wie
> ein Update nichts darin verloren haben. Das gehört in die Kategorie
> Admintools und sind Sonderaufgaben mit eigenen Scripten.

Ja, wie bereits oben erwähnt: Typische Wartungsarbeiten sollen natürlich 
ins System integriert werden. Individuelle Funktionen, die wirklich nur 
ein einziges Mal beim Update ausgeführt werden müssen, gehören da aber 
nicht rein, und das sind ja genau die, von denen ich die ganze Zeit 
spreche.

> Ich würde das gar nicht als PHP-Datei machen, sondern als Pseudo-Sprache
> definieren.

Dann wäre mein Ziel, es möglichst einfach, unkompliziert und flexibel zu 
gestalten, aber total verfehlt ;-)

> Damit hast du wohl das größte Problem aus der Welt: ein
> Fehler im Updatescript und der User steht höchstwahrscheinlich mit einer
> unbenutzbaren Part-DB-Installation da.

Dafür soll es ja dann eine Rollback-Funktion geben -> Problem gelöst.

> Und warum für jedes Update dann
> ein eigenes Script schreiben wollen? Zeitverschwendung!

Also für ein normales Update, bei dem nur Dateien überschrieben und 
SQL-Befehle ausgeführt werden, ist das Skript ziemlich kompakt (siehe 
"update_bsp2.php" im Anhang). Und die Grundstruktur kann man natürlich 
immer wieder übernehmen fürs nächste Update. Wenn man mal mehr machen 
möchte als nur SQL Befehle ausführen, könnte das z.B. etwa so aussehen 
wie in der "update.php" im Anhang.

> Ich gehe erstmal von der offiziellen Version aus. Das die neue Version
> etliche Probleme schon jetzt beseitigt hat, das denke ich mir.

Ach so, ja das stimmt zum Teil. Aber ich denke es wäre Zeitverschwendung 
wenn wir diese Version noch umbauen würden.

> Nicht jede Überprüfung sollte zudem in eine Klassenfunktion ausgelagert
> werden. Funktionen sollten die übergebenen Daten auf Gültigkeit für
> ihren Scope prüfen. Das Hauptscript prüft, ob die Funktion überhaupt
> gebraucht wird. Welche Funktion kostet am wenigsten?
>
> 1) Wert -> Funktion -> Wert falsch -> Rückgabe Wert nicht verwertbar
>
> 2) Wert falsch -> Nächste Funktion

Jup, das macht natürlich Sinn.

> Jede Updatefunktion ist nie perfekt und muss immer wieder neu
> geschrieben werden. Aber warum jedesmal ein neues Script erstellen, wenn
> man eine Klasse mit den üblichen Funktionen bereits hat und diese
> vielleicht alle x Updates überarbeiten muss?

Bei meiner Variante existiert natürlich auch eine Klasse die die Updates 
durchführt. Diese kümmert sich ums Backup vor dem Update, ums Rollback 
bei einem Fehler, verarbeitet die Logs usw. Das ist ja immer das selbe 
und gehört ganz klar ins System integriert.

> Sind halt zwei Positionen die wir hier einnehmen und beide haben in
> verschiedenen Fragestellungen wahrscheinlich ihren Vorteil. Wir müssten
> einfach mal jeder ein Beispielupdate erstellen und dann kann man
> schauen, was wir von welchem System übernehmen sollten.

Ja, das wäre nich schlecht. Momentan habe ich dazu aber nicht die Zeit. 
Allerdings habe ich mal so auf die schnelle ein Beispiel-Updatepaket 
erstellt, so wie ich mir das in etwa vorstelle. Ich denke, daran 
erkennst du viel mehr als wenn ich hier 500 Zeilen Text schreiben würde.

Kurze Beschreibung:
In einem Updatepaket gibt es immer diese Elemente:
- Datei "info.ini": Eine nicht ausführbare Datei, die alle wichtigen 
Informationen zum Update enthält
- Datei "update.php": Die Datei, die die notwendigen Updateschritte 
enthält. Allerdings ist hier nichts drin, was das Überschreiben der 
alten Systemdateien mit den neuen Dateien betrifft.
- Ordner "files/": Hier sind alle neuen Systemdateien enthalten (also 
alle, die sich seit der letzten Version geändert haben). Die 
Ordnerstruktur darin ist genau so wie es nachher auch sein muss.

Die Updatefunktion des Systems entpackt das Updatepaket erstmal nach 
updates/0.2.3/. Dann wird die info.ini ausgelesen und entschieden, ob 
dieses Update durchgeführt werden kann/darf.
Ist das Update in Ordnung, wird das Verzeichnis updates/0.2.3/files/ 
nach Dateien durchsucht. Von allen momentan installieren Systemdateien, 
die auch in diesem files/ Ordner enthalten sind, werden nun Backups 
angelegt. Auch von der Datenbank wird ein Update angelegt.

Dann kann das Update losgehen:
Die Update-Klasse kopiert einfach alle Dateien aus dem Ordner 
update/0.2.3/files/ ins Systemverzeichnis. Jetzt sind schonmal alle 
Dateien aktuell.
Dann wird noch die Datei update/0.2.3/update.ini includet und die darin 
enthaltene Funktion ausgeführt. Diese nimmt dann das Datenbankupdates 
oder sonst irgendwelche speziellen Updateroutinen vor.

Meldet diese Funktion Erfolg, ist das Update fertig. Meldet sie ein 
Fehler, wird direkt ein Rollback der alten Systemdateien und der 
Datenbank gemacht.

Christian R. schrieb:
> Ich habe mich ungünstig ausgedrückt. Mit Pakete meinte ich eigentlich
> ein komplettes Archiv aller Dateien, also für jemanden der neu auf
> Part-DB stößt. So kann diese Person gleich die aktuellste Version
> herunterladen anstatt Version XXX welche dann gleich auf YYY geupdatet
> werden kann.

Ah so meinst du das. Naja das weiss ich jetzt nicht ob wir bei jedem 
kleinsten Update extra noch ein vollständiges Paket schnüren. Inklusive 
Footprints wären das auch jedesmal wieder 100MB Daten.
Was ich mir aber vorstellen könnte, wären Sammelupdates. Also dass man 
sich zwar eine nicht ganz aktuelle Part-DB runterlädt, und dann noch ein 
Updatearchiv das alle Updates bis zur aktuellsten Version enthält. Das 
wären dann also im schlimmsten Fall zwei Pakete die man runterladen 
müsste.
Aber eigentlich ist es momentan noch unwichtig, wie wir das dann genau 
machen. Ich denke wir sind alle der Meinung, dass die Updatepakete für 
das automatische Update immer nur diejenigen Dateien enthalten, die sich 
seit der Vorversion geändert haben. Sammelupdates wären dann also ein 
Thema das überhaupt keinen Einfluss auf die Updateroutine hat, das würde 
alles ausserhalb von Part-DB geschehen.

Christian R. schrieb:
> Urban B. schrieb:
>> Ausserdem, wozu sollen die neuen Dateien noch manuell herumkopiert
>> werden? Das kann man doch direkt mit dem Entpacken eines Updatesarchiv
>> erledigen, in nur einem einzigen Befehl.
>
> Durch manuelles kopieren kann man die zu überschreibenden Dateien
> sichern um notfalls die Ursprungsversion wieder herzustellen falls doch
> mal irgendetwas nicht klappt.

Das kann man auch so machen wie ich es oben beschrieben habe. Die 
Updatefunktion des Systems merkt selbst, welche Dateien durch das Update 
überschrieben werden und welche nicht.

OK eine kleine Unschönheit gibt es da bei meiner Variante: Löscht man im 
Updateskript eine Datei, so wird sie vom System nicht gesichert weil sie 
sich nicht im files/ Ordner befindet. Dazu sind aber die Funktionen 
backup() und restore() in der update.php gedacht. Hier kann man die 
Backup- und die Restore-Funktion des Systems ergänzen mit 
individuellen Befehlen, die auf das jeweilige Update zugeschnitten sind. 
Die Update- und Restorefunktion des Systems wird aber natürlich trotzdem 
auch ausgeführt, so muss man sich wirklich nur noch ganz selten um ein 
paar wenigen Dateien kümmern, alles andere übernimmt das System völlig 
automatisch.

puuh das ist jetzt ganz schön viel Text geworden, sorry ;-)

von Gelöscht (kami89)


Angehängte Dateien:

Lesenswert?

Und hier noch den Anhang :-)

von Udo N. (weinbauer73)


Lesenswert?

Ich schlage einfach mal vor, dass wir beide unsere Updatevarianten am 
Beispiel des Updates von der offiziellen Version auf unser eigenen 
Branch vorstellen. Tests:

1) Update erfolgreich
2) Fehler beim Kopieren einer Datei und Behandlung dieses Fehlers
3) Datenbankupdate wird durchgeführt (einfach ein Update auf die Tabelle 
internal mit dem Einfügen und Ändern von Dummyvariablen)

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Ich schlage einfach mal vor, dass wir beide unsere Updatevarianten am
> Beispiel des Updates von der offiziellen Version auf unser eigenen
> Branch vorstellen. Tests:
>
> 1) Update erfolgreich
> 2) Fehler beim Kopieren einer Datei und Behandlung dieses Fehlers
> 3) Datenbankupdate wird durchgeführt (einfach ein Update auf die Tabelle
> internal mit dem Einfügen und Ändern von Dummyvariablen)

Können wir machen, muss aber noch mindestens 3 Wochen warten :-)

Sorry wenn ich langsam nerve^^ aber irgendwie konnte ich einfach noch 
kein richtiges Argument von dir lesen, das gegen meine Variante sprechen 
würde. Deshalb halte ich natürlich an meiner Variante fest :-)

Dass es weniger sicher ist, das glaube ich nicht. Speziell jetzt, wo das 
Update vor dem Includen der Updatedatei erstmal verifiziert wird.

Dass man übertrieben viel Code schreiben muss für ein Update finde ich 
auch nicht. Man kann ja die Funktionen execute() und query() aus der 
Datenbankklasse nutzen, dann wird das sehr kompakt. Natürlich ist es ein 
bisschen mehr als nur ein Array das man befüllt, darf es aber auch sein 
wenn man dadurch enorm viel flexibler ist.

Allerdings sehe ich zwei grosse Vorteile bei meiner Variante:
- Flexibilität (es kann später noch kommen was will, alles kein Problem)
- Saubere Strukturierung (Funktionen, die häufiger genutzt werden kommen 
ins System, Funktionen speziell auf ein Update angepasst kommen nur ins 
Updatepaket, sind also "Einweg-Skripte")

Speziell die Flexibilität finde ich wichtig. Es ist ziemlich nervig, 
ständig das eigene System umzubauen / zu erweitern nur weil man früher 
nicht an alle möglichen Konstellationen gedacht hat. Ich jedenfalls 
programmiere ein Progemm lieber nur einmal, und zwar so dass man es 
möglichst flexibel nutzen kann, dann gibts später auch viel weniger 
Anpassungen.

von Udo N. (weinbauer73)


Angehängte Dateien:

Lesenswert?

Mein Stand der Updatefunktion habe ich angehängt. Die Datei 
update_r1000.ups enthält die Updatebefehle und ist Bestandteil eines 
fiktiven Archivs part_db_r1000.zip, welches bereits in 
update/part_db_r1000 extrahiert wurde. Wie die Scriptdatei später heißen 
wird, das habe ich noch nicht festgelegt. Die Klasse ist ein 
Proof-Of-Concept und sollte, abgesehen von kleineren - teilweise schon 
bekannten - Fehlern, laufen. Einige Funktionen sind noch nicht benannt 
(z.B. für den Online-Krams) oder nur ohne Inhalt.

Prinzipielle Vorgehensweise (hier als Online-Update):
1
$update = new update;
2
...
3
$files = $update -> get_update_list();
4
foreach ($file in $files)
5
{
6
   $update -> get_update_file( $file ); // Holt das File
7
   if ( is_readable( $file ) $archiv = $update -> f_unpack( $file ); // Entpackt das file
8
   if ( is_readable( $archiv.'/update.ups' ) && $update->load_script( $archiv.'/update.ups' ) $update->parse_script(); // Parst das File
9
10
}

Die Funktion update->parse_script() interpretiert die zuvor mit 
update->load_script(DATEINAME) in einen Array eingelesene Datei. Jedes 
Element enthält Kommando, festgelegtes Trennzeichen (hier ein " :: ") 
und ein oder mehrere Optionen (mit Leerzeichen getrennt). Die 
Reihenfolge im Script entspricht auch der im Array und baut daher 
aufeinander auf. Das Schlüsselwort "critical :: false" sorgt dafür, die 
bis zum nächsten "critical :: true" vorhandenen Befehle ohne Rücksicht 
auf einen Fehler auszuführen. "critical :: true" dagegen bricht die 
Ausführung des Updates sofort ab. Ein Log wird (ist noch auf der 
ToDo-Liste) immer mitgeschrieben. Es können mit der log-Anweisung auch 
individuelle Texte eingefügt werden.

von Udo N. (weinbauer73)


Lesenswert?

Meine Update-Klasse funktioniert soweit schon. Noch sind nicht alle 
Befehle vorhanden, aber immerhin :-) Das Proof-Of-Concept konnte wegen 
etlichen (flüchtigen) Fehlern - war ja auch nicht wirklich zum Austesten 
gedacht - nicht laufen.

Zum System:

Das Script update.php von Part-DB lädt die update-Klasse, holt dann die 
Updates von einem Server (die Funktionen download_*() und check_script() 
sind hier nur Dummies), entpackt diese und parst die Datei dort 
enthaltene "update.ups".
1
require_once ('lib.php');
2
require_once ('class/update.php');
3
4
$update =& new update;
5
6
// downloading a list of updates from url and get some files
7
$update -> download_list( 'ftp://' );
8
$update -> download_file( 'part-db_up515.zip' );
9
10
// parse an update script
11
$update -> check_script(515);
12
$update -> load_script('update/update.ups');
13
$update -> parse_script();
14
if ( ! $update -> get_debug() ) $update -> show_report();

In dem Script "update.ups" werden die Befehle in der Reihenfolge von 
oben nach unten ausgeführt.
1
log :: update to revision xxx
2
copy :: authors.php
3
chmod :: authors.php 0755
4
#chmod :: update 0775
5
mkdir :: tmp 0775
6
rmdir :: tmp
7
critical :: false
8
sql :: part-db_update_rev12.sql
9
critical :: true
10
sql :: part-db_update_rev12.sql

Es sucht die notwendigen Dateien im Unterverzeichnis "files/". Die 
Dateistruktur entspricht dabei der von Part-DB selbst.
1
part-db/update # l *
2
-rw-r--r-- 1 xxx xxx 1234  4. Aug 20:43 part-db_update_rev12.zip
3
-rw-r--r-- 1 xxx xxx  170  9. Aug 22:36 update.sh
4
-rw-r--r-- 1 xxx xxx  228 12. Aug 16:58 update.ups
5
6
files:
7
insgesamt 68
8
drwxr-xr-x 2 xxx xxx   54 12. Aug 17:58 ./
9
drwxrwxr-x 4 xxx xxx   93 12. Aug 17:58 ../
10
-rw-r--r-- 1 xxx xxx 1831  4. Aug 14:40 authors.php
11
-rw-r--r-- 1 xxx xxx  255 12. Aug 14:26 part-db_update_rev12.sql

Schlägt ein Kommando fehl, so wird in Abhängigkeit des Status "critical" 
die Ausführung abgebrochen und ein Rollback veranlasst oder die 
Ausführung ausgeführt. Der Status "critical" ist standardmässig ein und 
lässt sich mit dem Befehl "critical :: (true|false)" beeinflussen.
1
loading update/update.ups...
2
executing log => update to revision xxx
3
executing copy => authors.php
4
 - backup authors.php
5
 - copying /update/files/authors.php to /authors.php
6
executing chmod => authors.php 0755
7
 - chmod /srv/www/htdocs/part-db/authors.php to 0755
8
executing mkdir => tmp 0775
9
 - mkdir "tmp/" with mode 0775
10
executing rmdir => tmp
11
executing critical => false
12
executing sql => part-db_update_rev12.sql
13
 - loading sql-script /srv/www/htdocs/part-db/update/files/part-db_update_rev12.sql...
14
 - execute sql-script part-db_update_rev12.sql...
15
executing critical => true
16
executing sql => part-db_update_rev12.sql
17
 - loading sql-script /srv/www/htdocs/part-db/update/files/part-db_update_rev12.sql...
18
 - execute sql-script part-db_update_rev12.sql...
19
20
executing of script: success
21
22
at least executing cleanup...
23
 - delete backup of file authors.php
24
25
report:
26
27
    comment: update to revision xxx
28
    backup authors.php: success
29
    copy file /update/files/authors.php to /authors.php: success
30
    chmod file "authors.php" to 0755: success
31
    mkdir tmp: success
32
    rmdir : success
33
    executing sql: INSERT INTO `part-db`.`internal` (`keyName`, `keyValue`) VALUES ('dbSubversion', '0')
34
    sql state: error => Duplicate entry 'dbSubversion' for key 'keyName'
35
    executing sql: INSERT INTO `part-db`.`internal` (`keyName`, `keyValue`) VALUES ('dbRevision', '0')
36
    sql state: error => Duplicate entry 'dbRevision' for key 'keyName'
37
    executing sql: UPDATE `part-db`.`internal` SET `keyValue` = '1' WHERE `keyName` = 'dbSubversion'
38
    sql state: ok
39
    executing sql: INSERT INTO `part-db`.`internal` (`keyName`, `keyValue`) VALUES ('dbSubversion', '0')
40
    sql state: error => Duplicate entry 'dbSubversion' for key 'keyName'
41
    stop executing sql-script!

In folgenden Report ist die Datei authors.php umbenannt in author.php 
und lässt sich daher nicht finden:
1
loading update/update.ups...
2
executing log => update to revision xxx
3
executing copy => authors.php
4
5
something getting wrong, stop executing script!
6
7
at least executing cleanup...
8
report:
9
10
    comment: update to revision xxx
11
    copy file /update/files/authors.php to /authors.php: failed -> file not found
12
    something getting wrong, stop executing script!

Damit lassen sich auch die Installation oder auch eine Reparatur von 
Part-DB bewerkstelligen. Einfach eine "install.ups" oder "repair.ups" 
erstellen, die entsprechende Anweisungen enthält. Dazu müsste noch ein 
Befehl "base :: PFAD" integriert werden, der relativ zum 
Installationspfad liegt, um z.B. wichtige SQL- oder Systemscripte finden 
zu können. Falls es dennoch notwendig werden sollte, spezielle 
PHP-Scripte aufrufen zu müssen (ich hab bisher noch keine Beispiele 
gelesen, für die man sowas braucht), so könnte man das hier auch noch 
einbauen. Die meisten Updates benötigen das nicht. Entpacken, kopieren 
von Dateien, Verzeichnisse erzeugen, Rechte wechseln, und Datenbank 
updaten sind praktisch allen Fällen die einzigen Funktionen beim Update 
und mit dieser Lösung schon abgedeckt.

Die Erstellung der UPS-Scripte lassen sich mit einem Batch-Script 
vereinfachen (z.B. svn diff auswerten und damit copy-Befehle erzeugen, 
wie ich schon weiter oben beschrieben hatte).

Im übrigen ist diese Klasse nicht auf Part-DB beschränkt und könnte auch 
in anderen Projekten ihren Dienst versehen :-)

von kirk d. (kirkdis)


Lesenswert?

also hab gerade mal versucht die neueste r512 version auf den ftp 
hochzuladen vorher ne kopie von der datenbank angelegt und aktuell hab 
geht es

hatte vorher nen fehler...


"Unknown column 'footprints.filename' in 'field list'

ein datenbankupate wurde so wie ich das gesehen habe nicht 
durchgeführt...

weiß einer rat?

aktuell habe ich noch die kategoriesturktur da aber keine artikel 
mehr..."

habe gerade manuell über konfiguration die datenbank geupdatet... 
scheint jetzt wieder alles zu gehen... werd morgen mal bisl rumtesten...


ein fehler steht aber noch an:

auf der Hauptseite steht oben unter part-db 0.2.1 SVN REV512:

Warning: shell_exec(): Cannot execute using backquotes in Safe Mode in 
/volume1/web/lager/lib.php on line 536 Warning: shell_exec(): Cannot 
execute using backquotes in Safe Mode in /volume1/web/lager/lib.php on 
line 536

wie bekomme ich das weg? ansich funktioniert alles die meldung hatte ich 
auch schon vorher bei der offiziellen part-db

von kirk d. (kirkdis)


Lesenswert?

hier nochmal ein Screenshot von der Hauptansicht der part-db mit der 
Fehlermeldung.

Footprints ausblenden geht soweit auch. allerdings ist die Spalte 
footprints in der Artikelauflistung noch vorhanden. Stört aber soweit 
gerade nicht.

DANKE!

von Udo N. (weinbauer73)


Lesenswert?

Ausschnitt aus dem SQL-Script zur Installation der Datenbankversion 12:
1
DROP TABLE IF EXISTS `footprints`;
2
CREATE TABLE IF NOT EXISTS `footprints` (
3
  `id` int(11) NOT NULL AUTO_INCREMENT,
4
  `name` mediumtext COLLATE utf8_unicode_ci NOT NULL,
5
  `filename` mediumtext COLLATE utf8_unicode_ci,
6
  `parentnode` int(11) NOT NULL DEFAULT '0',
7
  PRIMARY KEY (`id`)
8
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

shell_exec() ist auf vielen Servern im Inet gesperrt. Das Warning kann 
man mit einem @ vor shell_exec() abstellen.
1
    function get_svn_revision()
2
    {
3
        global $conf;
4
        
5
        if ( !$repo_version = @shell_exec( 'svnversion') )
6
        {
7
            if ( file_exists( '.svn/entries') )
8
            {
9
                $svn = File( '.svn/entries');
10
                $repo_version = $svn[ 3];
11
                unset($svn);
12
            }
13
        }
14
15
        return( $repo_version . $conf['version']['string'] );
16
    }

von Gelöscht (kami89)


Lesenswert?

kirk disen schrieb:
> also hab gerade mal versucht die neueste r512 version auf den ftp
> hochzuladen vorher ne kopie von der datenbank angelegt und aktuell hab
> geht es

r512 ist nicht die neuste Version, die neuste wäre r514. Welche davon 
hast du nun installiert?

kirk disen schrieb:
> Footprints ausblenden geht soweit auch. allerdings ist die Spalte
> footprints in der Artikelauflistung noch vorhanden. Stört aber soweit
> gerade nicht.

Aleo wenn das Footprint ausblenden geht, müsstest du r514 haben, denn 
vorher ging das noch nicht. Dann sollte aber auch die Footprint-Spalte 
nicht mehr angezeigt werden (bei mir funktioniert das).
Bist du dir ganz sicher dass das Installieren der neuen Version auch 
alles sauber funktioniert hat? Überschreib mal deine lib.php und 
showparts.php mit den neusten Versionen aus dem SVN:

https://part-db.googlecode.com/svn-history/r514/trunk/lib.php
https://part-db.googlecode.com/svn-history/r514/trunk/showparts.php

Falls dann das Problem behoben ist, scheint bei der Installation deiner 
Version etwas schief gelaufen zu sein (wobei da eigentlich gar nicht 
viel schief laufen kann...). Dann würde ich sicherheitshalber gleich 
nochmal das ganze System neu installieren.

Wenn das auch nicht geholfen hat, schreib einfach nochmal, dann müssen 
wir den Fehler genauer lokalisieren :-)

von Gelöscht (kami89)


Lesenswert?

@Udo

Hättest du vielleicht auch noch Zeit und Lust, mal mit dem universellen 
Dateiupload zu beginnen? :-)
Es würde mir sehr helfen wenn dieser bald mal existieren würde, da meine 
Klassen bereits auf das neue Dateiverwaltungs-System ausgerichtet sind, 
bei dem man allen möglichen Objekten (Teile, Footprints, Lieferanten, 
...) Dateien zuordnen kann.

Aber ist nur so eine Idee, kam mir einfach in den Sinn dass mir das sehr 
helfen würde. Ich will dich natürlich nicht hetzen :-)

Oder hast du mit Ajax auch zu wenig Erfahrung um einen hübschen solchen 
Dialog zu erstellen?
Vielleicht würden sich dazu ein paar Komponenten von dieser Seite 
anbieten:
http://dhtmlx.com/docs/products/dhtmlxTree/index.shtml

Schön wäre, wenn man den Upload-Dialog vielleicht ungefähr so verwenden 
könnte:
1
$dialog = new UploadDialog(/* ein paar Parameter */);
2
$filename = $dialog->open(); // Öffnet den Upload-Dialog (ein Popup) und gibt den Dateinamen der markierten Datei zurück

Ein paar Informationen wären hier noch aufgelistet:
https://code.google.com/p/part-db/issues/detail?id=14
Der letzte genannte Punkt (rekursive Eindeutigkeit der Dateinamen) wird 
aber vermutlich nicht nötig sein. Auch eine Abfrage, ob ein grosses Bild 
verkleinert werden soll wird es nicht brauchen wenn später sowieso mit 
Thumbnails gearbeitet wird.

mfg

von kirk d. (kirkdis)


Lesenswert?

Stimmt das Archiv dass ich installiert hatte war die 514. allerdings 
zeigt der mainscreen Rev 512 an. es war das archiv von urban b. das er 
hier gepostet hat.

also die footprint spalte ist z.b. in den Baugruppen noch vorhanden. 
Stört aber aktuell nicht weiter. falls die funktion später im konfig 
menü per checkbox an bzw abgewählt werden kann wäre das super...

habe auch nochmal die beiden files geupdatet. soweit funktioniert alles 
aktuell...

von Gelöscht (kami89)


Lesenswert?

kirk disen schrieb:
> Stimmt das Archiv dass ich installiert hatte war die 514. allerdings
> zeigt der mainscreen Rev 512 an. es war das archiv von urban b. das er
> hier gepostet hat.

Ups das ist vermutlich mein Fehler ;-) Ich hätte wohl erst noch ein "SVN 
checkout" machen sollen bevor ich das Paket geschnürt habe, damit dann 
auch die richtige Version angezeigt wird. Und eigentlich hätte ich 
gleich alls .svn Ordner löschen können, aber es ist mir gar nicht in den 
Sinn gekommen dass die vorhanden sind, da man sie ja nicht sieht (im 
Dateibrowser unter Linux sind alle Dateien/Ordner mit einem Punkt am 
Anfang unsichtbar).
Naja ist eigentlich aber nicht weiter schlimm. Aber jetzt weiss ich 
wenigstens welche Version du hast :-)

kirk disen schrieb:
> also die footprint spalte ist z.b. in den Baugruppen noch vorhanden.
> Stört aber aktuell nicht weiter. falls die funktion später im konfig
> menü per checkbox an bzw abgewählt werden kann wäre das super...

Ach so, bei den Baugruppen meinst du. Stimmt, das habe ich irgendwie 
vergessen. Hab gedacht ich hätte es dort auch eingebaut...
Ich habs noch schnell eingebaut, hier gibts die neuste Version der 
entsprechenden Datei:
https://part-db.googlecode.com/svn-history/r515/trunk/deviceinfo.php

von kirk d. (kirkdis)


Lesenswert?

was mir noch aufgefallen ist... wenn man mit paketen updatet kommt 
eigentlich nur das überschreiben der alten dateien in frage, da die 
ganzen artikelbilder im unterordner img liegen. hätte fast den fehler 
gemacht und alles gelöscht und auf die neue datenbank verlinkt in der 
config. die problematik die ich da aber sehe ist dass dabei wohlmöglich 
alte dateileichen die nicht mehr benötigt werden erhalten bleiben. ist 
in der updateroutine schon etwas eingebaut dass den ganzen dateistamm 
checkt während des updates und unnötige dateien löscht?

zu dem footprint ausblenden: wenn man über die suchfunktion teiel sucht 
taucht das footprint auch wieder als spalte rechts in der auflistung mit 
auf. direkt über die kategorien ist es aber schön ausgeblendet...

bin aktuell noch bei der r514...

von Gelöscht (kami89)


Lesenswert?

kirk disen schrieb:
> zu dem footprint ausblenden: wenn man über die suchfunktion teiel sucht
> taucht das footprint auch wieder als spalte rechts in der auflistung mit
> auf.

Ist jetzt auch behoben :-)
https://part-db.googlecode.com/svn-history/r516/trunk/nav.php
https://part-db.googlecode.com/svn-history/r516/trunk/search.php

kirk disen schrieb:
> was mir noch aufgefallen ist... wenn man mit paketen updatet kommt
> eigentlich nur das überschreiben der alten dateien in frage, da die
> ganzen artikelbilder im unterordner img liegen. hätte fast den fehler
> gemacht und alles gelöscht und auf die neue datenbank verlinkt in der
> config. die problematik die ich da aber sehe ist dass dabei wohlmöglich
> alte dateileichen die nicht mehr benötigt werden erhalten bleiben. ist
> in der updateroutine schon etwas eingebaut dass den ganzen dateistamm
> checkt während des updates und unnötige dateien löscht?

Ja, man soll einfach immer die alten Dateien mit den neuen 
überschreiben. Dass Dateileichen entfernt werden, ist momentan nicht 
möglich. Ausser du aktualisierst dein Verzeichnis direkt per SVN, dann 
sollten zumindest die Systemdateien, die nicht mehr gebraucht werden, 
gelöscht werden (meine ich zumindest).

Oder wenn man das ganze System löschen will, dann löscht man halt alles 
ausser dem img-Ordner. Sonst sollten sich ja nirgens vom Benutzer 
erstellte Dateien befinden (ausser die config.php noch).

Später soll das Löschen von Dateileichen natürlich die Updatefunktion 
des Systems übernehmen. Auch soll etwas mehr Ordnung eingeführt werden, 
was die selbst hochgeladenen Dateien betrifft. Für hochgeladene Dateien 
gibt es dann ein Verzeichnis "media/", in dem alle hochgeladenen Dateien 
landen (und nur in dem!). Also alles, was sich ausserhalb von media/ 
befindet gehört zum System und wird durch die Updatefunktion sauber 
gehalten. Und für alles was sich dann in media/ befindet, ist der 
Benutzer selbst verantwortlich (es könnte aber vom System eine Funktion 
geben, die nicht benutzte Dateien im media-Verzeichnis aufspürt und dem 
Benutzer das Aufräumen vereinfacht).

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
> Ja, man soll einfach immer die alten Dateien mit den neuen
> überschreiben. Dass Dateileichen entfernt werden, ist momentan nicht
> möglich. Ausser du aktualisierst dein Verzeichnis direkt per SVN, dann
> sollten zumindest die Systemdateien, die nicht mehr gebraucht werden,
> gelöscht werden (meine ich zumindest).

Im Prinzip hab ich das bei mir in meinem Update-System so vorgesehen. 
Entweder wird das schon im Update-Script (update.ups) durch ein delete 
gemacht (bevorzugt) oder cleanup() überprüft anhand einer aktuellen 
Dateiliste, welche Systemdateien vorhanden sein müssen. Die speziellen 
Listen bzw. die repair.ups würden bei Bedarf automatisch ersetzt und 
abgearbeitet.

> Oder wenn man das ganze System löschen will, dann löscht man halt alles
> ausser dem img-Ordner. Sonst sollten sich ja nirgens vom Benutzer
> erstellte Dateien befinden (ausser die config.php noch).

Da die config.php irgendwann nur noch die Zugangsdaten der Datenbank 
enthält, wäre die grundsätzlich beim Update nicht überschreibbar 
(Blacklist).

Urban B. schrieb:
> @Udo
>
> Hättest du vielleicht auch noch Zeit und Lust, mal mit dem universellen
> Dateiupload zu beginnen? :-)
> Es würde mir sehr helfen wenn dieser bald mal existieren würde, da meine
> Klassen bereits auf das neue Dateiverwaltungs-System ausgerichtet sind,
> bei dem man allen möglichen Objekten (Teile, Footprints, Lieferanten,
> ...) Dateien zuordnen kann.
>
> Aber ist nur so eine Idee, kam mir einfach in den Sinn dass mir das sehr
> helfen würde. Ich will dich natürlich nicht hetzen :-)
>
> Oder hast du mit Ajax auch zu wenig Erfahrung um einen hübschen solchen
> Dialog zu erstellen?

Ich habe meist das dojo-Framework genutzt. Nach meiner Kenntnis gibt es 
da kein Multiupload, den man direkt nutzen kann. Aber ein asynchroner 
Dateiupload hatte ich damit schon hinbekommen. Ich werde mich aber 
erstmal nicht damit beschäftigen, sonst werden Templates und meine 
Update-Klasse niemals fertig.

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Ich habe meist das dojo-Framework genutzt. Nach meiner Kenntnis gibt es
> da kein Multiupload, den man direkt nutzen kann. Aber ein asynchroner
> Dateiupload hatte ich damit schon hinbekommen.

Hmm das dojo Framework sieht ja ziemlich cool aus. Ich würde es sehr 
begrüssen wenn irgendwann mal (in ferner Zukunft^^) ganz Part-DB mit so 
einem System (muss ja nicht dojo sein) realisiert wird. Dann hätte man 
eigentlich ein vollwertiges Programm, als wäre es eine lokale 
Installation. Also ich meine wegen den vielen neuen Möglichkeiten, die 
so ein Framework bieten. Konkret meine ich damit solche Sachen wie 
Drag&Drop, Kontextmenüs usw, die die Bedienung viel komfortabler 
gestalten. Aber momentan haben wir wichtigere Sachen zu tun :-)

Bezüglich Lizenz-Kram bin ich nicht gerade ein Profi. Ich habe mal 
Wikipedia etwas bemüht, und ich habe den Eindruck dass die von dojo 
angebotene BSD-Lizenz zu unserem Projekt passen würde oder? Die scheint 
sogar "noch freier" als GPL zu sein wenn ich das richtig verstanden 
habe?

Ich finde es halt einfach wichtig, dass wir keine Komponenten verwenden, 
die dann plötzlich lizenztechnische Einschränkungen für Part-DB 
darstellen könnte.

Ach ja, was meinst du genau mit Multiupload? Dass man mehrere Dateien 
gleichzeitig uploaden kann? :-)

> Ich werde mich aber
> erstmal nicht damit beschäftigen, sonst werden Templates und meine
> Update-Klasse niemals fertig.

Jop, das ist natürlich kein Problem :-)

von Udo N. (weinbauer73)


Lesenswert?

GPL und BSD kann man zusammen nutzen. Ist allerdings etwas umstritten, 
ob beide Lizenzen kompatibel sind. Ich meine ja. Vielleicht hier und da 
nicht perfekt, aber es geht ja (siehe die meisten Linux-Distris, die 
auch sehr viele Tools mit BSD-Lizenz nutzen).

von kirk d. (kirkdis)


Lesenswert?

bei der r514 fällt mir auf dass es in der Artikelauflistung nicht mehr 
möglich ist die Unterkategorien auszublenden. Das ging definitiv vorher 
mal. ist das Absicht oder gibt es ne andere Möglichkeit die 
Unterkategorien auszublenden?

von Gelöscht (kami89)


Lesenswert?

kirk disen schrieb:
> bei der r514 fällt mir auf dass es in der Artikelauflistung nicht mehr
> möglich ist die Unterkategorien auszublenden.

Bist du dir da ganz sicher? Ich konnte dies bei mir nicht 
nachvollziehen. Und auch in der Online-Demo 
(http://partdb.grautier.com/) funktioniert es (Ich weiss zwar nicht 
welche SVN Revision dort läuft, aber es müsste eigentlich die jeweils 
aktuellste sein).

Zur Sicherheit kannst du ja mal noch die neuste showparts.php holen:
https://part-db.googlecode.com/svn/trunk/showparts.php

Ansonsten müsste man vielleicht mal schauen, ob Apache irgendwelche 
Fehlermeldungen liefert.

von tb (Gast)


Lesenswert?

Hi, die Demo ist momentan nicht die aktuellste hab den Server neu 
aufsetzen müssen die ist ca. 20 tage alt bin noch nicht dazu gekommen 
das autoupdaten wieder einzurichten.

von André A. (nummer5) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hi,
ich find es Klasse, dass das Projekt so aktiv entwickelt wird, weiter 
so.

Ich hab meinen Widerstandsrechner auch etwas erweitert. Man kann jetzt 
den besten Widerstand aus einer E-Reihe suchen und die besten 
Widerstände für Spannungsteiler.

Anbei ein diff-File und die drei Bilder müssen in den Ordner 
tools/rechner/

Ob die Bestimmung der Widerstände die optimalste ist weis ich nicht, 
wäre nett wenn das ein paar Leute testen könnten.

Geplant ist noch ein Rechner für dem LM317.

von Gelöscht (kami89)


Lesenswert?

André Althaus schrieb:
> ich find es Klasse, dass das Projekt so aktiv entwickelt wird, weiter
> so.

Wir geben uns Mühe ;-)

> Ich hab meinen Widerstandsrechner auch etwas erweitert. Man kann jetzt
> den besten Widerstand aus einer E-Reihe suchen und die besten
> Widerstände für Spannungsteiler.
>
> Anbei ein diff-File und die drei Bilder müssen in den Ordner
> tools/rechner/

Hmm entweder bin ich zu dumm um den Patch zu übernehmen (gut möglich, 
weiss nicht wie es geht^^), oder irgendwas stimmt mit dem Patch nicht 
;-) Die JavaScript-Sachen funktionieren nach dem patchen irgendwie nicht 
mehr...Könntest du vielleicht einfach die ganzen Dateien hochladen, die 
überschrieben werden müssen? :-)

von André A. (nummer5) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hi,
ich hab die Dateien nochmal angehängt. Die Datei einfach in den tools 
Ordner entpacken.

von Gelöscht (kami89)


Lesenswert?

André Althaus schrieb:
> Hi,
> ich hab die Dateien nochmal angehängt. Die Datei einfach in den tools
> Ordner entpacken.

Danke, aber bei mir funktionieren die neuen zwei Funktionen nicht. Da 
tut sich JavaScriptmässig einfach nichts. Ich habe die Dateien trotzdem 
mal ins SVN geladen (r517), dann können die anderen auch mal schauen obs 
bei ihnen funktioniert.

von André A. (nummer5) Benutzerseite


Lesenswert?

Welchen Browser benutzt du? Ich habs bisher nur mit Firefox 14 getestet.

von Gelöscht (kami89)


Lesenswert?

André Althaus schrieb:
> Welchen Browser benutzt du? Ich habs bisher nur mit Firefox 14 getestet.

Ebenfalls FF14, auf Linux Ubuntu. Die Farbringtabelle funktioniert, nur 
die neuen beiden Funktionen nicht.

Du kannst ja mal die aktuelle SVN Version beziehen und schauen ob die 
bei dir läuft. Dann reden wir auch sicher von den gleichen Dateien. Ich 
kann nicht ausschliessen dass ich irgendwas falsch gemacht habe ;-)

Oder wenn die Online-Demo bald wieder richtig funktioniert könnten wir 
es dort testen :-) (@K.J. soll nicht heissen dass du stressen sollst xD)

Ach übrigens @all:
Die Semesterprüfungen sind fast vorbei (nur noch eine), heisst also ich 
kann langsam wieder mit dem Programmieren anfangen :-) @Udo, wie weit 
bist du mit den Templates?

von Udo N. (weinbauer73)


Lesenswert?

Bei mir läuft die neue Version unter FF 14.0.1 (openSUSE 12.1) mit der 
Revision 517. Ich werde sie daher in meine übernehmen :)

von K. J. (Gast)


Lesenswert?

Hi, so die DemoDB wird jetzt wieder einmal am tag upgedated um 11:00.

mfg

von Udo N. (weinbauer73)


Lesenswert?

Leider nicht viel weiter. Hatte andere Arbeiten vorzuziehen :( Ich hoffe 
doch sehr, das ich diese Woche mal ein paar Stunden wieder daran 
arbeiten werde. Soviel Rückstand ist ja nicht, dass ich es nicht 
schaffen könnte.

von Gelöscht (kami89)


Lesenswert?

K. J. schrieb:
> Hi, so die DemoDB wird jetzt wieder einmal am tag upgedated um 11:00.
>
> mfg

Wunderbar!
Jetzt sehe ich auch dass der Widerstandsrechner funktioniert. Da muss 
wohl irgendwas an meiner Installation faul sein... Neuerdings liegen bei 
mir die Skripte auf einer Samba Freigabe, die dann nach /var/www 
gemountet werden. Vielleicht ist da ja nun irgendwo der Hund begraben...

von K. J. (Gast)


Lesenswert?

Urban B. schrieb:
> K. J. schrieb:
>> Hi, so die DemoDB wird jetzt wieder einmal am tag upgedated um 11:00.
>>
>> mfg
>
> Wunderbar!
> Jetzt sehe ich auch dass der Widerstandsrechner funktioniert. Da muss
> wohl irgendwas an meiner Installation faul sein... Neuerdings liegen bei
> mir die Skripte auf einer Samba Freigabe, die dann nach /var/www
> gemountet werden. Vielleicht ist da ja nun irgendwo der Hund begraben...

Ahm WTF du mountest ne SAMBA Freigabe in nen Webordner ? mal abgesehen 
von den Rechteproblemen, gibt es da noch diverse andere.

von Udo N. (weinbauer73)


Lesenswert?

Nimm statt Samba NFS für die Freigabe.

von Gelöscht (kami89)


Lesenswert?

K. J. schrieb:
> Ahm WTF du mountest ne SAMBA Freigabe in nen Webordner ? mal abgesehen
> von den Rechteproblemen, gibt es da noch diverse andere.

xD ja ich weiss es ist komisch aber eigentlich scheint alles zu 
funktionieren. Dass es sicherheitstechnisch vielleicht nicht optimal ist 
ist mir wurscht, läuft ja alles in meinem privaten LAN.

Der Hintergrund ist folgender:
Ich möchte den Webserver (momentan) am liebsten in einer VM laufen 
lassen, denn ich lagere gerne Software in VMs aus um mein System 
"sauber" zu halten. Die Webseiten an sich (also die Dateien) möchte ich 
aber auf meiner lokalen Festplatte haben, nicht in einer VM (1. möchte 
ich keine Dateien verlieren wenn eine VM kaputt geht (meine lokalen 
Dateien werden täglich gesichert) und 2. ist das Programmieren 
angenehmer wenn sich die Dateien auf meinem eigenen System befinden). Da 
die Webseiten sowieso Teil einer Samba Freigabe sind, dachte ich, ich 
könnte ja den freigegebenen Ordner "www" in der VM einfach per fstab 
nach "var/www" mounten. Dazu noch in der fstab "uid=33,gid=33" setzen 
damit "www-data" Zugriff auf die Dateien hat.

Wie gesagt, eigentlich funktioniert es :-) Ob das Javascript-Problem 
wirklich durch meine komische Konstellation entstanden ist, weiss ich 
nicht. Andere JavaScript Teile funktionieren wunderbar.

Udo Neist schrieb:
> Nimm statt Samba NFS für die Freigabe.

Für all meine Freigaben NFS zu verwenden geht nicht, es gibt noch einen 
Windows PC der auf die Freigaben zugreifen muss. Und Samba und NFS 
parallel zu nutzen finde ich irgendwie blöd ;-)

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
> Für all meine Freigaben NFS zu verwenden geht nicht, es gibt noch einen
> Windows PC der auf die Freigaben zugreifen muss. Und Samba und NFS
> parallel zu nutzen finde ich irgendwie blöd ;-)

Nutze ich hier schon seit Jahren. Was soll daran blöd sein? Man muss ja 
kein YP-Server parallel aufbauen g NFS v4 ist performanter, braucht 
auch nicht unbedingt Kerberos.

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Nutze ich hier schon seit Jahren. Was soll daran blöd sein?

Naja dann ist mein PC irgendwann mehr Server als Workstation^^ Ne ich 
mag es einfach nicht wenn mein Arbeits-PC vollgestopft ist mit Software. 
Daher auch die VMs (ich könnte ja auch Apache auf meinem PC laufen 
lassen, will ich aber nicht). Ich bin auch einfach zu faul all das Zeug 
wieder zu installieren wenn ich mal mein System neu aufsetze. Lieber die 
weniger häufig verwendeten Programme in einer VM installieren, dann 
brauche ich nach einer Neuinstallation des Systems nur noch Virtualbox 
zu installieren.

Aber wenn wirklich Samba an dem JavaScript Problem schuld sein sollte, 
werde ich da natürlich schon noch was unternehmen :-) Momentan hat das 
aber keine Priorität, sonst läuft ja alles so wie es soll.


Übrigens arbeite ich gerade an der ganzen Update-Geschichte von Part-DB. 
Vor allem auch zu den Versionsbezeichnungen habe ich mir Gedanken 
gemacht. Mein Vorschlag wäre, dass ein User zwischen drei Varianten 
wählen können soll: "stable", "unstable" und "svn".
Bei "stable" soll das System nur Updates anzeigen, die als stabil 
gekennzeichnet sind. Bei "unstable" dachte ich, das sollen einfach die 
Release Candidates von der nächsten stabilen Version sein, und bei "svn" 
immer die jeweils aktuelle SVN Revision. Letzteres funktioniert 
vermutlich halt auf vielen Webspaces nicht, ist aber ja auch nicht 
weiter schlimm.
(es gibt aber sogar spezielle PHP-Funktionen um SVN-Sachen erledigen zu 
können [scheinen aber noch experimentell zu sein]. Vielleicht ist auf 
einigen Webservern ja sogar das entsprechende Plugin installiert, dann 
könnte man ein checkout machen ohne ein exec(). )

Eine stabile Version soll aus drei Ziffen bestehen, z.B: "0.2.3".
Eine unstabile Version mit dem Vermerk des RC: "0.2.4 RC3".
Und eine SVN Revision "r567".

Um diese drei Versionsbezeichnungen auch untereinander vergleichen zu 
können (zum entscheiden, welche neuer/älter ist), würde sich anbieten, 
dass die stabilen und unstabilen Versionen auch immer den Vermerk zur 
jeweiligen SVN Revision beinhalten. Also dass z.B. die Version "0.2.3" 
damals die Revision "r456" hatte.

Die Revisionsnummer wäre programmiertechnisch dann eigentlich die 
relevante Information, um Versionen untereinander vergleichen zu können. 
Wenn wir nur mit den "0.2.3"-Bezeichnungen arbeiten würden, könnte es 
sonst mal zu einem Durcheinander kommen. Man stelle sich vor, dass 
jemand von "svn" auf "stable" wechseln möchte. Wie kann dann Part-DB 
entscheiden, welche Updates es runterladen/installieren muss? Es weiss 
ja nichtmal, ob die neuste stabile Version überhaupt neuer ist als die 
aktuell installierte SVN Revision. Arbeiten wir mit den Revisionszahlen, 
ist es für das System kein Problem zu erkennen, ob ein Update verfügbar 
ist oder nicht.

Das würde dann natürlich bedeuten, dass bei jedem Update, das angeboten 
wird, auch die jeweilige Revisionsnummer hinterlegt sein muss. Aber das 
sollte ja nicht weiter stören.

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
>> Nutze ich hier schon seit Jahren. Was soll daran blöd sein?
>
> Naja dann ist mein PC irgendwann mehr Server als Workstation^^ Ne ich
> mag es einfach nicht wenn mein Arbeits-PC vollgestopft ist mit Software.
> Daher auch die VMs (ich könnte ja auch Apache auf meinem PC laufen
> lassen, will ich aber nicht). Ich bin auch einfach zu faul all das Zeug
> wieder zu installieren wenn ich mal mein System neu aufsetze. Lieber die
> weniger häufig verwendeten Programme in einer VM installieren, dann
> brauche ich nach einer Neuinstallation des Systems nur noch Virtualbox
> zu installieren.

Ich hab ein eigenes Netzwerk hier laufen. Mein Server stellt mir alles 
wichtige für die Webprogrammierung zur Verfügung. Wenn schon, dann teste 
ich es in einer realen Umgebung. Eine VM hätte nur den Vorteil, dass man 
fatale Fehler einfach schnell ungeschehen machen kann. Aber wofür hat 
man ja ein tägliches Backup oder kopiert mal schnell die betreffenden 
Dateien unter einen neuen Namen? Aber jeder arbeitet ja anders ;-)

von Udo N. (weinbauer73)


Lesenswert?

Revision 518:
- showdevices.php auf Templates umgestellt
- Anstelle von $currency wird money_format() verwendet und Darstellung 
in der Tabelle angepasst

Mir ist per Zufall die PHP-Funktion money_format() aufgefallen, als ich 
die Zahlendarstellung der Preise vereinheitlichen wollte. Diese Funktion 
kann die Währung anhand von der Umgebungsvariable LC_MONETARY und einem 
Formatstring darstellen. Somit kann auf die Variable $currency 
verzichtet werden.

ToDo: Formatstring anhand von LC_MONETARY aus einem Array entnehmen.

von Udo N. (weinbauer73)


Lesenswert?

Bei meiner Umstellung auf Templates sind mir die doch sehr 
unterschiedliche Formatierungen aufgefallen. Ich habe mir mal ein paar 
Gedanken über ein gemeinsamen Styleguid gemacht. Er sollte so einfach 
wie möglich sein, damit Einsteiger recht schnell damit zurecht kommen.
1
Styleguide --- 28.08.2012 Udo Neist (weinbauer73@gmail.com)
2
3
*** Sprache ***
4
5
- Alle Kommentare sind in Englisch zu verfassen.
6
- Deutsche Kommentare sind entsprechend zu kennzeichnen und möglichst rasch ins englische zu übersetzen.
7
- Kommentare sind nicht überflüssig, sondern notwendig!
8
9
*** Dokumentation ***
10
11
- Einleitende Kommentare für die Funktionsbeschreibung sollten nicht vergessen werden.
12
- Dokumentationssystem wird noch gesucht.
13
- Offizielles Wiki nutzen.
14
15
*** Entwicklung ***
16
17
- PHP 4 ist veraltet und sollte nicht mehr genutzt werden.
18
- Alle neuen Funktionen werden in den Branches zuerst getestet und dann in die offizielle Version übernommen.
19
- Kennzeichnung von stable, unstable und non public (oder ähnlich)-Versionen.
20
21
*** PHP-Script ***
22
23
- Einleitung mit Lizenz
24
- darunter Initiator der Datei mit Datum und Email
25
- darunter Auflistung der Änderungen im folgenden Format:
26
  -  Jahr Email
27
  -  neue Zeile
28
  -  Tabulator und "-"
29
  -  Kurze Beschreibung der Änderung
30
- möglichst eine Auflistung aller Funktionen
31
- Ausgabe von HTML nicht in das Script übernehmen, dazu Templates (vlibTemplate) nutzen.
32
- Eine zentrale Library bindet die 
33
34
*** Einrückungen ***
35
36
- 1 Tabulatorschritt umfasst 5 Spaces.
37
- Öffnende und schliessende geschweifte Klammern in einer eigenen Zeile.
38
- Jeder Block innerhalb geschweifter Klammern um einen Tab einrücken.
39
- Ausnahmen für einzeilige Blöcke. Auf Klammern sollte der Lesbarkeit wegen nicht verzichtet werden.
40
- IF-THEN-ELSE als ternärer Operator ist erlaubt, sollte  möglichst aber nur bei der Zuweisung von Werten verwendet werden.
41
- Arrays oder längere Strings so formatieren, das eine gute Lesbarkeit gewährleistet ist.
42
43
*** Benennungen ***
44
45
- Funktionen werden klein geschrieben und müssen selbst beschreibende Namen tragen.
46
- Trennung der einzelnen Wörter erfolgt mit dem Unterstrich ("_").
47
48
*** Klassen und Funktionen ***
49
50
- Sich wiederholende Funktionen bitte in Klassen auslagern.
51
- Namespaces sind möglich.
52
- Klassen mit dem Konstruktur __construct() für die Prüfung auf Abhängigkeiten der Klasse und eventuell fehlenden Funktionen versehen.
53
- Debug-Funktionen ermöglichen.

Wenn es keine größeren Widersprüche gibt, stelle ich das am Wochenende 
ins PartDB-Wiki.

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Bei meiner Umstellung auf Templates sind mir die doch sehr
> unterschiedliche Formatierungen aufgefallen. Ich habe mir mal ein paar
> Gedanken über ein gemeinsamen Styleguid gemacht.

Gute Idee!

> *** Entwicklung ***
>
> - PHP 4 ist veraltet und sollte nicht mehr genutzt werden.

Spätestens wenn wir unsere Branches in den Trunk übernehmen, ist Part-DB 
auch gar nicht mehr lauffähig mit PHP 4, vor allem wegen dem PDO und den 
Klassen (die sich seit PHP 4 stark verändert haben und eine 
Kompatibilität sehr aufwändig machen würde). Daher ist dann "sollte 
nicht mehr genutzt werden" zu ungenau - es kann gar nicht mehr genutzt 
werden.

> - Alle neuen Funktionen werden in den Branches zuerst getestet und dann
> in die offizielle Version übernommen.

Hmm ich weiss nicht ob das wirklich notwendig ist. Wenn die User ihre 
Part-DB Installationen über die Updatefunktion ganz einfach aktuell 
halten können, wird (hoffentlich) keiner mehr die SVN-Version im Einsatz 
haben (ausser natürlich für die Entwicklung). Daher darf im Trunk 
durchaus auch mal eine Version drin sein, die noch offensichtliche 
Fehler enthält. Ich denke, das ist doch bei SVN eigentlich auch "so 
gedacht", oder?

> - Kennzeichnung von stable, unstable und non public (oder
> ähnlich)-Versionen.

Ich weiss jetzt nicht genau wie du das meinst. Ich würde mir das so 
vorstellen:
- Die Hauptentwicklung geschieht im Trunk
- Nur grössere Änderungen, die lange dauern, oder irgendwelche Tests 
werden in Branches durchgeführt (so wi wir beiden es momentan halt 
machen)
- Von Zeit zu Zeit schauen wir, dass die Version im Trunk möglichst 
stabil läuft. Dann erstellen wir vom Trunk ein Release Candidate und 
geben dieses frei für diejenigen, die bei sich die "unstable" Updates 
installieren.
- Wenn wir der Meinung sind, die aktuelle Version im Trunk ist nun 
stabil, erstellen wir ein Update-Paket und geben dieses als "stable" 
frei.

Zwischen der Herausgabe des ersten Release Candidate bis zur jeweiligen 
stabilen Version sollten natürlich keine grösseren Änderungen mehr 
durchgeführt werden (neue Funktionen usw.). Die behält man besser 
erstmal entweder bei sich auf dem PC oder halt in einem Branch. Nach der 
Herausgabe der stabilen Version kann man dann wieder im Trunk 
herumwerkeln wie man will.

> - Eine zentrale Library bindet die

das verstehe ich nicht :-)

> - 1 Tabulatorschritt umfasst 5 Spaces.

5 Spaces ist aber ziemlich unüblich, oder? 4 wären doch viel 
verbreiteter würde ich meinen.

> - Klassen mit dem Konstruktur __construct() für die Prüfung auf
> Abhängigkeiten der Klasse und eventuell fehlenden Funktionen versehen.

Hmm das verstehe ich auch nicht :-)

> - Debug-Funktionen ermöglichen.

Gute Idee, nur wie macht man das bei PHP am besten? Hat sich da irgend 
ein System eingebürgert? Einfach mit "print" irgendwelche Meldungen 
ausgeben funktioniert ja nicht immer (wenn z.B. eine Meldung innerhalb 
von einem html-<select> ausgegeben wird, wäre sie teilweise gar nicht 
ersichtlich).

Ansonsten bin ich mit dem Styleguide einverstanden.

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
>> *** Entwicklung ***
>>
>> - PHP 4 ist veraltet und sollte nicht mehr genutzt werden.
>
> Spätestens wenn wir unsere Branches in den Trunk übernehmen, ist Part-DB
> auch gar nicht mehr lauffähig mit PHP 4, vor allem wegen dem PDO und den
> Klassen (die sich seit PHP 4 stark verändert haben und eine
> Kompatibilität sehr aufwändig machen würde). Daher ist dann "sollte
> nicht mehr genutzt werden" zu ungenau - es kann gar nicht mehr genutzt
> werden.

Für uns ist es klar, aber vielleicht gibt es noch Neueinsteiger, die 
auch PHP 4 wollen? Ist nur eine Klarstellung.

>> - Alle neuen Funktionen werden in den Branches zuerst getestet und dann
>> in die offizielle Version übernommen.
>
> Hmm ich weiss nicht ob das wirklich notwendig ist. Wenn die User ihre
> Part-DB Installationen über die Updatefunktion ganz einfach aktuell
> halten können, wird (hoffentlich) keiner mehr die SVN-Version im Einsatz
> haben (ausser natürlich für die Entwicklung). Daher darf im Trunk
> durchaus auch mal eine Version drin sein, die noch offensichtliche
> Fehler enthält. Ich denke, das ist doch bei SVN eigentlich auch "so
> gedacht", oder?

Ich habe die Styleguides bewusst so geschrieben, denn es spiegelt die 
aktuelle Situation dar. Wenn später die Update-Funktion auch klappt und 
wir eine neue offzielle Version haben, würde dieser Punkt wegfallen.

>> - Kennzeichnung von stable, unstable und non public (oder
>> ähnlich)-Versionen.
>
> Ich weiss jetzt nicht genau wie du das meinst. Ich würde mir das so
> vorstellen:
> - Die Hauptentwicklung geschieht im Trunk
> - Nur grössere Änderungen, die lange dauern, oder irgendwelche Tests
> werden in Branches durchgeführt (so wi wir beiden es momentan halt
> machen)
> - Von Zeit zu Zeit schauen wir, dass die Version im Trunk möglichst
> stabil läuft. Dann erstellen wir vom Trunk ein Release Candidate und
> geben dieses frei für diejenigen, die bei sich die "unstable" Updates
> installieren.
> - Wenn wir der Meinung sind, die aktuelle Version im Trunk ist nun
> stabil, erstellen wir ein Update-Paket und geben dieses als "stable"
> frei.

Sagt das obige was anderes aus? Nicht das ich wüsste. Uns dürfte es klar 
sein, nur ob alle den Unterschied verstehen? "stable" ist der offizielle 
Teil, "unstable" die vor der Freigabe stehende und "non public" sind 
halt unsere beiden Branches. Oder wie würdest du es nennen? Release 
Candidates würde ich zu den "unstable"-Versionen zählen.

>> - Eine zentrale Library bindet die
>
> das verstehe ich nicht :-)

Na, das nicht jedes Script jede Library und Klasse selbst einbinden 
muss. Derzeit läuft das ja über die lib.php bzw. config.php und erfüllt 
damit die Bedingung.

>> - 1 Tabulatorschritt umfasst 5 Spaces.
>
> 5 Spaces ist aber ziemlich unüblich, oder? 4 wären doch viel
> verbreiteter würde ich meinen.

Bei den meisten Programmen die ich verwende sind 5 voreingestellt. Ich 
hab auch mit 4 keine Probleme. Hauptsache sauber getrennt :-)

>> - Klassen mit dem Konstruktur __construct() für die Prüfung auf
>> Abhängigkeiten der Klasse und eventuell fehlenden Funktionen versehen.
>
> Hmm das verstehe ich auch nicht :-)

Ganz einfach. Die einzelnen Klassen haben untereinander Abhängigkeiten. 
Fehlt eine Funktion, sei eine fehlende Datei im System oder eine falsche 
PHP-Version, so läuft das Script nicht. Genauso ist das mit den Rechten 
im Dateisystem (hatten wir ja schon mit get_svn_revision()), kann man 
dort auch prüfen. Ich meine, wir sollten das schon nutzen.

>> - Debug-Funktionen ermöglichen.
>
> Gute Idee, nur wie macht man das bei PHP am besten? Hat sich da irgend
> ein System eingebürgert? Einfach mit "print" irgendwelche Meldungen
> ausgeben funktioniert ja nicht immer (wenn z.B. eine Meldung innerhalb
> von einem html-<select> ausgegeben wird, wäre sie teilweise gar nicht
> ersichtlich).

Man könnte in den Templates ein Debug-Block hinzufügen, der dort gewisse 
Daten darstellt oder in ein "Logfile" schreibt, welches in einem eigenen 
Fenster regelmäßig per Ajax geladen werden kann.

> Ansonsten bin ich mit dem Styleguide einverstanden.

Gut :-)

Der Styleguide soll Neueinsteigern ein paar kleine Regeln für das 
Projekt aufzeigen, wie wir das ganze Handhaben wollen. Für uns ist das 
meiste selbstverständlich. Ich will euch ja auch nicht bevormunden, nur 
weil ich seit Anfang/Mitte der 1980er programmiere und für meine eigenen 
Projekte entsprechende Regeln versuche einzuhalten, auch wenn sie 
nirgendwo stehen. Es macht aber die Arbeit erträglicher, wenn man nach 
einiger Abwesenheit wieder am Code arbeiten "muss". Sind ja alles nur 
Vorschläge :-)

von Gelöscht (kami89)


Lesenswert?

>>> - Alle neuen Funktionen werden in den Branches zuerst getestet und dann
>>> in die offizielle Version übernommen.
>>
>> Hmm ich weiss nicht ob das wirklich notwendig ist. Wenn die User ihre
>> Part-DB Installationen über die Updatefunktion ganz einfach aktuell
>> halten können, wird (hoffentlich) keiner mehr die SVN-Version im Einsatz
>> haben (ausser natürlich für die Entwicklung). Daher darf im Trunk
>> durchaus auch mal eine Version drin sein, die noch offensichtliche
>> Fehler enthält. Ich denke, das ist doch bei SVN eigentlich auch "so
>> gedacht", oder?
>
> Ich habe die Styleguides bewusst so geschrieben, denn es spiegelt die
> aktuelle Situation dar. Wenn später die Update-Funktion auch klappt und
> wir eine neue offzielle Version haben, würde dieser Punkt wegfallen.

Ach so, ja klar, beim aktuellen Stand passt das natürlich. Irgendwie 
denke ich einfach immer schon an den Moment, wo unsere Branches zur 
stabilen Version werden^^

>>> - Kennzeichnung von stable, unstable und non public (oder
>>> ähnlich)-Versionen.
>>
>> Ich weiss jetzt nicht genau wie du das meinst. Ich würde mir das so
>> vorstellen:
>> - Die Hauptentwicklung geschieht im Trunk
>> - Nur grössere Änderungen, die lange dauern, oder irgendwelche Tests
>> werden in Branches durchgeführt (so wi wir beiden es momentan halt
>> machen)
>> - Von Zeit zu Zeit schauen wir, dass die Version im Trunk möglichst
>> stabil läuft. Dann erstellen wir vom Trunk ein Release Candidate und
>> geben dieses frei für diejenigen, die bei sich die "unstable" Updates
>> installieren.
>> - Wenn wir der Meinung sind, die aktuelle Version im Trunk ist nun
>> stabil, erstellen wir ein Update-Paket und geben dieses als "stable"
>> frei.
>
> Sagt das obige was anderes aus? Nicht das ich wüsste. Uns dürfte es klar
> sein, nur ob alle den Unterschied verstehen? "stable" ist der offizielle
> Teil, "unstable" die vor der Freigabe stehende und "non public" sind
> halt unsere beiden Branches. Oder wie würdest du es nennen? Release
> Candidates würde ich zu den "unstable"-Versionen zählen.

OK dann hast du es so gemeint wie ich. Deshalb habe ich ja geschrieben 
"Ich weiss jetzt nicht genau wie du das meinst". Dein Wort 
"kennzeichnen" hat mich verwirrt, ich wusste nicht ob du damit irgendwie 
eine explizite Kennzeichnung der Revisionen meinst oder so. Die 
eigentliche "Kennzeichnung" wird aber ja erst beim Bereitstellen von 
Updates durchgeführt, nicht vorher und nicht nachher. Also haben 
schlussendlich nur die Updatepakete eine solche Kennzeichnung, in den 
branches und im trunk gibts sowas nicht. Aber ich glaube jetzt wir 
meinen beide dasselbe, wollte nur sichergehen :-)

>>> - Eine zentrale Library bindet die
>>
>> das verstehe ich nicht :-)
>
> Na, das nicht jedes Script jede Library und Klasse selbst einbinden
> muss. Derzeit läuft das ja über die lib.php bzw. config.php und erfüllt
> damit die Bedingung.

Warum soll nicht jedes Skript jede benötigte Library und Klasse selber 
einbinden? Das ist doch die einzig "saubere" Lösung. Nur das Includen, 
was auch wirklich benötigt wird, nicht mehr und nicht weniger. Aber 
natürlich alles hierarchisch, man included nur die Klasse die man auch 
benötigt, die Abhängigkeiten dieser Klasse werden dann natürlich durch 
diese Klasse selber eingebunden.

>>> - 1 Tabulatorschritt umfasst 5 Spaces.
>>
>> 5 Spaces ist aber ziemlich unüblich, oder? 4 wären doch viel
>> verbreiteter würde ich meinen.
>
> Bei den meisten Programmen die ich verwende sind 5 voreingestellt. Ich
> hab auch mit 4 keine Probleme. Hauptsache sauber getrennt :-)

Interessant, habe noch nie 5 Spaces gesehen, darum war ich so "verwirrt" 
:-)

>>> - Klassen mit dem Konstruktur __construct() für die Prüfung auf
>>> Abhängigkeiten der Klasse und eventuell fehlenden Funktionen versehen.
>>
>> Hmm das verstehe ich auch nicht :-)
>
> Ganz einfach. Die einzelnen Klassen haben untereinander Abhängigkeiten.
> Fehlt eine Funktion, sei eine fehlende Datei im System oder eine falsche
> PHP-Version, so läuft das Script nicht. Genauso ist das mit den Rechten
> im Dateisystem (hatten wir ja schon mit get_svn_revision()), kann man
> dort auch prüfen. Ich meine, wir sollten das schon nutzen.

Ah jetzt habe ich verstanden was du meinst. Ob es Sinn macht, diese 
Sachen in den Konstruktor aufzunehmen, darüber lässt sich diskutieren. 
Steht wirklich irgend eine Funktion nicht zur Verfügung, wäre die ganze 
Klasse dann ja nicht mehr funktionsfähig. Wird die Überprüfung erst 
durchgeführt wenn eine solche Funktion gebraucht wird (oder gar nicht 
überprüft...) dann fehlt nur diese eine Funktionalität der Klasse, der 
Rest davon kann weiterhin funktionieren.

>>> - Debug-Funktionen ermöglichen.
>>
>> Gute Idee, nur wie macht man das bei PHP am besten? Hat sich da irgend
>> ein System eingebürgert? Einfach mit "print" irgendwelche Meldungen
>> ausgeben funktioniert ja nicht immer (wenn z.B. eine Meldung innerhalb
>> von einem html-<select> ausgegeben wird, wäre sie teilweise gar nicht
>> ersichtlich).
>
> Man könnte in den Templates ein Debug-Block hinzufügen, der dort gewisse
> Daten darstellt oder in ein "Logfile" schreibt, welches in einem eigenen
> Fenster regelmäßig per Ajax geladen werden kann.

Ah ja das wäre genial! Und wie würdest du dann die Debug-Meldungen an 
diese Seite übermitteln? Irgendwie mit einer globalen Variable? Mit 
$_SESSION?

> Ich will euch ja auch nicht bevormunden, nur
> weil ich seit Anfang/Mitte der 1980er programmiere und für meine eigenen
> Projekte entsprechende Regeln versuche einzuhalten, auch wenn sie
> nirgendwo stehen. Es macht aber die Arbeit erträglicher, wenn man nach
> einiger Abwesenheit wieder am Code arbeiten "muss". Sind ja alles nur
> Vorschläge :-)

Ja klar, solche Styleguides sind immer eine gute Sache, gerade bei 
OpenSource Projekten. Sofern es nicht gerade ein völlig schräger Style 
ist, bin ich dafür :-)

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
> Ach so, ja klar, beim aktuellen Stand passt das natürlich. Irgendwie
> denke ich einfach immer schon an den Moment, wo unsere Branches zur
> stabilen Version werden^^

Das habe ich bemerkt :-) Es ist ein Ziel, aber noch nicht mal im Ansatz 
sind wir beide so weit.

> OK dann hast du es so gemeint wie ich. Deshalb habe ich ja geschrieben
> "Ich weiss jetzt nicht genau wie du das meinst". Dein Wort
> "kennzeichnen" hat mich verwirrt, ich wusste nicht ob du damit irgendwie
> eine explizite Kennzeichnung der Revisionen meinst oder so. Die
> eigentliche "Kennzeichnung" wird aber ja erst beim Bereitstellen von
> Updates durchgeführt, nicht vorher und nicht nachher. Also haben
> schlussendlich nur die Updatepakete eine solche Kennzeichnung, in den
> branches und im trunk gibts sowas nicht. Aber ich glaube jetzt wir
> meinen beide dasselbe, wollte nur sichergehen :-)

Im SVN müssen wir das nicht, nur nach aussen sollte es irgendwie klar 
sein :-)

> Warum soll nicht jedes Skript jede benötigte Library und Klasse selber
> einbinden? Das ist doch die einzig "saubere" Lösung. Nur das Includen,
> was auch wirklich benötigt wird, nicht mehr und nicht weniger. Aber
> natürlich alles hierarchisch, man included nur die Klasse die man auch
> benötigt, die Abhängigkeiten dieser Klasse werden dann natürlich durch
> diese Klasse selber eingebunden.

Dann wirst du über kurz oder lang das Problem bekommen, jede 
Abhängigkeit in den einzelnen Scripten selbst zu verwalten. Durch den 
Autoloader, den ich bereits in der lib.php drin habe, werden die Klassen 
selbstständig beim ersten Aufruf geladen. So ist das Problem weg. 
Ansonsten gibt es ja fast keine weiteren Dateien mehr, die eingebunden 
werden müssten.

>>>> - 1 Tabulatorschritt umfasst 5 Spaces.
>>>
>>> 5 Spaces ist aber ziemlich unüblich, oder? 4 wären doch viel
>>> verbreiteter würde ich meinen.
>>
>> Bei den meisten Programmen die ich verwende sind 5 voreingestellt. Ich
>> hab auch mit 4 keine Probleme. Hauptsache sauber getrennt :-)
>
> Interessant, habe noch nie 5 Spaces gesehen, darum war ich so "verwirrt"
> :-)

In meinem Editor ist nur ein Tab eingestellt. Ob ein Tab 3, 4 oder 5 
Leerzeichen umfasst, ist da nur eine Darstellungssache. Ich denke, wir 
sollten da 3 bis 5 Leerzeichen reinschreiben. Weniger oder mehr macht 
die Sache dann zu unübersichtlich (hab auch mal was von 8 Leerzeichen 
pro Einrückung gelesen).

> Ah jetzt habe ich verstanden was du meinst. Ob es Sinn macht, diese
> Sachen in den Konstruktor aufzunehmen, darüber lässt sich diskutieren.
> Steht wirklich irgend eine Funktion nicht zur Verfügung, wäre die ganze
> Klasse dann ja nicht mehr funktionsfähig. Wird die Überprüfung erst
> durchgeführt wenn eine solche Funktion gebraucht wird (oder gar nicht
> überprüft...) dann fehlt nur diese eine Funktionalität der Klasse, der
> Rest davon kann weiterhin funktionieren.

Es gibt aber auch Abhängigkeiten, die man an x Stellen benötigt. Eine 
zentrale Überprüfung lohnt sich dann schon. Man kann sich aber streiten, 
ob man das will. Ich werde es zumindest in meinen Klassen einbauen, denn 
ich benötige vlibTemplate und eine Fehlerbehandlungsklasse. Ich erzeuge 
nicht schon am Anfang ein Objekt dieser Klassen, sondern kurz bevor ich 
es brauche. Fehlt die Klasse/Funktion schon am Anfang, brauche ich alles 
weitere gar nicht auszuführen. Somit gäbe es auch keine Probleme mit 
fehlerhaften Daten. Meine Meinung ist halt, dass das System nicht an 
fehlenden Funktionen hängen bleiben darf, sondern nur bei echten Fehlern 
im System. Nichts ist peinlicher, wenn man eine Abhängigkeit vergisst. 
Oder kennst du jede PHP-Installation auf Erden? Ich nicht ;-)

> Ah ja das wäre genial! Und wie würdest du dann die Debug-Meldungen an
> diese Seite übermitteln? Irgendwie mit einer globalen Variable?

Landet alles in der Datenbank. Das "Logfile" wird alle x Sekunden von 
einem Javascript per XMLHttpRequest geladen und angezeigt. Im Prinzip 
habe ich das schon in einem ganz einfach Chatsystem so gemacht :D

> Ja klar, solche Styleguides sind immer eine gute Sache, gerade bei
> OpenSource Projekten. Sofern es nicht gerade ein völlig schräger Style
> ist, bin ich dafür :-)

Keine Sorge, sowas mag ich auch nicht :-) Zudem sollen ja alle was davon 
haben, nicht ein durchgeknallter Freak allein lach

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Dann wirst du über kurz oder lang das Problem bekommen, jede
> Abhängigkeit in den einzelnen Scripten selbst zu verwalten. Durch den
> Autoloader, den ich bereits in der lib.php drin habe, werden die Klassen
> selbstständig beim ersten Aufruf geladen. So ist das Problem weg.
> Ansonsten gibt es ja fast keine weiteren Dateien mehr, die eingebunden
> werden müssten.

Ich sehe momentan aber den Vorteil der Autoload-Funktion nicht. Sieht 
man in deinem Code auch irgendwo ein Aufruf dieser Funktion? Konnte beim 
Durchstöbern gerade keiner finden. Aber schlussendlich schreibst du dann 
einfach ein "__autoload('error')" statt einem 
"include_once('error.php')", wo ist da der Vorteil?

Also ich finde, es gehört "zum guten Ton", dass man am Anfang jeder 
Datei genau diejenigen includes einfügt, die gebraucht werden. Nicht 
mehr und nicht weniger, und auch nicht mitten in einer Datei drin. Halt 
so wie in C/C++, das ist ein ganz simples aber sauberes System.

Udo Neist schrieb:
> In meinem Editor ist nur ein Tab eingestellt. Ob ein Tab 3, 4 oder 5
> Leerzeichen umfasst, ist da nur eine Darstellungssache. Ich denke, wir
> sollten da 3 bis 5 Leerzeichen reinschreiben. Weniger oder mehr macht
> die Sache dann zu unübersichtlich (hab auch mal was von 8 Leerzeichen
> pro Einrückung gelesen).

Also wir verwenden ja Leerzeichen und nicht Tabs, dann ist es ja nicht 
mehr nur eine Darstellungssache. Ja, 8 Leereichen werden glaube ich im 
Linux Kernel verwendet :-) Ich würde vorschlagen wir nehmen 4 Zeichen, 
das ist nicht nur optisch ansprechend sondern auch ein weit verbreiteter 
"Standard" (zumindest habe ich den Eindruck, dass es weit verbreitet 
ist).

Udo Neist schrieb:
> Es gibt aber auch Abhängigkeiten, die man an x Stellen benötigt. Eine
> zentrale Überprüfung lohnt sich dann schon. Man kann sich aber streiten,
> ob man das will. Ich werde es zumindest in meinen Klassen einbauen, denn
> ich benötige vlibTemplate und eine Fehlerbehandlungsklasse. Ich erzeuge
> nicht schon am Anfang ein Objekt dieser Klassen, sondern kurz bevor ich
> es brauche. Fehlt die Klasse/Funktion schon am Anfang, brauche ich alles
> weitere gar nicht auszuführen. Somit gäbe es auch keine Probleme mit
> fehlerhaften Daten. Meine Meinung ist halt, dass das System nicht an
> fehlenden Funktionen hängen bleiben darf, sondern nur bei echten Fehlern
> im System. Nichts ist peinlicher, wenn man eine Abhängigkeit vergisst.
> Oder kennst du jede PHP-Installation auf Erden? Ich nicht ;-)

Theoretisch könnten wir das dann auch mit ein Admin-Tool erledigen. Dann 
muss es nicht jedesmal beim Anlegen eines Objektes geprüft werden. Dort 
bekommt man dann direkt einen Überblick, welche Funktionen nicht zur 
Verfügung stehen, und was die Konsequenzen davon sind. Ist z.B. kein 
Modul für Zip-Archive vorhanden, funktioniert das System trotzdem, nur 
die Updatefunktion läuft dann halt nicht, und das könnte dann das 
Admin-Tool dem Benutzer mitteilen.

Ich dachte auch schon an ein Admin-Tool, bei dem man die Dateirechte der 
Systemdateien überprüfen kann (falsche Rechte stellen ja ein 
Sicherheitsrisiko dar). z.B. bei CMS Systemen gibts ja häufig nach dem 
Installieren eine Warnung wenn irgendwelche Zugriffsrechte nicht 
stimmen.

Dieses Admin-Tool könnte man vielleicht auch gleich nach jedem Update 
anzeigen lassen, um gleich überprüfen zu können ob alles notwendige 
vorhanden ist und die Dateirechte stimen.

Udo Neist schrieb:
> Landet alles in der Datenbank. Das "Logfile" wird alle x Sekunden von
> einem Javascript per XMLHttpRequest geladen und angezeigt. Im Prinzip
> habe ich das schon in einem ganz einfach Chatsystem so gemacht :D

Ah, ja, also eine Tabelle "debug_logs" o.ä. anlegen, in der dann alle 
debug Meldungen landen? Das wäre genial!

Ach ja, als ich an meinen Klassen weiterarbeiten wollte, ist mir in den 
Sinn gekommen dass ja noch das Datenbankupdate für das neue 
Preis/Lieferantensystem fehlt, weisst du noch? :-)

von Gelöscht (kami89)


Lesenswert?

Urban B. schrieb:
> Ah, ja, also eine Tabelle "debug_logs" o.ä. anlegen, in der dann alle
> debug Meldungen landen? Das wäre genial!

Das habe ich nun bei mir bereits eingebaut, da ich dieses Feature extrem 
gut gebrauchen kann beim programmieren der Klassen. Ist zwar erstmal nur 
mit HTML gebaut, aber das kann man auch später noch durch JavaScript 
ersetzen. Funktionieren tuts mit HTML auch einwandfrei.

Ich wollte dir das nur schnell schreiben, nicht dass du auch noch sowas 
baust.

Jetzt brauche ich nur noch einen dritten Bildschirm um dort die 
Debug-Meldungen anzuzeigen :-)

von Udo N. (weinbauer73)


Lesenswert?

Urban B. schrieb:
> Ich sehe momentan aber den Vorteil der Autoload-Funktion nicht. Sieht
> man in deinem Code auch irgendwo ein Aufruf dieser Funktion? Konnte beim
> Durchstöbern gerade keiner finden. Aber schlussendlich schreibst du dann
> einfach ein "__autoload('error')" statt einem
> "include_once('error.php')", wo ist da der Vorteil?

Aus der lib.php:
1
function __autoload($classname) {
2
    if ( $classname == '_exception' ) $classname = 'error';
3
    include_once(strtolower($classname).".php");
4
}

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

> Also ich finde, es gehört "zum guten Ton", dass man am Anfang jeder
> Datei genau diejenigen includes einfügt, die gebraucht werden. Nicht
> mehr und nicht weniger, und auch nicht mitten in einer Datei drin. Halt
> so wie in C/C++, das ist ein ganz simples aber sauberes System.

Was ist das anderes, als wenn ganz oben eine einzelne Library 
eingebunden wird, in dem alle Includes stattfinden? Wenn du in jede 
Datei die ganzen Includes schreibst, dann nimm include_once() bzw. 
require_once(), sonst bekommst du u.U. Probleme mit doppelt 
eingebundenen Dateien!

Ich hab in deinem Branch noch nicht gesehen, wieviele Includes/Requires 
du machen musst. __autoload() reduziert zumindest die vielen Includes 
der Klassen.

> Udo Neist schrieb:
> Also wir verwenden ja Leerzeichen und nicht Tabs, dann ist es ja nicht
> mehr nur eine Darstellungssache. Ja, 8 Leereichen werden glaube ich im
> Linux Kernel verwendet :-) Ich würde vorschlagen wir nehmen 4 Zeichen,
> das ist nicht nur optisch ansprechend sondern auch ein weit verbreiteter
> "Standard" (zumindest habe ich den Eindruck, dass es weit verbreitet
> ist).

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. Ich bin aber nicht päpstlicher als der Papst und habs auf 4 
Leerzeichen umgestellt :)

> Theoretisch könnten wir das dann auch mit ein Admin-Tool erledigen. Dann
> muss es nicht jedesmal beim Anlegen eines Objektes geprüft werden. Dort
> bekommt man dann direkt einen Überblick, welche Funktionen nicht zur
> Verfügung stehen, und was die Konsequenzen davon sind. Ist z.B. kein
> Modul für Zip-Archive vorhanden, funktioniert das System trotzdem, nur
> die Updatefunktion läuft dann halt nicht, und das könnte dann das
> Admin-Tool dem Benutzer mitteilen.

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.

PHP ist deutlich anders als C/C++, auch wenn es ähnliche Konzepte 
mitbringt. Was bei C/C++ üblich ist, ist nicht unbedingt auch die 
richtige Vorgehensweise bei PHP. In C/C++ ist der Sprach- und 
Funktionsumfang genormt. Einige Funktionen sind nicht in PHP selbst, 
sondern per PEAR eingebunden oder sind noch als experimentell 
gekennzeichnet und daher fraglich. So verhält es sich derzeit mit 
money_format(), welches ich benutze. Fehlt es, so bilde ich es nach. Es 
ist hilfreich, auch mal bei php.net die Kommentare zu lesen ;-)

> Ich dachte auch schon an ein Admin-Tool, bei dem man die Dateirechte der
> Systemdateien überprüfen kann (falsche Rechte stellen ja ein
> Sicherheitsrisiko dar). z.B. bei CMS Systemen gibts ja häufig nach dem
> Installieren eine Warnung wenn irgendwelche Zugriffsrechte nicht
> stimmen.

Das hatte ich als repair.ups-Script in meinem Updatesystem bereits 
vorgesehen :-)

Urban B. schrieb:
> Das habe ich nun bei mir bereits eingebaut, da ich dieses Feature extrem
> gut gebrauchen kann beim programmieren der Klassen. Ist zwar erstmal nur
> mit HTML gebaut, aber das kann man auch später noch durch JavaScript
> ersetzen. Funktionieren tuts mit HTML auch einwandfrei.

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.

von b.r (Gast)


Lesenswert?

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?

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?

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

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

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.

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.

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.

So. Das wars erstmal.

Grüße
b.r

von b.r (Gast)


Lesenswert?

b.r schrieb:
> 1. Es wäre mal an der Zeit einen neuen Thread aufzumachen. Zwecks
> besserer Ladezeiten und vielleicht auch einem aussagekräftigeren
> Threadtitel?
Da mach ich mal die Ingrid.
Hier geht's (hoffentlich) weiter:
Beitrag "Lagerverwaltung Part-DB V0.2.2"

Also nochmal, für alle die es erst beim zweiten Mal gelesen haben:
Neue Beiträge zum Thema bitte hier abliefern:
Beitrag "Lagerverwaltung Part-DB V0.2.2"

Grüße
b.r

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

von Udo N. (weinbauer73)


Lesenswert?

Antwort siehe neuen Thread Beitrag "Lagerverwaltung Part-DB V0.2.2"

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

b.r schrieb:
> Es wäre mal an der Zeit einen neuen Thread aufzumachen.
Und Udo Neist schrieb:
> Antwort siehe neuen Thread Beitrag "Lagerverwaltung Part-DB V0.2.2"

Wenn das Konsens ist, schlage ich vor, diesen Thread von einem Admin 
schließen zu lassen, sonst wird's noch unübersichtlicher. Nach dem 
Thread Beitrag "Teile-Verwaltung für elektronische Bauteile" zur 
"Part-db Lagerverwaltung" ist das nämlich mindestens schon der 
dritte Thread.

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

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 Uhu U. (uhu)


Lesenswert?

Wo findet man denn das aktuelle Installationspaket?

von Gelöscht (kami89)


Lesenswert?

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

Bitte nicht mehr diesen Thread hier benutzen. Die Antwort habe ich hier 
gepostet: Beitrag "Re: Lagerverwaltung Part-DB V0.2.2"

von Uhu U. (uhu)


Lesenswert?

Dann sollte man diesen Thread vielleicht mit einem Vorhängeschloß 
versehen.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Getan.

Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.