getreidemuehlen
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 15.04.2004, 04:18   #1
TP-Special Mod
 
Benutzerbild von Thomas
 
Registriert seit: May 2001
Ort: Arnsberg - Sauerland
Thomas lebt für das TP und seine UserThomas lebt für das TP und seine UserThomas lebt für das TP und seine UserThomas lebt für das TP und seine UserThomas lebt für das TP und seine UserThomas lebt für das TP und seine UserThomas lebt für das TP und seine UserThomas lebt für das TP und seine UserThomas lebt für das TP und seine User
Smile

[php/js?] Datum in Formular automatisch vorgeben


habe hier ein Bestellformular.

ist es möglich, in diesem Formular - per zusätzlichem input-Feld - automatisch ein Datum vorzugeben?

Konkret: bis jeweils Mi. 18.00 h kann die Ware für den folgenden Mi. bestellt werden.
Deswegen hätte ich gerne ein zusätzliches Feld, wo automatisch das Datum des nächst möglichen "Bestell-Mittwochs" erscheint und per email mit übermittelt wird.

Optimal wäre, wenn der Besteller dieses Datum in die Zukunft verändern kann, aber nicht "verkürzen"

Also: mehr oder weniger automatisch bestellt der Kunde für den nächst möglichen Mittwoch (dann muss er am automatisch vorgegeben Datum nix ändern), er soll aber auch durch Änderung im Datums-Feld z.B. für übernächste Woche bestellen können.
Aber an einem Freitag z.B. nicht mehr für den nächsten Mi. das datum ändern können.

verständlich?
machbar?

Feiertage am Mi. und dadurch bedingte Terminverschiebungen ignoriere ich mal
Thomas ist offline   Mit Zitat antworten


Alt 15.04.2004, 04:35   #2
TP-Insider
 
Benutzerbild von lipsum
 
Registriert seit: Feb 2004
Ort: zinnwald / osterzgebirge
lipsum hilft, wo's gehtlipsum hilft, wo's gehtlipsum hilft, wo's geht
[ot]
das sind ja gleich drei wünsche auf einmal...

schläfst du eigentlich manchmal?
[/ot]
lipsum ist offline   Mit Zitat antworten
Alt 15.04.2004, 09:36   #3
spl
TP-Insider
 
Benutzerbild von spl
 
Registriert seit: Sep 2003
Ort: Sankt Augustin
spl macht alles soweit korrekt
Da du anscheinend mit PHP auf Fehler prüfst würde ich ds nächste Datum mit PHP errechen und eine Dorpdownmenü mit den nächsten x Mittwochdaten erstellen.

Im Prinzip:
1. Welcher Tag ist heute?
2. Heute + x = Mittwoch? bei Mo x=2
3. Heute plus x = erstes Datum
4. Ist heute schon 18 Uhr druch dann erstes Datum plus eine Woche
5. erstes Datum + eine Woche = zweites Datum
etc.
__________________
Gruß Sebastian

Webdesign und viel mehr http://lauff.info

yingiz, deine Wirtschaftsgemeinschaft im Netz - gemeinsam bis zu 60% vom Verkaufspreis oder bis zu 300 € Provisionen verdienen. Jeder profitiert von Jedem! Gemeinsam stark! Jetzt anmelden
spl ist offline   Mit Zitat antworten
Alt 15.04.2004, 11:34   #4
TP-Specialist
 
Benutzerbild von theo
 
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
theo bringt sich richtig ein
wenn um solche datumsangaben geht wuerde ich in jedem fall lieber das datum des servers nehmen.
was, wenn du so einen spassvogel hast wie mich, der aus testgruenden immer mal seine systemuhr verstellt?! was bekommst du dann ueber js fuer datumsangaben und wer soll mit denen dann noch was anfangen koennen?

gruss
hardy
theo ist offline   Mit Zitat antworten
Alt 19.04.2004, 04:10   #5
TP-Special Mod
 
Benutzerbild von Thomas
 
Registriert seit: May 2001
Ort: Arnsberg - Sauerland
Thomas lebt für das TP und seine UserThomas lebt für das TP und seine UserThomas lebt für das TP und seine UserThomas lebt für das TP und seine UserThomas lebt für das TP und seine UserThomas lebt für das TP und seine UserThomas lebt für das TP und seine UserThomas lebt für das TP und seine UserThomas lebt für das TP und seine User
Smile

geht also anscheinend alles
Die Idee mit dem Drop-Down-Menü ist prima.

da ich selber solche scripte leider nicht schreiben kann:
es gibt da doch sicher mehr oder weniger fertige/anpassbare scripte für solche Fälle, oder?

nach welchen Stichworten muss ich da suchen?
(möglichst in deutsch, mein englisch ist nicht so toll )
Thomas ist offline   Mit Zitat antworten
Alt 19.04.2004, 21:04   #6
Guest
 
Registriert seit: Aug 2002
Strogij hilft, wo's gehtStrogij hilft, wo's geht

Lösung(?)


Ich habe hier eine recht einfache, aber praktische Lösung entwickelt. Es sollte funktionieren (habe nicht genau getestet), und auch für Anfänger leicht zu verstehen sein.
Erklärung:
Erster Parameter bestimmt das Format vom Datum, was man haben will (entspricht dem von date()), zweiter die Anzahl in Wochen (ohne Angabe = 1).
Als Rückgabewert erhält man ein Array mit formatierten Strings, die dem Datum entsprechen, das kann man dann per Schleife z.B. in ein Drop-Down-Menü einbeziehen.
PHP-Code:
function bestellung($datum_format$wochen 1)
    {
    
$arr_heute                getdate();
    
$arr_naechste_termine    = array();

    if (
$arr_heute['weekday'] == "Wednesday" && $arr_heute['hours'] >= 18)
        {
        
$arr_naechste_termine[0] = date($datum_format$arr_heute[0] + (86400 14));
        
        for (
$i 1$i $wochen; ++$i)
            {
            
$arr_naechste_termine[$i] = date($datum_format$arr_naechste_termine[$i 1] + (86400 7));
            }
        
        return 
$arr_naechste_termine;
        }

    if (
$arr_heute['wkday'] < 3)
        {
        while ((++
$arr_heute['wkday']) != 3$arr_heute[0] += 86400;
        }
        else
            {
            while (--
$arr_heute['wkday'] != 3$arr_heute[0] += 86400;
            }

    for (
$i 0$i $wochen; ++$i)
        {
        
$arr_naechste_termine[$i] = date($datum_format$arr_heute[0] + (86400 * (($i 1) * 7)));
        }
    
    return 
$arr_naechste_termine;
    } 
Als Beispiel:
PHP-Code:
echo "Nächst mögliche Lieferung:<br/>";
foreach (
bestellung("j.F"3) AS $v) { echo "<li>".$v."</li><br/>"; } 
Die Sache mit Feiertagen wäre natürlich auch recht simpel, nur müsstest du dann diese selbst eintragen - sagen wir mal einmal im Jahr Kalender durchblättern.

Geändert von Strogij (03.03.2005 um 03:29 Uhr).
Strogij ist offline   Mit Zitat antworten
Alt 19.04.2004, 22:07   #7
TP-Moderator
 
Benutzerbild von Peter
 
Registriert seit: Nov 2001
Ort: Vienna
Peter ist ein richtiges Arbeitstier - DANKEPeter ist ein richtiges Arbeitstier - DANKEPeter ist ein richtiges Arbeitstier - DANKEPeter ist ein richtiges Arbeitstier - DANKE
Menno bin ich lahm....

Funktioniert dafür...habs getestet.


PHP-Code:
<?
//Wieviele Mittwoch-Termine sollen angezeigt werden?
$mittwoch=3;

//Wochentagzulage
$datum=date("w");
switch(
$datum)
{    case 
0$x=10; break;
    case 
1$x=9; break;
    case 
2$x=8; break;
    case 
3$x=7; break;
    case 
4$x=13; break;
    case 
5$x=12; break;
    case 
6$x=11; break;
}
//nächsten mittwoch ermitteln
$nwed=time()+$x*86400;

//18-Uhr Regel
if (date("H")>18 and $x==7) {
    
$nwed+=86400*7;
}
?>
<form>
<select>
<?
      
for ($i=0$i<$mittwoch$i++){
    
        
//Datum ermitteln
        
$datum=date("d.m.Y",$nwed);
        
        
//Ausgabe
        
echo "<option value=".$datum.">".$datum."</option>";
        
        
//Datum für nächste Woche ermitteln
        
$nwed=$nwed+86400*7;
    }
?>
</select>
</form>
__________________
_________-- - adicto otra vez - --
(¯`·.¸¸.·´¯`·.¸¸..¸¸.·´¯`·.¸¸..¸¸.·´¯`·.¸¸.·`¯)
Unterwasserrugby - der dreidimensionale Sport
Peter ist offline   Mit Zitat antworten
Alt 19.04.2004, 22:14   #8
Guest
 
Registriert seit: Aug 2002
Strogij hilft, wo's gehtStrogij hilft, wo's geht
Meine enthällt noch paar Bugs, muss ich heute noch verbessern, nützlich ist sowas ja.
Strogij ist offline   Mit Zitat antworten
Alt 19.04.2004, 22:24   #9
TP-Moderator
 
Benutzerbild von Peter
 
Registriert seit: Nov 2001
Ort: Vienna
Peter ist ein richtiges Arbeitstier - DANKEPeter ist ein richtiges Arbeitstier - DANKEPeter ist ein richtiges Arbeitstier - DANKEPeter ist ein richtiges Arbeitstier - DANKE
So...
Jetzt ist das Feiertagsding auch drin.

Viel Spaß,
Peter
PHP-Code:
<?
//Wieviele Mittwoch-Termine sollen angezeigt werden?
$mittwoch=3;

//Feiertagszulage im Format TT.MM.YYYY
$feiertage=array("05.05.2004""06.08.2004""25.12.2004");

//Wochentagzulage
$datum=date("w");
switch(
$datum)
{    case 
0$x=10; break;
    case 
1$x=9; break;
    case 
2$x=8; break;
    case 
3$x=7; break;
    case 
4$x=13; break;
    case 
5$x=12; break;
    case 
6$x=11; break;
}
//nächsten mittwoch ermitteln
$nwed=time()+$x*86400;

//18-Uhr Regel
if (date("H")>18 and $x==7) {
    
$nwed+=86400*7;
}
?>
<form>
<select>
<?
      
for ($i=0$i<$mittwoch$i++){
    
        
//Datum ermitteln
        
$datum=date("d.m.Y",$nwed);
        
        
//Feiertagsauswertung
        
foreach ($feiertage as $ft => $wert){
            if (
$datum==$wert){
                
$nwed+=86400*7;
                
$datum=date("d.m.Y",$nwed);
            }
        }
        
        
//Ausgabe
        
echo "<option value=".$datum.">".$datum."</option>";
        
        
//Datum für nächste Woche ermitteln
        
$nwed=$nwed+86400*7;
    }
?>
</select>
</form>
__________________
_________-- - adicto otra vez - --
(¯`·.¸¸.·´¯`·.¸¸..¸¸.·´¯`·.¸¸..¸¸.·´¯`·.¸¸.·`¯)
Unterwasserrugby - der dreidimensionale Sport
Peter ist offline   Mit Zitat antworten
Alt 19.04.2004, 22:25   #10
TP-Special Mod
 
Benutzerbild von Thomas
 
Registriert seit: May 2001
Ort: Arnsberg - Sauerland
Thomas lebt für das TP und seine UserThomas lebt für das TP und seine UserThomas lebt für das TP und seine UserThomas lebt für das TP und seine UserThomas lebt für das TP und seine UserThomas lebt für das TP und seine UserThomas lebt für das TP und seine UserThomas lebt für das TP und seine UserThomas lebt für das TP und seine User
Thumbs up

Wahnsinn, danke

hab' gerade nur grob getestet (bin noch im Laden ...), aber scheint zu funktionieren

danke euch beiden herzlich
Thomas ist offline   Mit Zitat antworten
Alt 19.04.2004, 22:31   #11
TP-Special Mod
 
Benutzerbild von Thomas
 
Registriert seit: May 2001
Ort: Arnsberg - Sauerland
Thomas lebt für das TP und seine UserThomas lebt für das TP und seine UserThomas lebt für das TP und seine UserThomas lebt für das TP und seine UserThomas lebt für das TP und seine UserThomas lebt für das TP und seine UserThomas lebt für das TP und seine UserThomas lebt für das TP und seine UserThomas lebt für das TP und seine User
Smile

wow, jetzt auch noch mit Feiertagen, das ist ja oberedel

dann fällt dieser Mittwoch aber ganz raus, wenn ich das richtig sehe?
defacto verschiebt sich der Liefertermin dann aber auf den Di ...
Thomas ist offline   Mit Zitat antworten
Alt 20.04.2004, 20:14   #12
Guest
 
Registriert seit: Aug 2002
Strogij hilft, wo's gehtStrogij hilft, wo's geht
Habe nen blöden Fehler im Code gehabt, jetzt geht es aber, falls es jemand mal braucht, lässt sich der Code leicht anpassen.
PS: Meine Funktion war durchschnittlich mehr als 2x so schnell im Test als deine @Peter (die Schleifen...);)
PHP-Code:
function bestellung($datum_format$wochen 1)
    {
    
$arr_heute                getdate();    // Lokalzeit
    
$arr_naechste_termine    = array();        // Array für Einträge des Datums für jede Woche (Rückgabewert)

    
if ($arr_heute['wday'] == && $arr_heute['hours'] >= 18)
        {
        
$arr_naechste_termine[0] = $arr_heute[0] + (86400 14);
        
        for (
$i 1$i $wochen; ++$i)
            {
            
$arr_naechste_termine[$i] =&