Eddy.vh wrote: Hi,
Im Anhang findest du die neue Version mit nur einem Feld.
mfG.
Eddy
Hallo Eddy,
leider habe ich nun wieder ein Problem. Deinen ursprünglichen Code habe ich etwas angepasst, so dass ein Präfix, zwei Zufallsbuchstaben und eine Weiterzählung (5 Stellen) erfolgen soll.
Irgendwann setzt aber die Erhöhung um 1 einfach aus? Keine Ahnung, wieso??
Leider konnte ich auch deine letzte Version (die XML-Datei) nicht nutzen, da mir ein Hinweis fehlte, wie ich diese einbinden kann...??
Ich sende hier mal den momentanen Code, vielleicht kannst du einmal nachheflen?
Nochmals:
Der Präfix bleibt gleich, es folgen zwei Buchstaben (Zufall) sowie ein Bindestrich und danach soll eine fünfstellige Ziffern "hochzählen"...
Beispiel: "P382xy-12345" -> "P382xy-12346" -> "P382xy-12347" -> ....
$this->execPieceByName('ff_InitLib');
$db = JFactory::getDBO(); // Zugriff auf die Datenbank
$db->setQuery('SELECT MAX(value) FROM #__facileforms_subrecords where name = "snr"'); // snr ist der Name des Feldes, das die Seriennummer erhält
$result = $db->loadResult();
$result = substr($result, 0, 12); // auf 12 Stellen reduzieren, falls...
$result = substr($result, -5 ); // nur die letzten 5 Stellen (Seriennummer)
$praefix = "P382";
if ( $result != '' ) {
$result = $result + 1; // Test ob das Datenbankfeld einen Wert enthält. Wenn ja, wird die Wert mit 1 erhöht
}
else {
$result = "00001"; // Wenn nicht, fangen wir mit "001" an
}
// Hier noch einbauen, dass bei Erreichen von "99999" wieder auf "0" gesetzt wird!
//zwei Zufallsbuchstaben:
$buchstabe1 = chr( mt_rand( 97 , 122 ));
$buchstabe2 = chr( mt_rand( 97 , 122 ));
$trennung = "-" ;
$strResult = sprintf("%05d", $result); // Wenn die Serienr mehr als 5 Ziffern
ff_setValue('snr', "$praefix$buchstabe1$buchstabe2$trennung$strResult"); // Präfix + Seriennummer in Feld "snr" senden.
Wieso das Hochzählen einfach aussetzt ist mir ein Rätsel.
Vielen Dank für einen Hinweis!
Shuffle