Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Typnummer Generator

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • bratkartoffel
    hat ein Thema erstellt [Erledigt] Typnummer Generator.

    [Erledigt] Typnummer Generator

    Hallo,

    Ich bin neu hier, in der Hoffnung Hilfe zu finden bei einem Problem an dem ich nun schon seit Tagen herum doktere.

    So siehts aus:
    Es gibt eine Mysql Tabelle in der Typnummern stehen, etwa so:
    150 3A5 E
    150 3A5 E A
    150 3A5 E B
    Die Nächste Nummer wird dann über ein HTML Formular automatisch generiert werden und sollte
    150 3A5 E C lauten. (bis auf das "C" wird alles über Auswahlfelder eingegeben)

    Da Problem:
    Es gibt noch andere Nummern die ähnlich lauten z.B.:
    150 3A8 E
    150 3B5 E
    150 7A53 E
    und so weiter. Bisher habe ich das durch umständliche if Abzweigungen quasi händisch erledigt(ich weiss : sehr unprofessionell)
    etwa so:
    PHP-Code:
    $resultx mysql_query(" Select `Typnummer` FROM tpnum WHERE Typnummer = '$Typnummer' order by ID desc ");
    $x mysql_fetch_array($resultx); 
    foreach (
    $x as $keyx => $valuex)if ($valuex == $Typnummer )      {$Typnummer "$STRADD C";}
    $resultx mysql_query(" Select `Typnummer` FROM tpnum WHERE Typnummer = '$Typnummer' order by ID desc "); 
    $x mysql_fetch_array($resultx);  
    foreach (
    $x as $keyx => $valuex)if ($valuex == $Typnummer )   {$Typnummer "$STRADD D";} 
    Wie man sehen kann wird der Buchstabe hinter "$STRADD",
    sozusagen als Index, hochgezählt.

    Bei einem andern Script wollte ich das etwas Profihafter lösen, weiss aber leider nicht wie das gehen soll. Im Prinzip muss die Typnummer immer nur einmal vorhanden sein und aufsteigend in die Mysql Tabelle geschrieben werden.
    Ich hoffe mich unverständlich ausgedrückt zu haben

    Wenn ich wenigstens einen Denkansatz hätte....

    Reißt mir bitte nicht sofort den Kopf ab - ich bin neu hier.
    Danke und Gruss A.

  • bratkartoffel
    antwortet
    Zitat von Arne Drews Beitrag anzeigen
    MAX ist eine Funktion und die Beschreibung findest Du sicher in der MySQL-Dokumentation!

    Aber damit Du nicht lange suchen mußt:
    Code:
    MAX(spaltenname) AS wasauchimmer

    Vielen Dank!!
    Freibier für Dich!!
    Jetzt versteh ich auch für was Aliase gut sind.
    Gruss a.

    Einen Kommentar schreiben:


  • Arne Drews
    antwortet
    MAX ist eine Funktion und die Beschreibung findest Du sicher in der MySQL-Dokumentation!

    Aber damit Du nicht lange suchen mußt:
    Code:
    MAX(spaltenname) AS wasauchimmer

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    im Google lässt sich zum Max Thema wenig finden
    Dann schau bitte dort, wo die Infos stehen: in der MySql-Doku.

    http://dev.mysql.com/doc

    Einen Kommentar schreiben:


  • bratkartoffel
    antwortet
    Hallo

    kann mir jemand bitte sagen warum die folgende Abfrage nicht funzt?

    PHP-Code:
    $res mysql_query("SELECT MAX `index` FROM `znr` WHERE blank = '$blx' ORDER BY `index` asc"); 
    ohne MAX geht das einwandfrei, mit leider nicht.
    im Google lässt sich zum Max Thema wenig finden, und nichts was weiterhilft.
    Schon mal Danke für´s Lesen.

    Einen Kommentar schreiben:


  • bratkartoffel
    antwortet
    Zitat von Asipak Beitrag anzeigen
    Versuch' es mit:
    PHP-Code:
    $char "A";   
    echo ++
    $char
    oder mit
    PHP-Code:
    $char "A";   
    $char++;
    echo 
    $char
    Coole Sache!
    in der kürze hockt die Würze!
    Danke

    Einen Kommentar schreiben:


  • bratkartoffel
    antwortet
    Zitat von Asipak Beitrag anzeigen
    So macht er es ja im Moment, denke ich, nur sucht er einen Weg, um diese If-Abfragen zu verallgemeinern, um nicht nach jedem Buchstaben einzeln testen zu muessen.
    Voll Korrekt!

    Die lösung könnte so aussehen:
    1.Typnummer erzeugen
    2. in DB guggen ob schon vorhanden
    3. falls nicht ok und die eben angeleckte äh angelegte Typnummer in DB speichern.
    4. falls doch schon in DB - Index erhöhen
    5. gehe zu schritt 2. und genau da ist das Problem:
    ich komm nie weiter als bis zu dem Index A weil ich im Kreis drehe...

    ich müsste also irgendwie von Schritt 5 den Index mir merken und um eins erhöhen....hm, grübel...

    Danke für euer Fidbägg, die so zahlreich erschienen

    Einen Kommentar schreiben:


  • Asipak
    antwortet
    Versuch' es mit:
    PHP-Code:
    $char "A";   
    echo ++
    $char
    oder mit
    PHP-Code:
    $char "A";   
    $char++;
    echo 
    $char

    Einen Kommentar schreiben:


  • Sirke
    antwortet
    Zitat von robydog Beitrag anzeigen
    ja wie ich ja zuvor geschrieben habe würde ich ein String erstellen mit dem ABC und wenn schon ein buchstabe dran ist diesen im string suchen und den nächsten buchstaben nehmen...
    oder eben wie nikosh meinte mit $char++ (was bei mir nicht funktionierte)
    Das Suchen muss man jedoch irgendwie mit wenigen Abfragen hinbekommen! Dazu kann man entweder ALLE Daten aus der Datenbank holen und dann in den abgefragten Datensätzen suchen oder nur gewisse Daten abfragen. Dazu habe ich eine Idee geschrieben, indem man alle Daten mit dem selben Nummernanfang abfragt und diese weiterverarbeitet...

    Die Weiterverarbeitung benötigt dann relativ wenig Rechenkraft und umsoweniger je weniger Daten verarbeitet werden müssen! Daher simpler Ansatz: Die Daten sogut wie nur möglich vorselektieren und dann diese Daten abarbeiten!


    Edit: Die Operator ++ wird erst nach dem Ausdruck ausgeführt!
    PHP-Code:
    $char "A";   echo ++$char

    Einen Kommentar schreiben:


  • robydog
    antwortet
    PHP-Code:
    $char "A";   echo $char++; 
    so hab ich das verstanden
    als ausgabe erhalte ich A

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    also bei mir funktioniert das nich
    Bitte Code zeigen.

    Einen Kommentar schreiben:


  • robydog
    antwortet
    ja wie ich ja zuvor geschrieben habe würde ich ein String erstellen mit dem ABC und wenn schon ein buchstabe dran ist diesen im string suchen und den nächsten buchstaben nehmen...
    oder eben wie nikosh meinte mit $char++ (was bei mir nicht funktionierte)

    Einen Kommentar schreiben:


  • Asipak
    antwortet
    So macht er es ja im Moment, denke ich, nur sucht er einen Weg, um diese If-Abfragen zu verallgemeinern, um nicht nach jedem Buchstaben einzeln testen zu muessen.

    Einen Kommentar schreiben:


  • robydog
    antwortet
    so wie ichs verstanden habe

    hat er ein formular mit dropdown
    dort sind die typnummern schon voreingegeben
    das heisst somit würde nach x eingaben irgendwann eine zahl doppelt vorkommen... darum das ABCD am schluss...

    von mir aus gesehen braucht er nur zu schauen ob die nummer schon vorhanden ist...
    Wenn nicht -> eintragen in db
    wenn vorhanden -> schauen ob schon ein Buchstabe hintendran ist
    Wenn nicht -> A hinzufügen und in DB speichern
    Wenn A schon vorhanden -> hinter die Nummer B schreiben und wieder in die DB speichern usw

    Einen Kommentar schreiben:


  • Sirke
    antwortet
    Ich nehme mir mal die Zeit auf dein Problem etwas genauer einzugehen und hoffe du möchtest keinen vorgekauten Code, sondern etwas lernen:

    Gerade deine Beispiele zeigen kein festes Muster, weil sowohl Blöcke mit drei als auch vier Zeichen vorkommenund auch zwei oder drei aufeinander folgende größere Blöcke! Das macht das ganze auf jeden Fall wesentlich komplizierter... aber nicht unmöglich!

    Nehmen wir an alle diese geposteten Typen sind in der Datenbank vorhanden:
    Code:
    150 44C5 E     150 44A5 E    150 44A3 E B     150 44A3 E C     150 44C3 E A
    400 140 E A    400 34C E     400 34C E A      400 34C E B      400 14C E
    150 44A3 E B   150 38B K36   150 38B K36 A    150 38B K36 B    150 38B K36 C
    Nun wollen wir "400 34C E" hinzufügen und erstellen nach meinem Prinzip folgende MySQL Abfrage:
    PHP-Code:
    $sql "SELECT `typnummer` FROM tp WHERE typnummer LIKE '400 34C E%';"
    Diese Abfrage liefert folgende Datensätze zurück: 400 34C E, 400 34C E A, 400 34C E B
    An diesem Punkt kann men entweder die Datensortieren oder nach deinem Prinzip von Try-And-Error vorgehen, indem du schaust, ob die Typnummer im Array vorkommt, dann erstellst du die nächste Typnummer und schaust erneut und so weiter...
    Anlternativ kann man den Array sortieren bzw den höchsten Eintrag finden und dann zu deinem die nächste Nummer bilden...
    ...über die Bildungsvorschriften und damit auch die "Größenvergleiche" von Nummern musst du dir natürlich selbst im klaren drüber sein, weil du uns immernoch nicht sagen wolltest wie diese zustande kommen:
    Was ich meine ist die Nummer "150 38B K36", wo ich als Folgenummer von "150 38B" eine "150 38B *" mit nur einem Buchstaben bilden würde und keinen Buchstaben gefolgt von einer Zahl...

    Ich denke und hoffe meine beschreibene Lösung samt Beispiel sollte verständlich sein!

    Einen Kommentar schreiben:

Lädt...
X