PHP Infoscreen Lösung

    • Offizieller Beitrag

    Hat jemand ne Ahnung obs sowas gibt?


    Imho folgendes: Webserver wo der content aktualisiert wird, und terminals, wo firefox im vollbild-modus läuft, und die php-seiten alle 30sek refreshed.
    somit: infoscreen, der zentral wartbar ist.


    gibts da fertige php-lösungen (oder von mir aus auch in ner anderen programmiersprache)? oder muß ich mir sowas selber zimmern ... :-/


    wichtig is, das es webgestüzt läuft, weil die terminals voraussichtlich macmini sein werden, und ich dann mit ner windows-software herzlich wenig anfang. aber firefox läuft ja gott sei dank überall :)

  • Also wenn es auf alle FÄlle Macmini werden dann klingt für mich die weblösung am besten. WIr haben bei uns in der Firma dasselbe nur dass wir es nach langem Überlegen super Simpel gemacht haben.


    Einfach auf ein Share Screenshots abgelegt wo dann der Bildschirmschoner sich die Diashow daraus bastelt. Da kommen die Leute die es aktualisieren klar damit.


    ev. könntet ihr dass auch so machen. Es gibt php/.net Slideshows ohne Ende im Netz. Vielleicht hilft das irgendwie.....

    • Offizieller Beitrag

    ok, ich schaffs nicht ..


    ich check einfach nicht, wie ich aus ner datenbank mehrere datensätze auslese, und diese dann fullscreen darstelle, und alle 10sek zum nächsten datensatz wechsle, bis ich wieder am anfang bin.


    ich mach also meine sql-query, und habe dann das array $result, in dem sich alle meine daten befinden.
    dann übergeb ich das folgendermassen:

    Code
    for ($i = 1; $i <= 5; $i = $i+1) {
    $line = mysql_fetch_assoc($result);


    d.h., die ersten 5 items aus der query werden durchnummeriert, und können angezeigt werden, z.b. so:

    Code
    echo'<p>ID: '.$line["itemid"].' Author: '.$line["author"].'</p>';
    }


    damit krieg ich ne liste der ersten 5 items .. schön und gut.
    ich will aber das erste item anzeigen. dann 10sek warten, dann STATTDESSEN an der gleichen stelle das 2. item anzeigen, wieder warten, dann das 3. item, etc.


    irgendwer ne idee??

  • Hab mal fix ein Beispielscript getippselt. Damit wird ein Meta-Refresh genutzt sowie die Parameter-Übergabe per URL, sodass er alle Datensätze nacheinander abarbeiten kann.

    PHP
    <?php
    $arr = array('test', 'test2', 'test3', 'test4');
    $i = (int)$_GET['i'];
    $j = ($i >= count($arr)-1) ? 0 : $i+1;
    $output = '';
    $output = '<meta http-equiv="refresh" content="3; URL=' . $_SERVER['SCRIPT_NAME'] . '?i=' . $j . '">';
    $output .= $arr[$i];
    echo $output;
    ?>


    So könnte es aussehen. Der Array $arr wäre in deinem Fall $result, Zugriff auf die Felder solltest du so erhalten:

    PHP
    $arr[$i]["itemid"]


    etc...

    • Offizieller Beitrag

    ah ja .. kann ich machen. dann weiß ich wenigstens, WAS der da aus meiner datenbank ausliest :-))
    aber vorher bau ich das jetz mal neu .. irgendwie is mein index.php scho voll mit schrott, der net funktioniert hat, und ich blick nimmer durch ;)


    mal was anderes, bzgl. mysql_query und WHERE-clause:


    is es auch möglich dort ein 'größer als' zu verwenden?
    kennen tu ich ja sowas in der art:
    indexnumber = '$indexid'
    oder
    indexnumber LIKE '$indexid'


    aber geht z.b. auch


    expiration_timestamp > '$timestamp' ??? das wär nämlich ganz toll, weils mir die sql-abfrage echt erleichtern würd ...

  • Zitat

    Original von Martin
    aber geht z.b. auch


    expiration_timestamp > '$timestamp' ??? das wär nämlich ganz toll, weils mir die sql-abfrage echt erleichtern würd ...


    Japp, kann man, da der Timestamp ja eine ganz normale "Integer-Zahl" ist.

    • Offizieller Beitrag

    tjaaa .. weil bei mir nämlich immer nur der letzte timestamp-eintrag akzeptiert wurde! alle anderen einträge in der datenbank wurden ignoriert.


    na ja .. ich hab jetzt jedenfalls das ganze gelöst.
    erst mit einer mysql_query eine datenbankabfrage, dann aus dem ergebnis die datensätze mit expiration-date > $date rausgefiltert, und mit den verbleibenden einträgen ein neues array gemacht, daß ich jetzt auslesen kann :)


    PHP
    $i = '1';
    $array = array();
    while ($row = mysql_fetch_assoc($result)) {
    			if ($row["expdate_stamp"] > $date_stamp) {
    			$array["itemid".$i] = $row["itemid"];
    			$array["title".$i] = $row["title"];
    			$array["text".$i] = $row["text"];
    			$i++;
    			}
    }


    das ergebnis sind ein ganzer haufen variablen, die ich schön feinsäuberlich ansperchen kann ;)
    array["itemid1"], array["title2"], etc. :)


    also mach ich meine ausgabe ca so:


    PHP
    $j = (int)$_GET['line'];
    echo '<p>'.$array["itemid".$j].$array["title".$j].$array["text".$j].'</p>';
    $j++;
    if ($j >= $i) { $j = '1'; } 
    echo'<meta http-equiv="refresh" content="6; URL='.$_SERVER['SCRIPT_NAME']. '?line=' . $j . '">';


    ist vielleicht nicht supersauber, haut aber echt gut hin ;) bin happy :)


    und vielen dank an cyberblitzbirne für die tipps!!!

    • Offizieller Beitrag

    sooo .. ich schreibs einfach in diesen thread rein, weils dazu paßt ..


    hat jemand ne idee, wie ich dynamischen code in css-files reinbring?


    es geht darum, daß ich gewisse variablen habe, die ich auf der kompletten seite anpassen will (breiten von div-bereichen, etc.), diese mehrmals im css-file auftauchen, und ich sie aber nur an einer stelle einstellen möchte!
    mit %-angaben hab ich rumprobiert, aber nix zusammengebracht. drum dachte ich an ne lösung a la php:

    PHP
    <? include (variables.php); ?>


    aber sowas geht ja in einem normalen css-file nicht ....


    muß das css-file überhaupt die endung .css haben? läßt sich da auch ein .php-file mit css-code bestücken?? kann ich dann trotzdem variablen benutzen?


    tja .. fragen über fragen ;)

  • Dafür hast du 2 Möglichkeiten.


    Entweder du schreibst den CSS-Code inline in den header-Bereich, also quasi so:

    PHP
    <?php include (variables.php); ?>
    ...
    <style type="text/css">
    div#lala {
      width: <?php echo $var_width; ?>
    }
    </style>
    ...


    Oder du bindest eine .php-Datei als CSS-Datei ein, mittels header(). Also quasi so:
    style.php

    PHP
    <?php
    header("Content-type: text/css");
    $var_width = '180px';
    div#lala {
      width: <?php echo $var_width; ?>
    }
    ?>


    Aufruf dann so:

    Code
    <link rel="stylesheet" type="text/css"  media="screen" href="style.php">


    Wichtig ist nur der header()-Aufruf am Anfang der style.php, damit die PHP-Datei als CSS geparsed wird. :)

    • Offizieller Beitrag

    na ja .. aus dem ganzen ein richtiges public project zu machen wär natürlich cool :)


    kennt sich wer mit gnu-licensing aus? derzeit is die anwendung soweit, daß sie funktioniert .. aber kaum adaptierbar is. außerdem gehört der code natürlich komplett gesäubert .. is derzeit bissi kudelmudel.


    aber wenn jemand interesse hat bin ich gern bereit zu teilen ;)


    [edit]
    ok .. kommando zurück :-/ der scheiß geht aus irgendeinem grund scho wieder nimmer! ich frag mich echt warum .. ich hab eigentlich alles getestet, und halt jetz ne woche oder zwei nimmer angeschaut .. und plötzlich klappt der bilder-upload und das scaling nimmer!!! scheiß ... :-((((
    ich bastel mal weiter .. fuck ..
    [/edit]

    • Offizieller Beitrag

    ok .. aus irgendeinem grund erkennt libgd2 plötzlich den befehl imagecreatefromjpeg nimmer ..
    was solls. hab die library durch php5-gd ersetzt, und jetzt gehts wieder. dafür hab ich ein anderes prob. anscheinend is in meinen if-else schleifen der hund drin ...


    folgendes hab ich gebaut, um bilder nach dem upload auf die richtige größe zu skalieren (nur ein auszug):


    PHP
    if ( $breite < 400 and $hoehe < 750 ) {
          $neueBreite = 400;
          $neueHoehe = intval($hoehe*$neueBreite/$breite);
          if ( $neueHoehe < 750 ) {
               $neueHoehe = 750;
               $neueBreite = intval($breite*$neueHoehe/$hoehe); }
          else {}
          $image = imagecreatetruecolor($neueBreite,$neueHoehe); }


    jedenfalls kommt mir vor, daß die 2te if-bedingung (also ob die neue Höhe des Bildes kleiner als 750 pixel ist) einfach ignoriert wird!
    irgendwelche ideen?? es hat schonmal funktioniert, und ich seh auch keinen fehler im code .... :-((

  • musst du oben Breite und Höhe überprüfen?
    weil eigentlich tust ja nur Breite ändern, damit Höhe anpassen (egal wie groß die is) und dann schaust, ob die angepasst Höhe nochmal <750 is und dann erst wenn das is, dann go


    kommt mir ein bisschen komisch vor, oben das 2. logische Statement rechts vom AND is einfach egal :)
    außer natürlich, du möchtest nur Bilder skalieren, wo sowohl Breite, als auch Höhe darunter is

    • Offizieller Beitrag

    jo .. nein .. da gibts noch ein paar elseif-zeilen, wo alles abgefragt wird.


    also: bilder die in beiden achsen kleiner sind, bilder die in jeweils einer achse kleiner sind, und dann natürlich, ob x-achse kleiner y-achse oder umgekehrt is (also ob das bild querformat oder hochformat is).


    der ganze teil is also länger .. komisch is einfach, daß in 2 fällen, wo ich doppelte if-bedingungen hab, die 2te jeweils ignoriert wird!


    aber mein code oben ist doch schon in ordnung, oder??


  • kann kaum php, aber ja, schaut nach syntaktisch richtig aus