Zitat von nikosch
Beitrag anzeigen
Ankündigung
Einklappen
Keine Ankündigung bisher.
[Erledigt] Typnummer Generator
Einklappen
Neue Werbung 2019
Einklappen
X
-
Ich bin mir nicht sicher, kann es auch nicht testen, aber erhaelst du mit folgender Ausgabe eine Dezimalzahl oder vielleicht sogar schon das B?
echo 'A' + 1;
Einen Kommentar schreiben:
-
Zitat von Sirke Beitrag anzeigenBestehen deine Typnummern als IMMER aus vier Blöcken mit je drei Zeichen oder wie schaut das Format aus, dass du die so merkwürdig speichern kannst!
Wenn du in der Datenbank nur eine Liste von Typnummern hast und mit LIKE und Wildcard nach Nummern suchst, bekommst du alle gleich beginnenden Typnummern im Ergebnis! Diese Typnummern kannst du dann sortieren oder nach der größten Nummer suchen. Der Code ist in etwa der selbe wie zuvor, nur dass du nun bereits in einem Array alle entsprechenden Typnummern vorliegen hast und nicht für jede eine neue Abfrage benötigst.
Eine genauere Angabe des Formates der Typnummern würde sehr helfen, damit man weiß, wann wo wie und warum hochgezählt würde und was ein Index ist und so weiter...
150 44C5 E
150 44A5 E
150 44A3 E B
150 44A3 E C
150 44C3 E A
oder:
400 140 E A
400 34C E
400 34C E A
400 34C E B
400 14C E
150 44A3 E B
oder:
150 38B K36
150 38B K36 A
150 38B K36 B
150 38B K36 C
Vielleicht lässt sich daran erkennen wo mein Problem liegt.
Auch die Leerstellen sind wichtig.
In der vorherigen Antwort denke konnte das Problem besser beschreiben.
Danke für deine Antwort.
Einen Kommentar schreiben:
-
Zitat von robydog Beitrag anzeigenalso wenn ich dich richtig verstanden habe geht es dir darum dass wenn eine Zahl doppelt vorkommt diese ein A hinten dran gesetzt bekommen soll... falls diese doppelte zahl mit A auch schon vorhanden ist sollte B kommen usw
ist nur ein denkanstoss weiss jetzt nicht was die anderen davon halten... aber warum erstellt du nicht einen String mit dem Alphabet so wie du es haben möchtest. Dann wenn ermittelt wurde ob die Zahl schon vorhanden ist nimmst du den ersten buchstaben aus dem array... wenn A nun schon vorhanden ist suchst du im String nach A und nimmst den nächsten buchstaben aus dem String
Bei mir hackts nur mit den Verzweigungen, ich weiss nicht wie ich dieses automatische hochzählen hinbekomme, um dann wieder zu vergleichen.
PHP-Code:$res = mysql_query(" Select `Typnummer` FROM TP WHERE Typnummer = '$Typnummer' order by ID desc ");
PHP-Code:while($value = mysql_fetch_array($res)){
if ($value["kpl"] != $Typnummer ) {
Falls nicht vorhanden speichere so ab wie geschrieben...
PHP-Code:else{
$Typnummer = "$Typnummer .$xxx -> hier Index anhängen";
}
}
Falls dem so wäre:
irgendwie den Index erhöhen und dann wieder anhängen und wieder prüfen...
Was eine Mühle!!!
Ich hoffe auf eure Hilfe...
Einen Kommentar schreiben:
-
Und wenn du mit Buchstaben rechnen wuerdest?
Ich bin mir nicht sicher, kann es auch nicht testen, aber erhaelst du mit folgender Ausgabe eine Dezimalzahl oder vielleicht sogar schon das B?
Code:echo 'A' + 1;
Dann liest du zunaechst alle Zeichenketten sortiert aus (s. Sirkes Vorschlag) und pickst dir die "groesste" Zeichenkette heraus und extrahierst das letzte Zeichen und addierst 1.
So ganz verstehe ich dein Vorgehen aber nicht, kann sein, dass ich gerade Unsinn erzaehle.
Gruss
Einen Kommentar schreiben:
-
also wenn ich dich richtig verstanden habe geht es dir darum dass wenn eine Zahl doppelt vorkommt diese ein A hinten dran gesetzt bekommen soll... falls diese doppelte zahl mit A auch schon vorhanden ist sollte B kommen usw
ist nur ein denkanstoss weiss jetzt nicht was die anderen davon halten... aber warum erstellt du nicht einen String mit dem Alphabet so wie du es haben möchtest. Dann wenn ermittelt wurde ob die Zahl schon vorhanden ist nimmst du den ersten buchstaben aus dem array... wenn A nun schon vorhanden ist suchst du im String nach A und nimmst den nächsten buchstaben aus dem String
Einen Kommentar schreiben:
-
Bestehen deine Typnummern als IMMER aus vier Blöcken mit je drei Zeichen oder wie schaut das Format aus, dass du die so merkwürdig speichern kannst!
Wenn du in der Datenbank nur eine Liste von Typnummern hast und mit LIKE und Wildcard nach Nummern suchst, bekommst du alle gleich beginnenden Typnummern im Ergebnis! Diese Typnummern kannst du dann sortieren oder nach der größten Nummer suchen. Der Code ist in etwa der selbe wie zuvor, nur dass du nun bereits in einem Array alle entsprechenden Typnummern vorliegen hast und nicht für jede eine neue Abfrage benötigst.
Eine genauere Angabe des Formates der Typnummern würde sehr helfen, damit man weiß, wann wo wie und warum hochgezählt würde und was ein Index ist und so weiter...
Einen Kommentar schreiben:
-
Zitat von Arne Drews Beitrag anzeigenDas find' ich schonmal geil...
Spaß beiseite:
Wie sieht es denn mit der DB aus? Kannst daran noch was ändern?
Ich würde sonst vorschlagen, die veränderlichen Einzelsegmente der Nummern in einzelne Spalten zu schreiben,
dann kannst Du einiges an PHP-Code mit vernünftigen MySQL-Abfragen sparen.
Beispiel:
Code:// Deine Tabelle Spalte1 | Spalte2 | Spalte3 | Spalte4 150 | 3A5 | E | A
In der Tat habe ich alle Segmente erst separat und am schluss noch mal als
Summe, mit den dafür vorgesehenen Leerstellen gespeichert.
Die DB sieht so aus:
Spalte1 | Spalte2 | Spalte3 | Spalte4|Spalte 5 |Spalte 6|
150 | 3A5 | E | A |STRADD |Typnummer
Wobei STRADD quasi die "Stringaddition" und Typnummer die STRADD + Index darstellt.
Mein Problem ist wie verleiche äh vergleiche ich die aktuelle Typnummer mit allen andern in der DB und wie würde ich dann automatisch den Index anpassen, sprich erhöhen?
Den Aufbau dieser Schleife bzw. Verzeigweigung kapier ich einfach nicht.
Einen Kommentar schreiben:
-
Und was macht man, wenn auch nur ein anderes Format dazukommt?
Einen Kommentar schreiben:
-
Zitat von bratkartoffelIch hoffe mich unverständlich ausgedrückt zu haben
Spaß beiseite:
Wie sieht es denn mit der DB aus? Kannst daran noch was ändern?
Ich würde sonst vorschlagen, die veränderlichen Einzelsegmente der Nummern in einzelne Spalten zu schreiben,
dann kannst Du einiges an PHP-Code mit vernünftigen MySQL-Abfragen sparen.
Beispiel:
Code:// Deine Tabelle Spalte1 | Spalte2 | Spalte3 | Spalte4 150 | 3A5 | E | A
Einen Kommentar schreiben:
-
Danke erst mal für die Antwort!
Das Format ist fest vorgegeben und wird durch ein HTML Formular erzeugt in dem der Nutzer Dropdownfelder und Radiobuttons anklickert.
Durch den Vergleich:
PHP-Code:$Typnummer = "$STRADD D";
Wenn der Index an der Typnummer hängt, wird wieder in der DB nachgesehen ob es diese Nummer schon gibt falls ja wird der index durch einen neueren, höheren ("F") überschrieben.
Ich habe im Prinzip etwa 40 "IF"- Verzweigungen mit jedesmal einen neuen Index (A oder B oder AC und so weiter).Das wollte ich gerne automatisieren da ich ja sonst irgendwann einmal ein Klorollen langes Programm bekomme...
Ich hoffe mich deutlich ausgedrückt zu haben?
Ich bin bei verschachtelten schleifen und if verzweigungen am verzweifeln....
Die Variable $STRADD beeinhaltet die rohe Typnummer (via Formular generiert und hat eine eigene Spalte in Mysql) und der Index "D" wird dann angehängt,
das ganze wird dann als "Typnummer" gespeichert.
Einen Kommentar schreiben:
-
Ich weiß nicht genau, wie diese Nummern generiert werden und welches Format sie aufweisen (müssen)! Daher fällt eine direkte Hilfe auch nicht so leicht, aber wenn ich es richtig verstanden habe, dann gibst du eine Nummer ein: Für denn Fall dass diese Nummer noch nicht existiert, dann fügst du diese Nummer hinzu oder schaust, ob die "nächste Nummer" existiert und verfährst auf die selbe Art?!
Ich würde dann in der MySQL Tabelle folgende Abfrage machen:
PHP-Code:$sql = "SELECT * FROM tabelle WHERE nummer LIKE '".$nummer."%';";
Sofern nun diese Nummern ein festes Format haben, kannst die diese Liste sortieren und weißt dann ob die Nummer exisitert und wo die neue Nummer eingefügt werden muss!
Ich würde wahrscheinlich nach diesem Ansatz vorgehen, aber feste Formate mit gewissen Definitionen können eine solche Suche durchaus vereinfachen...
Einen Kommentar schreiben:
Einen Kommentar schreiben: