Wie geht das besser

Begonnen von emet1, 30 Juni 2008, 20:50:32

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

emet1

Hallo,

der Jörg hatte mir mit einer Änderung geholfen, das ich einen Script über die functions.php einbinden kann.

Dabei ging es um den Echo-Befehl. Aber man muss ja scheinbar einiges umschiffen, damit es richtig eingelesen und angezeigt wird.

Es ging dabei um folgendes:

http://www.pragmamx.org/Forum-topic-26522-start-msg174375.html#msg174375

Nun bin ich an den nächsten Script gegangen und hab mich ausprobiert. Lässt sich aber auch nicht ohne weiteres einbinden bzw. erscheint wieder oben links.

Nun habe ich versucht das Beispiel von Jörg exakt zu kopieren und es ist mir auch gelungen.  :thumbup: - Danke nochmal für die Hilfe.

Es wird die Datei zum Wochentag angezeigt oder wenn diese nicht vorhanden ist eine Standarddatei.

Nur kommt mir dieser Script jetzt sehr unsauber vor, bzw. musste ich eine Anweisung doppelt einbauen, damit es beim Wochentag und der Standarddatei geht.

Geht dies auch kompakter und sauberer. (bin leider nicht der php-Spezialist) Es geht mir dabei auch noch um etwas anderes ... folgt zuletzt.

Original-Code:

<?php
$datei_pfad 
"mtoolsm/week/";
$standard "00standard";
$datei_endung ".txt";

$standard_datei $datei_pfad.$standard.$datei_endung;

$datum date("l");
$anzeigendatei $datei_pfad.$datum.$datei_endung
if(
file_exists($anzeigendatei)) {
include(
$anzeigendatei);
}
else
{
include(
$standard_datei);
}
?>



Der neue funktionierende Code nach Jörgs Vorlage:

<?php
function mx_mtm_weekday()
{
$out '';
$datei_pfad "mtoolsm/week/";
$standard "00standard";
$datei_endung ".txt";

$standard_datei $datei_pfad.$standard.$datei_endung;

$datum date("l");
$anzeigendatei $datei_pfad.$datum.$datei_endung
if(
file_exists($anzeigendatei)) {
$content file  ($anzeigendatei);
foreach (
$content as $line)
$out .= $line;
}
else
{
$content file ($standard_datei);
foreach (
$content as $line)
$out .= $line;
}
return 
$out;
}
?>


Kann man das allgemein gültig machen ohne jedesmal auszuführen.

foreach ($content as $line)
$out .= $line;


Oder noch kompakter.

Ich habe nähmlich noch einen Script, in dem alle Monatstage eingegeben werden können (mit Dateianhängen).

Der würde sich aufblasen bis zum Gehtsnichtmehr.

Beispiel:

<?
include ('mtoolsm/specialdayset.php');

$heute = getdate () ;
if ($heute[ mon] =="$anzeigemonat_file01" &&
$heute[ mday] == "$anzeigetag_file01") {
include($datei_pfad.$anzeigedatei_file01);
}
elseif ($heute[ mon] =="$anzeigemonat_file02" &&
$heute[ mday] == "$anzeigetag_file02") {
include($datei_pfad.$anzeigedatei_file02);
}

.................. usw.

else
{
include($datei_pfad.$standard);
}
?>



Viele Grüße
Ernst
User unter sich. Hier wird man geholfen.

emet1

Hallo,

fast 150 mal angeschaut und keiner kann mir einen Hinweis geben, wie es besser geht?

Na, ich weis doch, das hier einige in PHP fit sind.

Gruß
Ernst
User unter sich. Hier wird man geholfen.

wichtel9999

Was passt Dir an dem funktionierenden Code von Jörg nicht?

Das lässt sich doch auch für Deine eigene Anwendung leicht anpassen, wenn man den genau weiss, wie die Dateien heissen.

Lieben Gruss aus Finnland

Andy

emet1

Hi Andy,

Du hast mich falsch verstanden. Am Code von Jörg stört mich gar nichts.

Er hat mir das Beispiel gemacht, wegen dem Echo-Befehl und ich hab es jetzt mit meinen (begrenzten) Kenntnissen umgesetzt, um die Includes aus dem Code zu werfen und es Pragmaspezifisch anzupassen.

Es funktioniert - ist super.

Ich musste jedoch nach dem if und auch nach dem else

foreach ($content as $line)
$out .= $line;


jeweils diesen Code einsetzen, was bei dem kurzen Script auch nicht schlimm ist.

Ich kann es halt nicht besser und weis nicht, wie man diesen Code einmal für alles einbauen kann.

Darum geht es mir, das ich das etwas sauberer hinbekomme.


Ich habe nähmlich noch einen Script der 31 mal über if und elseif geht, um lauter einzelne Dateien für bestimmte Tage aufzurufen.

Wenn ich es jetzt da so mache, dann müsste ich die Anweisung ebenfalls 31 mal einbauen.

Deshalb meine Frage, wie es besser geht und der Befehl übergreifend für das ganze Script gültig ist.

Ich hoffe, das meine Frage jetzt besser verstanden wurde.


Viele Grüße
Ernst
User unter sich. Hier wird man geholfen.

StegRene

Ich bin nicht fit im PHP, aber ist eine Case - Anweisung in dem Fall dann nicht sinnvoller?
Frag mich bloss nicht, wie das geht! <lach>

Ne andre Möglichkeit wäre doch, die Dateien so zu nennen:

datei1.htm
datei2.htm
datei3.htm
...
...
Datei31.htm

Dann liesst Du mit dem Script den aktuellen Tag und baust in einer Anweisung das zusammen:

Lese den aktuellen Tag
Addiere Dateiname + Tag + html in variable DATEI
Öffnen DATEI

?!?

....... nur von der Logik her?

emet1

Hi Rene,

das hab ich für ein anderes Script hinbekommen - da hab ich mir3-4 Beispiele angeschaut und daraus den besten und kürzesten Code gemacht, was ging.

Mir wäre es halt wichtig, die Anweisung:

foreach ($content as $line)
$out .= $line;


für das gesamte Script gültig zu machen.


Das Script für die 31 Tage war mir zu hoch, um es zusammenfassen zu können. Es liegen auch nur die Anweisungen drin.

In einer extra Settingdatei aktiviere ich durch Eingabe des Datums zu einer Datei automatisch die Anzeige.


Bin ja froh, das ich das soweit hinbekomme.

Ich habe schon versucht, mich wegen dem einen oder anderen Script bzw. wegen einem Formular weiter in PHP einzuarbeiten.

Wenn man da aber keinerlei Hilfe hat, dann fällt einem das ein oder andere einfach zu schwer um es zu verstehen oder ich bin zu blöd.

Bei einem Formular hab ich mir dann auch von einem Bekannten helfen lassen.

Ich habe in PHP-Seiten gelesen und mir mehrere Beispiele angeschaut, die dann aber jeweils so unterschiedlich programmiert waren, das ich praktisch nichts davon umsetzen konnte - die Basis war einfach zu unterschiedlich. Es passte nichts zu dem Formular, welches ich erweitern wollte.

Ich hatte meine Zeit halt dafür eingesetzt html und css richtig zu verstehen und einzusetzen. Wenn man es nicht täglich einsetzt, dann muss man auch manchmal überlegen. Mit PHP ist das wohl doch etwas schwerer, wenn man nicht täglich programmiert.

Viele Grüße
Ernst
User unter sich. Hier wird man geholfen.

emet1

Hallo nochmal Rene,

Du hast mich auf eine andere Idee gebracht. Es geht noch viel einfacher.  :drinks:

Ich habe meinen Script für den Wochentag genommen und diesen einfach auf Jahr-Monat-Tag

von

$datum = date("l");

auf

$datum = date("Y-m-d");

abgeändert

und lasse jetzt damit über diesen Pfad einfach die Datei mit dem Namen des Datums aufrufen.

Die aufzurufende Datei heisst dann einfach 2008-07-04.txt und deren Inhalt wird dann ausgegeben.

Dann brauchts den ganzen anderen Mist und die Settingdatei gar nicht mehr.

Wie bin ich überhaupt auf diesen komplizierten Irrsinn gekommen. Genau, irgendwo gesehen - umgebaut und erweitert.

Kommt davon, wenn mans eigentlich nicht kann - man benötigt nur einige Denkanstösse und dann geht doch mehr als gedacht.

Ohne dieses Thema anzufangen wäre ich nie darauf gekommen  :puzzled:


Trotzdem würde mich die Lösung zu meiner Frage weiter interessieren, denn auch dazu muss es doch eine Lösung geben, damit man nicht die gleiche Anweisung mehrmals in einen Script schreiben muss.

Viele Grüße
Ernst

User unter sich. Hier wird man geholfen.