PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie baue ich folgenden Inhalt zu einer Funktion um ??


bp158
28.08.2006, 13:08:04
Hi,

so, hab da mal 'ne Frage.

Ich habe hier ein Script, welches Checkboxes in einem Formular (nach Auswahl eines Wertes aus einem Select-Feld) vorbegelegen soll.

Habe das soweit auch gehend, nur habe ich ca. das 9fache an Zeilen, als ich wahrscheinlich brauche, da alles immer wieder gemacht wird ...

Das Script habe ich angehangen, da er gemeckert hat, das es zuviel Zeichen sind.

Jetzt bräuchte ich das ganze ja eigentlich nur noch als Funktion zu bauen, dann wäre es universell. Nur das WIE (... ich daraus eine Funktion baue ...) schnall ich nicht ganz :(((

Klappen tut es, nur das ich für jeden Übergabewert eben den ganzen scheiss habe statt nur einmal ...

BP

MatMel
28.08.2006, 13:56:31
Wenn ich das richtig sehe wiederholt sich der Teil

$werktag12 = $werktag11 + 86400;
if (date("w",$werktag12) == "0" OR date("w",$werktag12) == "6")
{
// $werktag12 = $werktag12 + 86400;
$form_todo_check_field12 = "";
}
else
{
$form_todo_check_field12 = date("Y-m-d",$werktag12);
$tageszaehler++;
}
echo "tageszaehler: ".$tageszaehler."<br>";
echo "todo_check_field12: ".$form_todo_check_field12."<br>";
echo "-----------------------------------------------------<br>";

immer wieder mit ner anderen Zahl hinter dem $werktag ...

Also würd ich sagen du machst ne Funktion, in die du den werktag reinsteckst und aus der dann am Schluss tageszaeler, todo_check_field und werktag(zur Weiterverwendung) wieder rauskommen.



function lala($werktag){
$werktag += 86400; // Variablen init
$form_todo_check_field = 0;
if (date("w",$werktag) == "0" OR date("w",$werktag) == "6")
{
$form_todo_check_field = "";
}
else
{
$form_todo_check_field = date("Y-m-d",$werktag);
$tageszaehler++;
}
return Array(
'tageszaeler' => $tageszaehler,
'form_todo_check_field' => $form_todo_check_field,
'werktag' => $werktag);
}

// ein Beispiel zur Benutzung:
$ret = lala($werktag_vorher);
echo "tageszaehler: ".$ret['tageszaeler']."<br>";
echo "todo_check_field12: ".$ret['form_todo_check_field']."<br>";
echo "-----------------------------------------------------<br>";

In die Funktion musst du dann immer den Vorhergehenden Werktag reinstecken...also immer wenn du die Funktion aufrufst den Rückgabewert 'werktag' vom vorhergehenden Aufruf.

bp158
29.08.2006, 06:42:58
Hi,

nunja, nicht ganz. eigentlich wiederholt sich der komplette Teil, der zwischen zB. case "10tage" und case "9tage" steht ...

BP

MatMel
29.08.2006, 10:23:36
Naja geht trotzdem mit meiner Funktion und zwar so:


$tagesanzahl_auswahl = 10;
if (date("H",time())>14)
{
$tagesanzahl_auswahl + 1;
}
$ret['werktag']= time(); // damit nicht noch eine Abfrage gemacht werden muss füll ich den Startwert einfach mal frech in einen gefakten return wert
for($a=1;$a<=$tagesanzahl_auswahl;$a++){
$ret = lala( $ret['werktag'] ); // hier wird der return wert vom mal davor übergeben
echo "tageszaehler: ".$ret['tageszaeler']."<br>";
echo "todo_check_field12: ".$ret['form_todo_check_field']."<br>";
echo "-----------------------------------------------------<br>";
}


Und das kannst du jetzt natürlich auch wieder in eine Funktion verpacken!
Dann einfach $tagesanzahl_auswahl übergeben!