Seite 1 von 6 12345 ... LetzteLetzte
Ergebnis 1 bis 20 von 104

Thema: Der 'große' PHP-Thread

  1. #1

    [PHP] Alltags- und Optimierungshilfen

    Mir gehts öfters mal so das wenn ich was schreib und mir hinterher den code anschau, bemerke das ich das auch einfacher machen hätte können. z.b. SELECT anfragen o.ä.
    Wie wärs wenn hier jeder mal seine kleinen Tipps und Tricks Postet?
    Oder z.b. was man bei einer großen MySQL tabelle nie machen sollte, wegen trafficlast oder so...


    mal schaun, wielange sich der thread hält :/

    [EDIT]:
    ich geb mal einen kleinen anstoß...^^
    Wichtig finde ich immer auf Fehler vorbereitet zu sein:


    Syntax Highlighting:
    Code:
    function queryDie($qry, $file = "unknown", $line = "unknown")
    {
        showError("Query-Error", 
            "Query-Error in File: '$file' at line $line<br>".
            "$qry<br>" . mysql_error());
                  
        die();
    }
    function showError($title = "Unknown Error", $error = "")
    {
        ?>
        <table align="center" cellspacing="0" border="1" bordercolor="#000000" width="70%">
            <tr class="error">
                <th>
                    <? echo $title; ?>
                </th>
            </tr>
            <tr class="error_additional">
                <td>
                    <? echo $error; ?>
                </td>
            </tr>
        </table>
    
        <p align="center"><a href="java script:history.back(1)">Zurück</a></p>
        <?
    }
    [...]
    
    $qry = "Bla ...";
    
    $res = mysql_query($qry) or queryDie($qry, __FILE__, __LINE__);

    So weiss man schneller wo der Fehler aufgetreten ist...ist nur was kleines...aber sehr hilfreich ^^

    Geändert von Malakai (06.04.2003 um 09:06 Uhr)

  2. #2

    Der 'große' PHP-Thread

    huhu

    nun gut, damit mache ich den 'großen PHP-Thread' auf , der brannte mir schon die ganze Zeit unter den Fingernägeln. Und mein erstes Anliegen, wie schreibe ich ein Script, mit dem ich unterschiedliche Bilder, zu unterschiedlichen Tageszeiten anzeigen kann? Also Problem ist folgendes, ich habe eine Grafik mit einer Sonne drauf (als Beispiel), und ich würde das Bild Abends (Nachts) durch ein Bild mit einem Mond austauschen.

    Mir ist da gleich ein Random Picture Script eingefallen, ist ja nicht sonderlich schwer zu machen und gibts zu hauf, aber das Problem ist, ich will ja nicht die Bilder ständig bzw. bei jedem neu Laden wechseln lassen, sondern zu unterschiedlichen (Tageszeiten) und wie gesagt, Tagsüber und Abends/Nachts, halt Sonne und Mond.

    Wie mach ich das und geht sowas überhaupt?

  3. #3

    Re: Der 'große' PHP-Thread

    Zitat Zitat
    Original geschrieben von Mithrandir Moon
    huhu

    nun gut, damit mache ich den 'großen PHP-Thread' auf , der brannte mir schon die ganze Zeit unter den Fingernägeln. Und mein erstes Anliegen, wie schreibe ich ein Script, mit dem ich unterschiedliche Bilder, zu unterschiedlichen Tageszeiten anzeigen kann? Also Problem ist folgendes, ich habe eine Grafik mit einer Sonne drauf (als Beispiel), und ich würde das Bild Abends (Nachts) durch ein Bild mit einem Mond austauschen.

    Mir ist da gleich ein Random Picture Script eingefallen, ist ja nicht sonderlich schwer zu machen und gibts zu hauf, aber das Problem ist, ich will ja nicht die Bilder ständig bzw. bei jedem neu Laden wechseln lassen, sondern zu unterschiedlichen (Tageszeiten) und wie gesagt, Tagsüber und Abends/Nachts, halt Sonne und Mond.

    Wie mach ich das und geht sowas überhaupt?
    Könnte man das nicht mit einer Zeitabfrage machen? *im Manual such*

    So müsste es gehen:

    Code:
    //Beispiel: 
    //22 - 6 Uhr = Nacht
    //6 - 12 Uhr = Vormittag
    //12 - 18 Uhr = Nachmittag
    //18 - 22 Uhr = Abend
    $tageszeit = gettimeofday();      //gibt ein Array zurück
    $stunde = $tageszeit['sec']/3600; //Umrechnung von Sekunden in Stunden
    if ($stunde < 6 || $stunde >= 22)
        echo '<img src="nacht.png">';
    else if ($stunde >= 6 && $stunde < 12)
        echo '<img src="vormittag.png">';
    else if ($stunde >= 12 && $stunde < 18)
        echo '<img src="nachmittag.png">';
    else
        echo '<img src="abend.png">';
    So müsste es eigentlich gehen.

    EDIT: Okay, Tippfehler ausgebessert

    Geändert von Cygnus (06.04.2003 um 22:42 Uhr)

  4. #4
    @ Cygnus:
    Dein Script funzt, allerdings waren nen paar kleinere Tippfehler drin.
    $stunde = $tageszeit['sec']/3600;


    Allerdings würde das Script nicht auf diesem unseren Server funktionieren da er im Amiland steht, die haben leider ihre PM/AM-Regelung.
    Deswegen hab ich aus deinem Script mal ne Variante mit date("G") gebastelt.
    date("G") gibt die aktuelle Stunde im 24-Stundenformat aus ohne bei einstelligen Zahlen eine "0" voranzustellen (z.B. 5 Uhr = 05).
    So dürfte das Script ein wenig universeller einsetzbar sein.
    PHP-Code:
    <?php
    //Beispiel: 
    //22 - 6 Uhr = Nacht
    //6 - 12 Uhr = Vormittag
    //12 - 18 Uhr = Nachmittag
    //18 - 22 Uhr = Abend
    $stunde date("G");
    if (
    $stunde || $stunde >= 22){
        echo 
    '<img src="nacht.png">';
    }else if (
    $stunde >= && $stunde 12){
        echo 
    '<img src="vormittag.png">';
    }else if (
    $stunde >= 12 && $stunde 18){
        echo 
    '<img src="nachmittag.png">';
    }else{
        echo 
    '<img src="abend.png">';
        }
    ?>

    Geändert von Chocwise (06.04.2003 um 22:12 Uhr)

  5. #5
    Danke euch beiden, werds gleich ausprobieren. Außerdem werd ich den Thread mal anpinnen sonst vermodert der ja nur...

  6. #6
    So, ich denke, ich poste mal den Link zum PHP-Manual (kann man immer brauchen):
    Deutsche Version des PHP-Manuals

  7. #7
    Schöner Thread!!! Seh ich jetzt erst!
    Also mein Prob:
    Ich hab wohl das billigste PHP-Counter Script was möglich ist gemacht:
    PHP-Code:
    <?
    $datei = fopen("counter.txt","r+");
    $counterstand = fgets($datei, 10);
    if($counterstand == "")
      {
      $counterstand = 0;
      }
    $counterstand++;
    echo $counterstand;
    rewind($datei);
    fwrite($datei, $counterstand);
    fclose($datei);
    ?>
    Jetzt will ich eine Reload - Sperre (geht das überhaupt mit php) und eine User - SPerre (also , dass ein user nur einmal am tag gezählt wird)
    Das mit der User - Sperre muss ich wohl mit Cookies regeln. (Mit Cookies kenn ich mich blos noch nicht aus. )

  8. #8
    Zitat Zitat
    Original geschrieben von DragonThorm
    Schöner Thread!!! Seh ich jetzt erst!
    Also mein Prob:
    Ich hab wohl das billigste PHP-Counter Script was möglich ist gemacht:
    PHP-Code:
    ... 
    Jetzt will ich eine Reload - Sperre (geht das überhaupt mit php) und eine User - SPerre (also , dass ein user nur einmal am tag gezählt wird)
    Das mit der User - Sperre muss ich wohl mit Cookies regeln. (Mit Cookies kenn ich mich blos noch nicht aus. )
    Dies hier ist ein Script das IP's nach dem Zählen für 600 Sekunden blockt (dürfte nicht zu schwer sein es auf 24 Std. einzustellen), die IP's schreibts in eine Textdatei auf dem Server (also ohne Cookies):
    PHP-Code:
    <?php
    $counter 
    "counter.txt";
    $zeitfenster 600;
    $zeit=time($zeit);
    $update="1";

    $fp fopen("counter.txt","r");
    $i=0;
    while (
    feof($fp)==0) {
    $line=chop(fgets($fp,260));
    $i++;
    $testarray[$i]=$line;
     }

    fclose($fp);
    $diff $zeit-$testarray[3];
    if ((
    $diff) >= $zeitfenster) { $update="0"; }
    if (
    $testarray[2] != $REMOTE_ADDR or $update == "0") {
    $ftp = @fopen($counter,"r+");
    $count = (int)fgets($ftp,100);
    $count++;
    rewind($ftp);
    fwrite($ftp,"$count\n$REMOTE_ADDR\n$zeit\n");
    fclose($ftp);
    echo 
    "<font face=Arial, Helvetica, sans-serif size=1>$count</font>";
    }
    else {
       echo 
    "<font face=Arial, Helvetica, sans-serif size=1>$testarray[1]</font>";
       }
    ?>
    Das Script ist nicht von mir, allerdings weiß ich auch nicht von wem des nu ist, ich hab mir das AFAIK mal aus irgendeinem Forum rauskopiert.
    Alles was du machen musst, ist dieses Script dort in die Seite zu klatschen wo der Zähler angezeigt werden soll.
    Und eine Datei namens counter.txt anzulegen und ihr den chmod 777 geben (wenn du auf einem Linux-System arbeitest).


    Ein Script das auf Cookies zurückgreift hab ich leider nicht, allerdings dürfte das nicht all zu hart sein wenn man sich etwas über Cookies informiert:
    http://www.php-center.de/de-html-man...setcookie.html

    Cookies sind nichts anderes als ein Variablen-Container.
    Pro Cookie kannst du eine Variable + dem dazugehörigen Wert speichern.
    Der Cookiename ist hierbei der Variablenname und der Cookiewert eben der Wert dieser Variable.

    Theoretisch musst du jetzt einfach nur ein Cookie anlegen lassen per setcookie():
    PHP-Code:
    setcookie ("chkvar""1"time()+3600); // 1 Std. gültig 
    Der somit angelegte Cookie ist also nichts anderes als das Variablen-Wertepaar: $chkvar = "1"; welches sich selbst nach 1 Std. vom Client-Comp löscht.
    Du brauchst übrigens keine Funktion um einen Cookie vom Script wieder aufzurufen, der Browser baut das Variablen-Wertepaar automatisch ins Script ein solange der Uer die selbe Domain ansteuert von der aus der jeweilige Cookie gesetzt worden ist.

    Jetzt baust du ein simples if()-Konstrukt das checkt ob die Variable $chkvar "1" ist:
    PHP-Code:
    <?php if($chkvar == "1"){
    // in dem Falle soll sich  nix tun.
    }else{
    // hier das jeweilige Counterscript einfügen:


    // das hier ist die Cookiefunktion
    setcookie ("chkvar""1"time()+3600);
    ?>
    Wenn die Variable $chkvar in dem Cookie also 1 und somit gesetzt ist, tut das Script gar nix, weder zählen, noch einen neuen Cookie anlegen.
    sollte aber ein neuer User auf die Seite kommen der noch keinen Cookie hat, oder jemand der schon seit ner Stunde nimmer gezählt wurde, wird sein Visit gezählt und (wieder) ein Cookie angelegt der wiederrum verhindert das der User innerhalb einer Stunde nochmal gezählt wird.

    Ob das wirklich so funktioniert weiß ich nicht genau, ich hab mir das jetzt mehr oder weniger anhand meiner Kenntnisse zusammengereimt, selbst getestet hab ichs noch nie, musst eben mal versuchen.

  9. #9
    Super, danke!
    Das erste Script (ohne cookies) funktioniert ausgezeichnet!
    Das zweite naja, da passiert nüx...
    PHP-Code:
    <?
    if($chkvar == "1")
      {
      $datei = fopen("counter.txt","r+");
      $counterstand = fgets($datei, 10);
      echo $counterstand;
      fclose($datei);
      }
      else
      {
      $datei = fopen("counter.txt","r+");
      $counterstand = fgets($datei, 10);
      $counterstand++;
      echo $counterstand;
      rewind($datei);
      fwrite($datei, $counterstand);
      fclose($datei);
      setcookie ("chkvar", "1", time()+60);
      }
    ?>
    Mir fällt gerade ein, dass die Zeitsperre , ja auch automiatisch dsa steigen des Zählers beim Reloaden verhindert.

  10. #10
    Zitat Zitat
    Original geschrieben von DragonThorm
    ...
    Mir fällt gerade ein, dass die Zeitsperre , ja auch automiatisch dsa steigen des Zählers beim Reloaden verhindert.
    Also funktionierts nu mit der doppelten Sperre?

    BTW: Ahja klar, ausgeben soll er den Zählerstand ja auch wenn nicht gezählt wird.
    Gut das du dran gedacht hast.
    Und schon verkleinert hast du das Script auch.
    Ich glaub ich klau mir deines mal und packs mit in meine Bibliothek.

  11. #11
    Da muss ich mich ja richtig geerht fühlen...
    Aber das Script mit den Cookies funktioniert nicht.
    Das andere schon.

  12. #12
    Zitat Zitat
    Original geschrieben von DragonThorm
    ...
    Aber das Script mit den Cookies funktioniert nicht.
    ...
    Hmpf...
    Nunja, ich hab noch nie mit der Cookiefunktion gearbeitet, vielleicht findet sich ja noch jemand der sich wirklich damit auskennt.

  13. #13
    Achtung, ich platze hier mal als absoluter PHP Newb rein und komme gleich mit einer äußerst dämlichen Frage:

    Gibt es ein Newsscript, das nicht in Tabellenform ausgegeben wird?

    Mein problem ist nämlich, dass irgendwie immer, wenn ich das Script einbinden möchte (ja, klein Virch macht das alles noch von Hand ), zerchießt es mir mein komplettes Design *schnüff*

    Ich will wirklich nur ein ganz einfaches Newssystem haben

  14. #14

    Users Awaiting Email Confirmation

    moinsen. hab auch nochmal ne frage und ich denke das ganze passt hier gut rein. ich wollte langsam aber sicher mal mit php anfangen. habe mir auch schon ein wenig durchgelesen. das war aber eher für die schule und daher -leder gottes- etwas oberflächlich gehalten.
    das ganze war das dokument erstellt von christoph reeg (www.reeg.net) nur, falls es jemanden was sagt. auf der arbeit haben wir auch ne kleine lektüre über php und mysql. diese ist abr leider eher für fortgeschrittene gedacht.... jetzt fehlt mir der übergang.... ich gräuchte am besten etwas für anfänger. von grund auf alles erklärt... (nicht unbedingt php für dummies)
    kann mir da jemand eine passende lektüre empfehlen??

    danke!

    --
    zack

  15. #15
    @Virchowa:

    Eines, das nicht auf Tables bsiert kenne ich nicht, aber du musst im PHP Quelltext einfach nur nach den HTML Tags Suchen, meist in echo "..."; oder <<<EOT ... EOT;

    Wenn das dann z.B. so aussieht:

    PHP-Code:
    echo "<table width=\"400\">"
    kannst du durch ändern der Zahl "400" die breite der Tabellen ändern.
    Oder du machst eine ganz neue Tabell und übernimmst nur die Befehle für mySQL (oder was du halt verwendest), dann kannst du sie auch ohne Tabelle machen, z.B.

    Zitat Zitat
    Title

    Subtitle

    Content

    etc...
    @Zack:
    Hm, das einzig gute was ich kenne ist http://www.selfphp.info/ aber das ist mehr eine Funktionsreferenz, hat mir aber dennoch oft geholfen. Naja, siehs dir einfach mal an!

  16. #16

    Users Awaiting Email Confirmation

    Zitat Zitat
    Original geschrieben von N.2
    @Zack:
    Hm, das einzig gute was ich kenne ist http://www.selfphp.info/ aber das ist mehr eine Funktionsreferenz, hat mir aber dennoch oft geholfen. Naja, siehs dir einfach mal an!
    Hmm... soweit war ich inzwischen auch bschon, mir self php runterzuladen. allerdings ist es dabei vielmehr ein glossar, als es zb bei selfhtml der fall ist. ich dachte eher an ein richtiges buch (mal ne abwechslung), aus dem man von grund auf alles lernen kann.

    wäre nett, wenn ihr mir hier eventuell auch ne isbn nummer hinposten könntet.

    --
    zack

  17. #17
    Zitat Zitat
    Original geschrieben von Zack
    Hmm... soweit war ich inzwischen auch bschon, mir self php runterzuladen. allerdings ist es dabei vielmehr ein glossar, als es zb bei selfhtml der fall ist. ich dachte eher an ein richtiges buch (mal ne abwechslung), aus dem man von grund auf alles lernen kann.

    wäre nett, wenn ihr mir hier eventuell auch ne isbn nummer hinposten könntet.

    --
    zack
    Ich hab auch nach diesem Tutorial von Christoph Reeg gelernt.
    Das war im Grunde mein einziges PHP-Tutorial das ich mir durchgelesen hab, ein Buch hab ich über PHP nie gelesen.
    Wenn man den Kram der in dem Tut. drinsteht zumindest zum größten Teil anwenden kann, ist man schon auf dem richtigen Weg.
    Den Rest lernt man indem man in die Referenz schaut und sich mal informiert welche Funktionen und Befehle es so gibt.
    Als Referenz empfehle ich Die, zum größten Teil, deutschsprachige chm-Datei in der man auch sehr gut suchen kann. (~3MB)
    Wenn deren Anwendung zu komplex ist als das man aus der Beschreibung in der Referenz schlau werden könnte, reicht zumeist den Befehl + "PHP" in Google einzugeben.
    So z.B.

    Ansonsten: Ausprobieren, ausprobieren, ausprobieren.
    Durch die ständigen Konfrontationen mit Fehler die zwangsläufig beim praktizieren des Trial&Error-Prinzips auftreten, hab ich mir mittlerweile ein gutes Gespür für die Fehlersuche angearbeitet.

  18. #18
    Ich habe die Grundsachen in PHP mit http://www.schattenbaum.net/php/ gelernt. Jetzt benutze ich eigentlich nurnoch http://selfphp.info/ als Befehlsreferenz.

    Z.B. Wollt ich vor kurzem wissen wie ich eine Datei perPHP umbenenne gebe ich bei Suchen ein "Datei umbenennen" un schwups weis ich wie ich ne Datei umbenenne. lol

  19. #19

    Users Awaiting Email Confirmation

    danke, danke für die sites. habe mir das von christoph reeg mal ausgedruckt und mal angesehen. ist eigentlich ja ausreichend material, was man da hat. habe mir dazu allerdings noch nen buch bestellt. "php und mysql-schritt für schritt zur datenbankgestützten website" von kevin Yank. bisher ist es imho nen recht empfehlenswertes buch. recht einfach für unerfahrene in dem gebiet erklärt. ich denke damit käme eigentlich jeder zurecht ^^''
    *sinnlospost, ich weiß*

    --
    zack

  20. #20

    *Alle meine alten post wieder neu schreib*

    Ich hatte vorm Umzug die Frage, ob und wenn ja wie man per PHP dateien auf den Server hochladen kann.

    Irgendwer hatte auch geantwortet und meinte das er vielleicht ein skript hier posten wird.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •