kostenloser Webspace werbefrei: lima-city


Suche auf lima-city

  • in: ip auf Webseite anzeigen lassen, und loggen

    geschrieben von webnfo

    Hallo

    kleines, einfaches Beispiel zum Speichern als Log-Datei

    <?php 
    // ------------------------------------------------------------------ 
    
    
    // ------ get current request data ------ 
    $user_ipaddr = $_SERVER['REMOTE_ADDR']; 
    $user_method = $_SERVER['REQUEST_METHOD']; 
    $user_rqtime = $_SERVER['REQUEST_TIME']; 
    $user_rqpage = $_SERVER['REQUEST_URI']; 
    
    // --- usw --- HTTP_REFERER --- HTTP_USER_AGENT --- 
    
    // ------ get current date/time ------ 
    $tx_yea = date('Y'); 
    $tx_mon = date('m'); 
    $tx_day = date('d'); 
    
    
    // ------------------------------------------------------------------ 
    
    
    // ------ set logfile path/name --- each month ------ 
    $log_file = 'ilog_'.$tx_yea.'_'.$tx_mon.'.txt'; 
    
    // ------ set logfile path/name --- each day ------ 
    ## $log_file = 'ilog_'.$tx_yea.'_'.$tx_mon.'_'.$tx_day.'.txt'; 
    
    
    // ------------------------------------------------------------------ 
    
    
    // ------ create new data row --- csv string ------ 
    $new_row_str = ''.$user_ipaddr.'|'.$user_method.'|'.$user_rqtime.'|'.$user_rqpage.'|'."\n"; 
    
    
    // ------ write new logfile --- if not exists ------ 
    if (!file_exists($log_file)) { 
    $top_row_str = 'userip|method|time|page|'."\n"; 
    $save_new = file_put_contents($log_file, $top_row_str, LOCK_EX); 
    } 
    
    // ------ write into logfile --- new data row ------ 
    $save_row = file_put_contents($log_file, $new_row_str, FILE_APPEND | LOCK_EX);
    
    
    
    // ------------------------------------------------------------------ 
    ?>



    für das Speichern der Log-Files könnte / sollte man einen eigenen Ordner nehmen
    z.B: logdata/ ...
    $log_file = 'logdata/ilog_'.$tx_yea.'_'.$tx_mon.'.txt';


    Datei Beispel für November 2014 sieht dann so aus:
    logdata/ilog_2014_11.txt

    zum Auslesen dann die Dateien als CSV behandeln mit Trenner | (Pipe-Zeiichen)

    Anstatt csv Datei könnte / sollte man sowas in (MySQL) Datenbank speichern,
    dann kann man auch mehr damit machen ... beim Speichern und Daten wieder auslesen

  • in: jQuery bzw. JS - Stunden aus 2 Zeiten berechnen

    geschrieben von webnfo

    naja ... fast ... bei Deiner neuen Version ( jsfiddle ) kommt

    von 22:00 bis 01:00 ---> 45 Stunden
    von 22:00 bis 02:00 ---> 44 Stunden

    ich habe auch noch einmal die Rechnung selber neu überarbeitet,
    bei mir funktioniert es jetzt .... siehe meine neue Version: http://jsfiddle.net/Sm5Dm/3/

    von 22:00 bis 01:00 ---> 3 Stunden
    von 22:00 bis 02:00 ---> 4 Stunden

    diie neue Berechnung sieht bei mir so aus

    <html>
    <head>
    <title>Stunden</title>
    
    <script type="text/javascript">
    
    var zeit = 0;
    var von, bis;
    
    function change(von, bis, ergebnis) {
        var value1 = document.getElementById(von).options[document.getElementById(von).selectedIndex].value;
        var value2 = document.getElementById(bis).options[document.getElementById(bis).selectedIndex].value;
        value1 = value1.substr(0, 2) * 60 + value1.substr(3, 2) * 1;
        value2 = value2.substr(0, 2) * 60 + value2.substr(3, 2) * 1;
        
        if (value1 == value2) {
            zeit = 24 * 60;
        } else if (value1 > value2) {
            zeit = (((24 - (value1/60)) + (value2/60)) * 60);
        } else {
            zeit = value2 - value1;
        }
        
        var hrs = (zeit / 60); 
        
        document.getElementById(ergebnis).value = hrs
    	
    }
    </script>
    
    </head>
    <body>
    <h1>Stunden</h1>
    
    <br>
     
    <form name="jump" method="post" action="">
    
     Tag1 
    
     ... Zeit von: <select id="von_01" onChange="change('von_01', 'bis_01', 'hrs_01');"> 
    <option value="00:00">00:00</option>
    <option value="00:30">00:30</option>
    <option value="01:00">01:00</option>
    <option value="01:30">01:30</option>
    <option value="02:00">02:00</option>
    <option value="02:30">02:30</option>
    <option value="03:00">03:00</option>
    <option value="03:30">03:30</option>
    <option value="04:00">04:00</option>
    <option value="04:30">04:30</option>
    <option value="05:00">05:00</option>
    <option value="05:30">05:30</option>
    <option value="06:00">06:00</option>
    <option value="06:30">06:30</option>
    <option value="07:00">07:00</option>
    <option value="07:30">07:30</option>
    <option value="08:00">08:00</option>
    <option value="08:30">08:30</option>
    <option value="09:00">09:00</option>
    <option value="09:30">09:30</option>
    <option value="10:00">10:00</option>
    <option value="10:30">10:30</option>
    <option value="11:00">11:00</option>
    <option value="11:30">11:30</option>
    <option value="12:00">12:00</option>
    <option value="12:30">12:30</option>
    <option value="13:00">13:00</option>
    <option value="13:30">13:30</option>
    <option value="14:00">14:00</option>
    <option value="14:30">14:30</option>
    <option value="15:00">15:00</option>
    <option value="15:30">15:30</option>
    <option value="16:00">16:00</option>
    <option value="16:30">16:30</option>
    <option value="17:00">17:00</option>
    <option value="17:30">17:30</option>
    <option value="18:00">18:00</option>
    <option value="18:30">18:30</option>
    <option value="19:00">19:00</option>
    <option value="19:30">19:30</option>
    <option value="20:00">20:00</option>
    <option value="20:30">20:30</option>
    <option value="21:00">21:00</option>
    <option value="21:30">21:30</option>
    <option value="22:00">22:00</option>
    <option value="22:30">22:30</option>
    <option value="23:00">23:00</option>
    <option value="23:30">23:30</option>
    <option value="24:00">24:00</option>
    </select>
    
     ... Zeit bis: <select id="bis_01" onChange="change('von_01', 'bis_01', 'hrs_01');"> 
    <option value="00:00">00:00</option>
    <option value="00:30">00:30</option>
    <option value="01:00">01:00</option>
    <option value="01:30">01:30</option>
    <option value="02:00">02:00</option>
    <option value="02:30">02:30</option>
    <option value="03:00">03:00</option>
    <option value="03:30">03:30</option>
    <option value="04:00">04:00</option>
    <option value="04:30">04:30</option>
    <option value="05:00">05:00</option>
    <option value="05:30">05:30</option>
    <option value="06:00">06:00</option>
    <option value="06:30">06:30</option>
    <option value="07:00">07:00</option>
    <option value="07:30">07:30</option>
    <option value="08:00">08:00</option>
    <option value="08:30">08:30</option>
    <option value="09:00">09:00</option>
    <option value="09:30">09:30</option>
    <option value="10:00">10:00</option>
    <option value="10:30">10:30</option>
    <option value="11:00">11:00</option>
    <option value="11:30">11:30</option>
    <option value="12:00">12:00</option>
    <option value="12:30">12:30</option>
    <option value="13:00">13:00</option>
    <option value="13:30">13:30</option>
    <option value="14:00">14:00</option>
    <option value="14:30">14:30</option>
    <option value="15:00">15:00</option>
    <option value="15:30">15:30</option>
    <option value="16:00">16:00</option>
    <option value="16:30">16:30</option>
    <option value="17:00">17:00</option>
    <option value="17:30">17:30</option>
    <option value="18:00">18:00</option>
    <option value="18:30">18:30</option>
    <option value="19:00">19:00</option>
    <option value="19:30">19:30</option>
    <option value="20:00">20:00</option>
    <option value="20:30">20:30</option>
    <option value="21:00">21:00</option>
    <option value="21:30">21:30</option>
    <option value="22:00">22:00</option>
    <option value="22:30">22:30</option>
    <option value="23:00">23:00</option>
    <option value="23:30">23:30</option>
    <option value="24:00">24:00</option>
    </select>
    
     ... Stunden: <input id="hrs_01" type="text" name="hrs_01" size="4" maxlength="4">
    
    <br>
    <br>
    
     Tag2 
    
     ... Zeit von: <select id="von_02" onChange="change('von_02', 'bis_02', 'hrs_02');"> 
    <option value="00:00">00:00</option>
    <option value="00:30">00:30</option>
    <option value="01:00">01:00</option>
    <option value="01:30">01:30</option>
    <option value="02:00">02:00</option>
    <option value="02:30">02:30</option>
    <option value="03:00">03:00</option>
    <option value="03:30">03:30</option>
    <option value="04:00">04:00</option>
    <option value="04:30">04:30</option>
    <option value="05:00">05:00</option>
    <option value="05:30">05:30</option>
    <option value="06:00">06:00</option>
    <option value="06:30">06:30</option>
    <option value="07:00">07:00</option>
    <option value="07:30">07:30</option>
    <option value="08:00">08:00</option>
    <option value="08:30">08:30</option>
    <option value="09:00">09:00</option>
    <option value="09:30">09:30</option>
    <option value="10:00">10:00</option>
    <option value="10:30">10:30</option>
    <option value="11:00">11:00</option>
    <option value="11:30">11:30</option>
    <option value="12:00">12:00</option>
    <option value="12:30">12:30</option>
    <option value="13:00">13:00</option>
    <option value="13:30">13:30</option>
    <option value="14:00">14:00</option>
    <option value="14:30">14:30</option>
    <option value="15:00">15:00</option>
    <option value="15:30">15:30</option>
    <option value="16:00">16:00</option>
    <option value="16:30">16:30</option>
    <option value="17:00">17:00</option>
    <option value="17:30">17:30</option>
    <option value="18:00">18:00</option>
    <option value="18:30">18:30</option>
    <option value="19:00">19:00</option>
    <option value="19:30">19:30</option>
    <option value="20:00">20:00</option>
    <option value="20:30">20:30</option>
    <option value="21:00">21:00</option>
    <option value="21:30">21:30</option>
    <option value="22:00">22:00</option>
    <option value="22:30">22:30</option>
    <option value="23:00">23:00</option>
    <option value="23:30">23:30</option>
    <option value="00:00">00:00</option>
    </select>
    
    ... Zeit bis: <select id="bis_02" onChange="change('von_02', 'bis_02', 'hrs_02');"> 
    <option value="00:00">00:00</option>
    <option value="00:30">00:30</option>
    <option value="01:00">01:00</option>
    <option value="01:30">01:30</option>
    <option value="02:00">02:00</option>
    <option value="02:30">02:30</option>
    <option value="03:00">03:00</option>
    <option value="03:30">03:30</option>
    <option value="04:00">04:00</option>
    <option value="04:30">04:30</option>
    <option value="05:00">05:00</option>
    <option value="05:30">05:30</option>
    <option value="06:00">06:00</option>
    <option value="06:30">06:30</option>
    <option value="07:00">07:00</option>
    <option value="07:30">07:30</option>
    <option value="08:00">08:00</option>
    <option value="08:30">08:30</option>
    <option value="09:00">09:00</option>
    <option value="09:30">09:30</option>
    <option value="10:00">10:00</option>
    <option value="10:30">10:30</option>
    <option value="11:00">11:00</option>
    <option value="11:30">11:30</option>
    <option value="12:00">12:00</option>
    <option value="12:30">12:30</option>
    <option value="13:00">13:00</option>
    <option value="13:30">13:30</option>
    <option value="14:00">14:00</option>
    <option value="14:30">14:30</option>
    <option value="15:00">15:00</option>
    <option value="15:30">15:30</option>
    <option value="16:00">16:00</option>
    <option value="16:30">16:30</option>
    <option value="17:00">17:00</option>
    <option value="17:30">17:30</option>
    <option value="18:00">18:00</option>
    <option value="18:30">18:30</option>
    <option value="19:00">19:00</option>
    <option value="19:30">19:30</option>
    <option value="20:00">20:00</option>
    <option value="20:30">20:30</option>
    <option value="21:00">21:00</option>
    <option value="21:30">21:30</option>
    <option value="22:00">22:00</option>
    <option value="22:30">22:30</option>
    <option value="23:00">23:00</option>
    <option value="23:30">23:30</option>
    <option value="00:00">00:00</option>
    </select>
    
     ... Stunden: <input id="hrs_02" type="text" name="hrs_02" size="4" maxlength="4">
    
    <br>
    <br>
    
     ... OK ... <input type="submit" name="run" value="Speichern">
     
    </form>
    
    <br>
    <br>
    
    </body>
    </html>


    habe aus der Variable value mal value1 gemacht,
    weil "value" in JS schon selbst eine "Bedeutung" hat

    die entscheidende Teil in meiner neuen Berechnung ist:
    ...
    else if (value1 > value2) { 
    zeit = (((24 - (value1/60)) + (value2/60)) * 60);
    }


    und es sieht so aus, als ob es damit funktioniert, habe es bischen getestet :=)

    PS: Du kannst (wenn es funktioniert) meinen Code auch in dein github übernehmen :=)

    Jetzt brauch ich das ganze noch für 31 Tage
    und mit Summe: Stunden Gesamt (alle Tage) am Ende

    EDIT:
    ... habe mal vesucht die onChange Funktion nur den Tag als eizigen Wert zu übergeben
    z.b:
    onChange="change('02')"
    ... und nicht alle 3 IDs in Funktions-Aufruf
    die Funktion soll dann aus übergebenem Tag (z.B: '02') die Strings der 3 IDs selber bauen

    function change(d) { 
    
    	var von = "von_" + d; 
    	var bis = "bis_" + d; 
    	var ergebnis = "hrs_" + d; 
    	
    	... 
    }


    aber (keine Ahnung warum) das funktioniert irgendwie nicht ... ?!?
  • in: 2 Hintergrundbilder übereinander legen mit CSS

    geschrieben von webnfo

    einfach 2 Hintergrund-Bilder mit CSS bei body und bei Deinem Content DIV

    body { 
      background: url('ganze_breite.jpg') no-repeat;
    } 
    
    #content {
      width:960px; 
      background: url('zweites_bild.jpg') no-repeat;
    }


    das zweite Billd (CSS background) muss halt in die "richtige" id für Dein Content DIV
    hier nur als Beispiel für die id="content", Deine id kann auch anderen Name haben.


    wenn Bild zu klein / zu groß ist,
    kann man es mit CSS auch auf die Box-Breite strecken

    BSP
    #content {
      width:960px; 
      background: url('zweites_bild.jpg') no-repeat;
      -moz-background-size: 100%;
      -webkit-background-size: 100%;
      -khtml-background-size: 100%;
      background-size: 100%;
    }



    oder CSS3 ... cover
    #content {
      width:960px; 
      background: url('zweites_bild.jpg') no-repeat;
      -webkit-background-size: cover;
      -moz-background-size: cover;
      -o-background-size: cover;
      background-size: cover;
    }


    siehe dazu auch: http://css-tricks.com/perfect-full-page-background-image/

    oder googeln nach "CSS hintergrund strecken" oder ähnliche Suche

  • in: [PHP] Array alphabetisch ordnen und dann Buchstaben mitgeben

    geschrieben von webnfo

    Du kannst auch ein Hilfs-Array anlegen,
    das für alle Buschstaben von A bis Z jeweils ein Sub-Array enthält
    und dann, je Anfangs-Buschstabe, den Name in das passende Sub-Array ablegen

    Dann kannst Du dieses Hilfs-Array mit foreach() durchlaufen,
    und jeden Buschstaben als Titel ausgeben, und wenn im
    Sub-Array auch was steht, dann die Namen als Liste ausgeben
    wenn nicht, einfach eine Leer-Zeile z.B: mit <p>&nbsp;</p>

    der folgende Code ist (hofentlich) selbst-Erklärend

    <?php 
    // -------------------------------------------- 
    
    $verz_data = array( 
    	'A' => array(), 'B' => array(), 'C' => array(), 'D' => array(), 'E' => array(), 
    	'F' => array(), 'G' => array(), 'H' => array(), 'I' => array(), 'J' => array(), 
    	'K' => array(), 'L' => array(), 'M' => array(), 'N' => array(), 'O' => array(), 
    	'P' => array(), 'Q' => array(), 'R' => array(), 'S' => array(), 'T' => array(), 
    	'U' => array(), 'V' => array(), 'W' => array(), 'X' => array(), 'Y' => array(), 
    	'Z' => array(), 
    ); 
    
    
    // -------------------------------------------- 
    
    $alledateien = scandir('.');
    
    foreach ($alledateien as $verzeichnis) {
    	if(($verzeichnis != '.') && ($verzeichnis != '..') && is_dir($verzeichnis)) { 
    		$buschstabe = strtoupper(substr($verzeichnis, 0, 1)); 
    		$verz_data[$buschstabe][] = $verzeichnis; 
    	}
    }
    
    
    // -------------------------------------------- 
    
    foreach ($verz_data as $key => $val) { 
    	
    	print "<hr />\n"; 
    	print "<h2>$key</h2>\n"; // ---  der Buschstabe aus Alphabet --- 
    	print "<hr />\n"; 
    	
    	if (!empty($val)) { // --- Name(n) zum Buschstabe vorhanden --- 
    		sort($val);
    		print "<ul>\n"; 
    		foreach($val as $name) { print "<li>$name</li>\n"; }
    		print "</ul>\n"; 
    	}
    	else { 
    		print "<p>&nbsp;</p>\n"; // --- kein Name zum Buschstabe vorhanden --- 
    	}
    
    }
    
    
    print "<hr />\n"; 
    
    
    
    // -------------------------------------------- 
    ?>


    sonst einfach nochmal nach-fragen :=)


    mit diesem Code wird jeder Buschstabe (A bis Z) ausgegeben,
    wenn mit Namen dazu, dann diese als Liste (sonst nur Leerzeile)

    ... anstatt <h2> für Buschstabe und <ul> Liste für Namen
    kannst Du ja auch eine andere HTML Formatierung machen

  • in: jQuery bzw. JS - Stunden aus 2 Zeiten berechnen

    geschrieben von webnfo

    Hallo @willstdueswissen

    vielen Dank, schonmal ein ganz guter Ansatz, aber gleich als Github Projekt ?!
    solange man noch am experimentieren / testen / entwickeln ist finde ich JsFiddle besser,
    dort kann man den Code gleich ausführen und neue Version erstellen (ohne Account)
    oder für nur Quellcode gibt es ja auch noch Pastebin, etc.
    .... naja, egal ... ich bin ja nur zu faul mir einen Account anzulegen ... :=)


    Dein Code funktioniert auch, solange von / bis innerhalb von einem Tag ist

    aber wenn ich z.B. von 23:00 Uhr bis 01:00 Uhr mache, dann kommt als Ergebnis = 47
    oder wenn ich z.B. von 23:00 Uhr bis 02:00 Uhr mache, dann kommt als Ergebnis = 47
    ... bei von 23:00 kommt immer 47 raus ... wenn bis kleiner als 23:00 ist (Tagesgrenze)

    oder wenn ich z.B. von 22:00 Uhr bis 01:00 Uhr mache, dann kommt als Ergebnis = 46
    oder wenn ich z.B. von 22:00 Uhr bis 02:00 Uhr mache, dann kommt als Ergebnis = 46
    ... bei von 22:00 kommt immer 46 raus ... wenn bis kleiner als 22:00 ist (Tagesgrenze)


    habe den Code zum Testen mal auf 2 Tage erweitert
    und bei JsFiddle eingetragen ... hier: http://jsfiddle.net/Sm5Dm/
    (da kann man mit Button "Run" den Code ausführen und sieht das Ergebnis)


    ich habe eine Excel Formel dazu, die scheinbar ganz gut funktioniert
    ... hier Zeile 10 der Tabelle, wobei ... D = Zeit von ... und ... E = Zeit bis
    =WENN(ISTKTEXT(D10); WENN(E10>D10;STUNDE(E10-D10)+(MINUTE(E10-D10))/60;STUNDE(1-D10+E10)+ABS((MINUTE(E10)-MINUTE(D10))/60));" ")


    vielleicht kann man ja diese Excel Formel in JavaScript umsetzen,
    bzw. durch Vergleich den "Fehler" finden, der bei Tagesgrenze auftritt.


  • in: jQuery bzw. JS - Stunden aus 2 Zeiten berechnen

    geschrieben von webnfo

    Hallo

    ich möchte für mehrere Tage die Stunden zwischen zwei Zeiten berechnen.

    je Tag kann User aus DropDown (select) die Zeit "von" und die Zeit "bis" auswählen

    per JS / jQuery sollen damit je Tag die Stunden zwischen den Zeiten berechnet werden,

    BSP: von = 18:30 ... bis = 22:00 ... Ergebnis = 3,5 Stunden
    BSP: von = 16:00 ... bis = 18:00 ... Ergebnis = 2,0 Stunden

    das ganze soll auch über die Tages-Grenze hinweg funktionieren

    BSP: von = 23:30 ... bis = 01:00 ... Ergebnis = 1,5 Stunden
    BSP: von = 22:00 ... bis = 06:00 ... Ergebnis = 8,0 Stunden

    Das Ergebnis soll dann (automatisch per JS / jQuery)
    für den jeweiligen Tag is das input text feld für "Stunden" eingetragen werden

    Beispiel Code siehe hier: http://jsfiddle.net/r53Yj/1/

    Zudem soll auch eine Summe der Stunden im Feld "Stunden Gesamt" ankommen

    leider habe ich dabei Probleme ... mit meiner jQuery .change(function () { }

    + wie nur die Werte (value) für aktuellen Tag ermitteln ... mit id / name selector ?
    + und dann auch nur für diesen Tag die Stunden in das Stunden-Textfeld eintragen


    Die einzelnen Felder (select / input) haben zwar eindeutige IDs, ("von_01", "von_02", etc)
    aber ich bekomme es nicht hin, jeweils nur die zusammen gehörenden
    auszulesen / anzusprechen ... evtl muss ich andere ID-Struktur machen ?? wie?

    also mein
    $( "select" ).change(function () { ... }
    holt immer alle Texte
    aber immer nur den ersten Value .... wie kann ich je für nur 1 Tag (Zeile) auswerten ?

    Ihr könnt gerne mein jsfiddle Code ab-ändern und neue Version hier ver-Linken.
    Danke
  • in: Pulldown-Menü, Zeichenanzahl begrenzen

    geschrieben von webnfo

    Hallo

    Wenn Dir die DropDown Box zu Breit für Dein Layout / Design ist,
    dann kannst Du die Breite der select Box per CSS width festlegen

    <select name="top" style="width:140px;">
      <option>Michael Jackson</option>
      <option>Nina Hagen</option>
      <option>Marianne Rosenberg</option>
    </select>


    Die DropDown Box ist dann genau so breit wie mit CSS festgelegt (hier 140 Pixel)
    und bei Auswahl sieht man dann trotzdem den längeren Text der <option> Elemente


    Oder du baust die select Box <option> Elemente (per PHP) so zusammen,
    dass der Text ein anderer (kürzer) ist als der Wert (value), der übergeben wird.

    <select name="top">
      <option value="Michael Jackson">M.Jackson</option>
      <option value="Nina Hagen">N.Hagen</option>
      <option value="Marianne Rosenberg">M.Rosenberg</option>
    </select>



    Bsp mit PHP und Array (key => value)
    $top_data = array(
      'M.Jackson'   => 'Michael Jackson', 
      'N.Hagen'     => 'Nina Hagen', 
      'M.Rosenberg' => 'Marianne Rosenberg', 
    ); 
    
    print "<select name=\"top\">\n"; 
    
    foreach($top_data as $key=>$val) { 
      print "  <option value=\"$val\">$key</option>\n"; 
    }
    
    print "</select>\n";


    Anstatt den Key schon im Array vorhanden, kann man auch
    Array nur mit Werte haben und (mit PHP) kürzen, z.B. mit substr()
    aber dann bekommt man oft nur Teil des Vornamen (zu kurz)

    hier BSP ... nur die ersten 8 Zeichen im Text
    $top_data = array(
      'Michael Jackson', 
      'Nina Hagen', 
      'Marianne Rosenberg', 
    ); 
    
    $max_length = 8; // --- maximale Zeichen 
    
    print "<select name=\"top\">\n"; 
    
    foreach($top_data as $val) { 
      if ($short_length < strlen($val) { 
        $short = substr($val, 0, $max_length);
      } 
    
      print "  <option value=\"$val\">$short</option>\n"; 
    }
    
    print "</select>\n";


    EDIT: ich denke das mit $max_length könnte für Dich das richtige sein,
    aber mach es nicht zu kurz, damit noch klar ist, was überhaupt gemeint ist


    um vom Wort vor Leerzeichen nur den ersten Buschtabe übrig zu lassen,
    könnte mit explode und dann substr von erstem Element davon machen,

    $top_data = array(
      'Michael Jackson', 
      'Nina Hagen', 
      'Marianne Rosenberg', 
    ); 
    
    print "<select name=\"top\">\n"; 
    
    foreach($top_data as $val) { 
      $namedata = explode(' ',$val); 
    
      $vor_name = substr($namedata[0], 0, 1); 
      $nachname = $namedata[1]; 
      $txtshort = $vor_name.'.' '.$nachname; 
      print "  <option value=\"$val\">$txtshort</option>\n"; 
    }
    
    print "</select>\n";

    ist nur ne Idee ... ungetestet ....
    es gibt bestimmt auch noch andere Möglichkeiten, z.B. preg_replace mit Pattern


  • in: Benutzer-ip Speichern

    geschrieben von webnfo

    Hallo

    mach mal HTML-Zeilenumbruch z.B. <br /> zwischen die IP Ausgabe zur Test-Ansicht
    dann kann man besser sehen, ob es die "gleichen" sind, wenn sie untereinander stehen

    und dann .... FRAGE: .... wird denn bei ....

    echo('<br />'.$post_ip);
    echo('<br />'.$_SERVER['REMOTE_ADDR']);


    .... genau das gleiche ausgegeben ??

    ahh ... ich denke es ist in $post_ip noch der Zeilenumbruch
    \n
    mit dran,
    denn beim Speichern hängst du ja das
    \n
    mit dran,
    was aber in $_SERVER['REMOTE_ADDR'] nicht vorkommt, daher immer ungleich

    das könnte dazu führen, dass die if-Bedingung nicht hinhaut,
    also mach noch trim() mit rein

    if ( trim($post_ip) != $_SERVER['REMOTE_ADDR']) {
    
    ...
    
    }


    oder halt schon eine Zeile vorher ....
    $post_ip = trim($post_ip);

    damit dieses \n vom Ende des String (der letzten IP) entfernt wird.

    Edit:
    oder schon beim Einlesen der Daten mit file() die Umbrüche weg lassen:

    $post_ip = file('ip.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);



    PS: grundsätzlich ist Deine Herangegensweise es so zu speichern Quatsch,
    denn es wird immer nur die letzte Zeile / letzte IP geprüft, und wenn mehr als 1 User
    gleichzeitig Online sind, dann kann das sooooo schon nicht mehr klappen !!!

    Speichere die IP und die Zeit besser in eine Zeile (mit Trenner-Zeichen dazwischen)
    und lesen dann mit fgetscsv() alle Zeilen in ein (multidiemensionales) Array,
    dann kannst du dieses Array durchlaufen ob die IP darin schon vorkommt.

    Dann hast Du noch das Problem, dass die eine Datei größer und größer wird
    also du solltest sehr "alte" Einträge auch wieder (automatisch) löschen,
    oder (wie in Antwort oben) je Monat eine neue Datei anlegen ...
    oder noch besser, das mit MySQL machen, das würde alle Probleme lösen :)

  • in: Benutzer-ip Speichern

    geschrieben von webnfo

    hier ein BSP Code um

    + mehr als "nur" die IP-Adresse speichern
    ... (Zeit, Browser, Referer, etc) ... in CSV Datei

    + für jeden Monat eine neue Datei (in einem Unter-Ordner)
    ... denn wenn alles in eine Datei, dann wird die schnell sehr groß

    ---> allgemein ... sowas sollte man ehh besser in MySQL DB speichern
    aber hier mal als BSP mit Speichern in Datei (csv)


    FILE: save_user_ip.php

    <?php 
    // ----------------------------------------------- 
    
    $save_path = 'udata';  
    
    if (!file_exists($save_path)) { mkdir($save_path,0777); } 
    
    // --- der CHMOD Wert 0777 kann auch anders, z.B.: 0666
    // --- oder den Ordner per Hand vorher in FTP anlegen 
    
    $save_date = date('Y').'_'.date('m'); 
    
    $save_file = $save_path.'/ips_'.$save_date.'.csv'; 
    
    // ----------------------------------------------- 
    
    $usr_ipadr = $_SERVER['REMOTE_ADDR']; 
    $usr_rtime = $_SERVER['REQUEST_TIME']; 
    $usr_agent = $_SERVER['HTTP_USER_AGENT']; 
    $usr_refer = (isset($_SERVER['HTTP_REFERER'])) ? $_SERVER['HTTP_REFERER'] : 'no-referer'; 
    ### $srv_host = $_SERVER['HTTP_HOST']; 
    $usr_rquri = $_SERVER['REQUEST_URI']; 
    
    $delimiter = '|'; 
    
    $head_strg = ''; 
    $head_strg .= 'ipadr'.$delimiter; 
    $head_strg .= 'rtime'.$delimiter; 
    $head_strg .= 'agent'.$delimiter; 
    $head_strg .= 'refer'.$delimiter; 
    ### $head_strg .= 'shost'.$delimiter; 
    $head_strg .= 'rquri'."\n"; 
    
    $save_strg = (!file_exists($save_file)) ? $head_strg : ''; 
    
    $save_strg .= $usr_ipadr.$delimiter; 
    $save_strg .= $usr_rtime.$delimiter; 
    $save_strg .= $usr_agent.$delimiter; 
    $save_strg .= $usr_refer.$delimiter; 
    ### $save_strg .= $srv_host.$delimiter; 
    $save_strg .= $usr_rquri."\n"; 
    
    
    $fp = fopen($save_file, 'a');
    fwrite($fp, $save_strg);
    fclose($fp);
    
    
    // ----------------------------------------------- 
    
    
    // --------- Ausgabe der gespeicherten Daten ----- 
    
    
    print '<p>File Name: <u>'.$save_file.'</u></p>' . "\n"; 
    
    
    print '<p>CSV String:</p>' . "\n"; 
    print '<pre style="margin:18px 4px; padding:6px; text-align:left; background:#FFFFAA; color:#0000AA;">'."\n"; 
    print_r($save_strg)."\n"; 
    print '</pre>'."\n"; 
    
    
    $parsed_csv = str_getcsv($save_strg,$delimiter); 
    
    print '<p>Array Data:</p>' . "\n"; 
    print '<pre style="margin:18px 4px; padding:6px; text-align:left; background:#DEDEDE; color:#0000AA;">'."\n"; 
    print_r($parsed_csv)."\n"; 
    print '</pre>'."\n"; 
    
    
    
    
    // ----------------------------------------------- 
    ?>


    den Teil "--- Ausgabe der gespeicherten Daten ---" kann man auch weg lassen,
    ist nur zur DEMO, damit man gleich sieht, was gespeichert wird.

    anstatt $_SERVER['REQUEST_TIME'] könnte man auch time() nehmen
    als Unix Timestamp ... oder ein anders formatiertes Datums-Format ...

    Hinweis: den Ordner, den man in $save_path angibt
    kann man auch selbst per Hand (in FTP) erstellen
    oder auch den CHMOD Wert 0777 anders, z.B.: 0666
    muss halt für das Script Schreib- und Lese- Rechte bekommen


    +++

    Zum Auslesen der einzelnen CSV Dateien (je Monat)
    kann man dann einfach fgetcsv() nutzen ...

    Hier mal ein BSP php CODE mit Liste der Dateien (als Link)
    ... und nach an-klicken kommt der CSV Inhalt als Array


    FILE: read_user_ip.php

    ... Achtung ... noch ohne Zugangs-Schutz (Passwort)

    <?php 
    // ----------------------------------------------- 
    
    $save_path = 'udata'; 
    
    $file_list = glob($save_path.'/*.csv'); 
    
    
    ## print '<pre style="margin:18px 4px; padding:6px; text-align:left; background:#DEDEDE; color:#0000AA;">'."\n"; 
    ## print_r($file_list)."\n"; 
    ## print '</pre>'."\n"; 
    
    foreach($file_list as $file_name) { 
    
    print '<br /> + <a href="?f='.urlencode($file_name).'">'.$file_name.'</a>' . "\n"; 
    
    }
    
    print '<br />' . "\n"; 
    print '<br />' . "\n"; 
    
    // ----------------------------------------------- 
    
    function csv_to_array($csvfile, $csvhead=true, $delimiter=';', $length=2048) { 
    	
    	$csvdata = false; 
    	
    	if (($handle = fopen($csvfile, "r")) !== FALSE) { 
    		
    		$csvdata = array(); 
    		
    		if ($csvhead !== FALSE) { $headrow = fgetcsv($handle, $length, $delimiter); } 
    		
    		$row = 0; 
    		while (($data = fgetcsv($handle, $length, $delimiter)) !== FALSE) { 
    			
    			if ($csvhead !== FALSE) { 
    				foreach( $headrow as $key => $name ) { 
    					if (empty($name)) { $name = 'tab_'.$key; } 
    					$csvdata[$row][$name] = $data[$key]; 
    				}
    			}
    			else { 
    				$csvdata[$row] = $data; 
    			}
    			
    		$row++; 
    		}
    		
    		fclose($handle);
    		
    		}
    		
    	return $csvdata; 
    
    }
    
    // ----------------------------------------------- 
    
    
    if (!empty($_GET['f'])) { 
    $save_file = trim($_GET['f']); 
    
    if (file_exists($save_file)) { 
    
    $read_data = csv_to_array($save_file, true, '|'); 
    
    print '<pre style="margin:18px 4px; padding:6px; text-align:left; background:#DEDEDE; color:#0000AA;">'."\n"; 
    print_r($read_data)."\n"; 
    print '</pre>'."\n"; 
    
    }
    }
    
    
    // ----------------------------------------------- 
    ?>



    Für die Datei: read_user_ip.php sollte man noch einen Passwort-Schutz machen
    ... damit nicht Hinz und Kunz auf die gespeicherten Daten zugreifen können !!

    und wie gesagt, noch besser wäre das ganze mit MySQL zu speichern / aus-zu-lesen
    dann kann man auch einfacher "alte" Datensätze wieder löschen und noch mehr machen
    wie z.B. mit Reload-Zeit für Counter ... also gleiche IP nur alle n Minuten neu Speichern.
    das ginge zwar mit CSV auch, ist aber deutlich aufwendiger als mit MySQL

    aber das (mit MySQL) will ich jetzt nicht auch noch in diesem Beitrag schreiben,
    .... ich hoffe trotzdem, dass diese zwei BSP Codes weiter helfen :)

  • in: Aktion beim schließen ausführen

    geschrieben von webnfo

    so

    <script type="text/javascript">
    
    window.onbeforeunload = function() {
        alert('Achtung ... ENDE ... !!!'); 
    }
    
    </script>


    anstatt dem alert() kann man jede andere JS Aktion / Funktion machen
  • in: Kontaktformular Captcha & alle Felder

    geschrieben von webnfo

    du kannst den Code in beide Dateien einfügen, wenn Du es in 2 Dateien hast
    ... man kann das alles auch in einer Datei machen

    zudem würde ich das "Prüfen" auch noch für Captcha machen

    if (!empty($_REQUEST['erg_eingabe']))    { $erg_eingabe = $_REQUEST['erg_eingabe']; }       else { $err_msg .= "<p> ... Captcha fehlt </p>\n"; }


    und zum Captca ... prüfen ob Eingabe gleich dem Wert in der SESSION ist
    if (isset($erg_eingabe) && $erg_eingabe == $_SESSION['ergebnis']) { 
    // ---- Captcha ist richtig ---- weiter ---
    }
    else { 
    // ---- Captcha ist falsch ---- abbruch --- 
    }


    aber nimm doch ein fertiges und bewährtes Captcha ... http://www.google.com/recaptcha
    dafür gibt es auch eine PHP library zum Download und mit Beispiel zur Benutzung.

  • in: Kontaktformular Captcha & alle Felder

    geschrieben von webnfo

    Hallo

    hier nochmal Code wie man prüfen kann, ob alle (deine) Felder ausgefüllt wurden

    <?php
    // -------------------------------------------- 
    
    $err_msg = ''; 
    
    if (!empty($_REQUEST['kontakt']))    { $kontakt = $_REQUEST['kontakt']; }       else { $err_msg .= "<p> ... Kontakt fehlt </p>\n"; } 
    if (!empty($_REQUEST['anrede']))     { $anrede = $_REQUEST['anrede']; }         else { $err_msg .= "<p> ... Anrede fehlt </p>\n"; } 
    if (!empty($_REQUEST['vorname']))    { $vorname = $_REQUEST['vorname']; }       else { $err_msg .= "<p> ... Vorname fehlt </p>\n"; } 
    if (!empty($_REQUEST['nachname']))   { $nachname = $_REQUEST['nachname']; }     else { $err_msg .= "<p> ... Nachname fehlt </p>\n"; } 
    if (!empty($_REQUEST['email']))      { $email = $_REQUEST['email']; }           else { $err_msg .= "<p> ... Email fehlt </p>\n"; } 
    if (!empty($_REQUEST['betreff']))    { $betreff = $_REQUEST['betreff']; }       else { $err_msg .= "<p> ... Betreff fehlt </p>\n"; } 
    if (!empty($_REQUEST['mitteilung'])) { $mitteilung = $_REQUEST['mitteilung']; } else { $err_msg .= "<p> ... Mitteilung fehlt </p>\n"; } 
    if (!empty($_REQUEST['ip']))         { $ip = $_REQUEST['ip']; }                 else { $err_msg .= "<p> ... IP fehlt </p>\n"; } 
    
    
    // -------------------------------------------- 
    
    if (!empty($err_msg)) { 
    
    print "<p>Fehler ... Sie haben nicht alle Felder ausgef&uuml;llt ... </p>\n"; 
    print $err_msg; 
    
    }
    else { 
    
    // --- hier dann das Script zum Email senden, etc ..  
    
    }
    
    // -------------------------------------------- 
    ?>


    aber von Captcha ist in dem Code noch nichts drin,
    sowas solltest Du aber hinbekommen mit z.B. ReCaptcha
    um damit Spam wenigstens ansatzweise zu verhindern.


  • in: JS: string mit Leerzeichen zu object oder array ?

    geschrieben von webnfo

    Hallo

    wenn ich in JavaScript einen string habe
    wie bkomme ich daraus ein array oder object mit Elemente getrennt nach Leerzeichen

    Beispiel

    // --- Ausgangs-Daten als String
    var mystr = "Lorem ipsum dolor sit amet"; 
    
    // --- Ergebnis als Object
    var myobj = {"Lorem", "ipsum", "dolor", "sit", "amet"}; 
    
    // --- Ergebnis als Array 
    var myarr = ["Lorem", "ipsum", "dolor", "sit", "amet"];


    gibt es sowas wie bei PHP: explode() auch für Javascript,
    und welchen Daten-Typ (Object/Array) bekomme ich dann ?

  • in: HP wird nicht richtig angezeigt

    geschrieben von webnfo

    Hallo

    kopiere entweder die CSS-Dateien auch in den Ordner für neue_hp

    oder ändere Deine CSS Links im Quellcode mit ../ davor

    <link rel="stylesheet" href="../format.css" type="text/css">
    <link rel="stylesheet" href="../menue.css" type="text/css">
    <link rel="stylesheet" href="../rahmen.css" type="text/css">
    <link rel="stylesheet" href="../kalenderblatt.css" type="text/css">
    <link rel="stylesheet" href="../seite.css" type="text/css">
    <link href="../css/lightbox.css" rel="stylesheet" type="text/css" media="screen" />


    PS: Tipp ... wenn Du mehrere CSS-Dateien hast, dann
    kopiere diese am besten alle in einen Unterordner (z.B. css/ )
    dann kannst Du die auch leichter alle verschieben / kopieren
    natürlich müdden dann auch die links zu CSS angepasst werden.

  • in: MySQL einträge zählen

    geschrieben von webnfo

    dueselps schrieb:
    Fehlermeldung: Warning:
    mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\LP Webseite\scripts\lp.php on line 30


    sorry

    das ist natürlich Quatsch

    $query = mysql_query('SELECT COUNT(*) AS anzahl FROM videos WHERE lp ='.$betreff);
    $res = mysql_query($query);


    so dann

    $query = "SELECT COUNT(*) AS anzahl FROM videos WHERE lp='$betreff'";
    $res = mysql_query($query);
    $data = mysql_fetch_array($res);
    $video = $data["anzahl"]; // ---- oder = $data[0]; ----
    
    print "<p>Anzahl: $video</p>\n");


    habs oben auch geändert.

    ABER es geht ja hier hauptsächlich um die MySQL Abfrage:
    SELECT COUNT(*)

    und alles andere sollte man selber hinbekommen ... ob jetzt mysql_fetch_array, mysql_fetch_row, etc.


    EDIT: @hackyourlife hats noch besser mit mysql_real_escape_string()
  • in: MySQL einträge zählen

    geschrieben von webnfo

    ja ... hab da zwei ... drei Fehler .... sorry

    nach der Zeile mit mysql_query jeweils ein Strichpunkt
    das $res = mus vor die Zeile mit mysql_query
    und bei Variante 2 fehlt die Zeile mit mysql_query ganz.

    $query = "SELECT COUNT(*) AS anzahl FROM table_name WHERE titel ='".$x."'"; 
    $res = mysql_query($query); 
    $data = mysql_fetch_array($res);
    $count = $data["anzahl"];
    print "<p>Anzahl: " . $count . "</p>\n");


    $query = "SELECT * FROM table_name WHERE titel ='".$x."'"; 
    $res = mysql_query($query); 
    $data  = mysql_fetch_array($res);
    $count = mysql_num_rows($data);
    print "<p>Anzahl: " . $count . "</p>\n");


    so ... jetzt sollte beides gehen ... :xD
  • in: MySQL einträge zählen

    geschrieben von webnfo

    MySQL Einträge zählen

    z.B. so

    mysql_query("SELECT COUNT(*) AS anzahl FROM table_name WHERE titel ='".$x."'")
    $res = mysql_fetch_array($counter);
    $count = $res["anzahl"]; 
    print "<p>Anzahl: " . $count . "</p>\n");


    oder so

    mysql_query("SELECT * FROM table_name WHERE titel ='".$x."'")
    $count = mysql_num_rows($res);
    print "<p>Anzahl: " . $count . "</p>\n");


    ich glaub die erste Version ist performanter (schneller)
    aber bei der zweiten kann man anstatt * (= Alle Felder) auch nur ein Feld (z.B: id) einlesen

    PS: ... das table_name natürlich noch durch Deinen Tabellen-Name ersetzen
    oder auch als Variable
    ... FROM ".$my_table." WHERE ...



    EDIT ... oh, da war jemand schneller :)

    EDIT2 ... der Code ist Fehlerhaft .. richiger Code siehe hier weiter unten ... :)

    Wollte je auch eigentlich nur die 2 möglichen SELECT Abfragen zeigen ... :oO^^


Login zum Webhosting ohne Werbung!