SQL Lagersystem für Bauteile erstellen

ok, könntest du mir das bitte nochma beispielhaft an meiner abfrage erklären? möchte das gerne für den Typ und die Bauteilbezeichnung anwenden. dass ich z.b. nur "Mikro" eingeben muss und der sucht mir trotzdem alle MIKROcontroller raus.

PHP:
$filter = "SELECT * FROM bestand WHERE Typ = '$Typ' || Anzahl >= '$minAnzahl' && Anzahl <= '$maxAnzahl' || Bezeichnung = '$Bauteil' || ID = '$ID'";

#2.
wenn die übergebene ID nicht exisitert bleibt einfach die tabelle leer.

#3.
was ist ne integer(long) ID, und was hat die für vorteile gegenüber meiner -normalen- ID? ich will die ID ja als nen strichcode ausdrucken und auf die packung kleben - ist das dann noch kompatibel?

#4.
was für nen vorteil habe ich, wenn ich das nicht mit echo mache? ausserdem muss ich doch dann um die variablen ausgeben zu können eh wieder nen <?php ... ?> machen ...

#5.
das mit der min/max Anzahl dient schon dazu um einen bereich festzulegen... "alle bauteile mit einem bestand von ... bis ... " - ich hab die bedingung von minAnzahl und maxAnzahl ja &&-Verknüpft. ausserdem hab ich auch noch nen extra-check, dass die max-anzahl nie kleiner als die minanzahl eingetragen werden kann.
 
Ne stink normale ID die nichts mit dem Produkt zu tun hat.

Zum min max das ist zwar mit && verknüpft allerdings der rest verordert was das ganze aushebelt.
Zu dem ?> <?php damit sparst dir tipparbeit ;)
Performance ist da nebensächlich.
Außerdem ist es leichter lesbar vermutlich hast dann auch synthax highlighting von deinem Editor was bei der anderen Version nicht gegeben ist. (vermutlich jedenfalls)
 
danke für den link zur volltextsuche, werde das ma machen.

@Funart
wegen der min/max Anzahl geschichte nochmal: du meinst, weil ich die anderen filtermöglichkeiten alle ODER-verknüpfe hab ich im grunde genommen die ergebnissmöglichkeiten nicht eingeschränkt, sondern erweitert, oder? - das is natürlich kontra-produktiv :D allerdings kann ich mir so zur gleichen zeit ein ganz bestimmtes bauteil und alle bauteile mit einem bestand von X bis Y anzeigen lassen ;) - its no bug, its a feature^^
 
Das Query macht folgendes
Gesucht ist Typ="abc" min=3 max=10
Dann würde dir das Query auch Typ="abc" und wert=100 ausspucken weil das min max da einfach vollständig ausgehebelt ist.

Vielleicht willst du folgendes:
Select * From bestand b where Anzahl >= '$minAnzahl' && Anzahl <= '$maxAnzahl' && (typ='$typ' ||Bezeichnung = '$Bauteil' || ID = '$ID')
 
aber wenn ich jetzt bei der suche einige felder garnicht ausfülle erhalte ich doch garkeine ausgabe, oder?
 
Ne ehrlich gemeinte Frage:
Ist das eine Art von Hausaufgabe.
Wenn nein dann lern erst einmal Grundlagen, bevor du etwas machst das verwendet wird.
 
ich würds nicht als hausaufabe bezeichnen. aber da das lagersystem grundsätzlich schonmal funktioniert bin ich ja nicht ganz bei 0 ;) hab leider wenig erfahrung mit php/mysql ... sonst sitz ich eher an Assembler und programmiere pic-µController ...
 
... Will ja nichts sagen aber:

was halt schwer werden könnte -find ich zumindest- ist, dass wenn man ein neues bauteil in die datenbank eingeben will und man für dieses dann ne komplett neue kategorie zum einsortieren brauchr, diese kategorie ja auch erstellt werden muss, aber möglichst ohne nochmal manuell was an den scripten/tabellen ändern zu müssen.

Also bei 0. 11Tage vergangen und es läuft immer noch nichts wirklich wie es soll.

Du kannst ja mal folgendes machen:

Schreibe auf einen Zettel was Du machen möchtest, und überlege was für Schritte nötig sind um ans Ziel zu kommen.
Also für eine DB Ausgabe als Beispiel:

->Eine Seite für das Formular
->Eine Seite die, die Daten verarbeitet
->Wie verarbeite ich die Daten
->Wie prüfe ich die Daten
->Wie verarbeite ich die Daten
etc pp
->Wie Baue ich eine Verbindung auf
->Wie greife ich drauf zu
->etc

So kannst Du Dich einlesen wenn Du was nicht weißt und hast nicht tausend Baustellen und weißt dann nach her was getan werden muss.

Wie Funart schon sagte, versuche Dich erst einwenig einzulesen!

Hilfe wirst Du immer bekommen, musst nur versuchen dass Problem selbst zu lösen und dann Deinen Lösungsansatz postest!
 
Dein primäres Problem ist das du gleichzeitig 3 sprachen verwendest und du keinen Davon beherrscht.
(Um sie zu nennen: HTML / PHP / SQL)
Und wie ich finde ist PHP nicht die optimale sprache um Programmier technisch sinnvoll einzusteigen.

Grundlegend solltest du zuerst einmal die Domänen object auf nem Blatt Papier aufzeichnen und danach Methoden schreiben die Create Update Delete ermöglichen.
Die kannst dann auf den ganzen Seite verwenden (aus dennen wohl die Seite dann später bestehen soll)
 
hm ... denke du hast recht :/ - die "Papier und Bleistift"-Methode ist wohl immer noch die beste :D naja, frisch ans werk^^
 
Ich sitz gerade da und muss eine hypothetische Architektur für ein Browsergame entwerfen.
Bis ich damit fertig bin liegt hier wahrscheinlich ein Stappel mit ein paar dutzend Blatt Papier.
 
Das Query macht folgendes
Gesucht ist Typ="abc" min=3 max=10
Dann würde dir das Query auch Typ="abc" und wert=100 ausspucken weil das min max da einfach vollständig ausgehebelt ist.

Vielleicht willst du folgendes:
Select * From bestand b where Anzahl >= '$minAnzahl' && Anzahl <= '$maxAnzahl' && (typ='$typ' ||Bezeichnung = '$Bauteil' || ID = '$ID')

Hast du es mal mit:
PHP:
Select * From bestand b where Anzahl BETWEEN '$minAnzahl' AND Anzahl <= '$maxAnzahl' AND (typ='$typ' OR Bezeichnung = '$Bauteil' OR ID = '$ID')
probiert?
 
ne, noch nicht. ich versuchs später ma, im moment keine zeit. was mich aber irgendwie noch wundert: wieso schreibt ihr im codebeispiel immer " Select * From bestand b where ... " ?! das "bestand" ist doch bereits der tabellen name, wozu noch das b?
 
Eigentlich mach ich das Automatisch, wennst Queries hast die über mehr als eine Tabelle gehen kannst das b dann dazu verwenden um anzugeben von welchem table die column kommt.
 
ah, ok. danke :)
 
Hallo Oluxinus,
habe eine Frage zu deinem Projekt. Leider bin ich noch ganz neu im Forum und kann noch keine persönlichen Nachrichten verschicken.
Wäre nett, wenn du mich anschreiben könntest.
Liebe Grüße und ich hoffe es ist nicht zu viel Spam
Ulli
 
Black_Panter schrieb:
@Olunixus: Schon klar, aber wenn die Bauteilbezeichnung eindeutig ist, dann kann man sich die ID sparen. Mein Datenbanken prof würd dir btw. den Kopf dafür abreißen wenn du künstliche IDs verwendest ;)

Das kann ich absolut nicht unterschreiben.
Der einzige Vorteil, der sich durch das Verwenden eines Nutzdaten enthaltenen Feldes als primären Schlüssel ergibt ist, dass man sich den Speicherplatz des ID-Feldes spart.
Das war dann aber auch schon alles.
Ein praktischer Vorteil ergibt sich daraus nicht, eher ganz im Gegenteil.
Das Suchen eines Integers ist immer schneller als das Suchen nach einem String.
Zusätzlich belegter Platz eines Integerfeldes ist gering (4 bzw. 8 Byte pro Datensatz, das sind nicht mal 4 bzw. 8 MiBi pro 1 Millionen Datensätze.) und bei aktuellen Speicherdimensionen und -preisen zu vernachlässigen.

Davon abgesehen sind die Implikationen wegen der Verwendung eines Nutzdaten enthaltenen Feldes als primären Schlüssel potentiell katastrophal!
Allein die Frage "Was machst du, wenn du die betroffenen Nutzdaten ändern musst?" zieht schon einen beachtlichen Rattenschwanz hinter sich her.
Neu anlegen, Referenzen updaten und den alten Datensatz löschen? Nicht löschen? Referenzen nicht updaten?
Und das sind alles Themen, die in den meisten Fällen nicht von der Daten haltenden Ebende beantwortet werden sollten und oft auch gar keine einheitliche Antwort haben.
Und was is los, wenn diese Nutzdaten dann doch irgendwann mal nicht mehr eindeutig sein dürfen?

Man darf nicht vergessen:
Die Leute die dich in deiner theoretischen Ausbildung (ganz egal ob Studium, Schule o.ä.) gelehrt haben (oder immer noch lehren), haben in vielen Fällen keine relevante praktische Erfahrung und wenn doch, dann ist die um Jahre, wenn nicht sogar Jahrzehnte, veraltet!

Wissen aus einer theoretischen Ausbildung dient maximal als Orientierung für eine praktische Anwendung, nicht mehr.


Edit:
Uh, das Thema is ja schon älter... naja, was solls. :p
 

Ähnliche Themen

Zurück
Oben