kostenloser Webspace werbefrei: lima-city


Suche auf lima-city

  • in: Seiten Blättern in MySQL Ergebnis

    geschrieben von anlagegeld

    Hallo

    habe da mal eine Funktion zusammen-geschustert, die man evtl ab und zu brauchen kann

    mit der kann man in MySQL-Abfragen mit größeren Ergebnisen über Seiten Blättern

    BSP: Abfrage ergibt 74 Treffer,
    Ausgabe z.B. auf 8 Seiten mit je (max.) 10 Ergebnissen pro Seite (letzte hat 4 Einträge)

    schön an der Funktion finde ich, dass sie gleich einen HTML-Code zur Seiten-Navigation liefert
    mit erste Seite ... dazwischen der Bereich rund um die aktuelle Seite und am Ende ... letzte Seite

    den Bereich (Links zwischen erster und letzer Seite stehen) kann man in der Funktion als Wert setzen
    die Anzahl der Ergebnisse pro Seite kannman bei Funktionsaufruf in Parameter angeben

    hier die Funktion: Datei: func_getLimitStart.php

    <?php
    // ----------- Seiten Blaettern in MySQL Ergebnis ------------ 
    // ----------------------------------------------------------- 
    
    
    function getLimitStart ($gesamt, $proseite, $seite) { 
    
    $gesamt   = preg_replace('/[^0-9]/','',$gesamt);
    $proseite = preg_replace('/[^0-9]/','',$proseite);
    $seite    = preg_replace('/[^0-9]/','',$seite);
    
    
    ## $aufruf = '_test1.php';  // Dateiname auf der das Ergebnis steht
    
    $aufruf = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME']; 
    
    
    $xlimit = 3;  // Anzahl Links in Seiten-Navigation (zwischen erster und letzer Seite) 
    
    
    // -------------------------------
    
    $pmax = ceil($gesamt/$proseite);  // letzte Seite 
    
    if ($pmax < $seite) { $seite = 1; }
    if ($seite < 1) { $seite = 1; }
    
    $pstart = ( ($seite * $proseite) - $proseite ); 
    $pender = ( $pstart + $proseite ); 
    
    
    // ---------- Seiten Navigatiin -------- 
    
    $yps = ($seite-2); 
    if ($yps < 1) { $yps = 1; }
    
    $ype = ($yps + $xlimit); 
    
    for ($zp=0; $zp<$xlimit; $zp++) { 
    if ($seite == ($pmax-$zp)) { $yps = ($yps-($xlimit-$zp-1)); } 
    } 
    
    
    $pagenavi = ''; 
    
    ## $pagenavi .= '&nbsp;&nbsp;&nbsp; '; 
    
    $pagenavi .= 'Seiten: &nbsp;&nbsp; '; 
    
    if ($seite == 1) { 
    $pagenavi .= " <u>001</u> "; 
    }
    else {
    $pagenavi .= " <a href=\"".$aufruf."?p=1\" title=\"Seite 001\">001</a> "; 
    }
    
    
    // ------------------------ 
    
    if ($pmax > 1) {
    
    $pagenavi .= " ... "; 
    
    
    for($xp=$yps; $xp<$ype; $xp++) { 
    
    $np = ($xp + 1); 
    
    if (10 < $np AND $np < 100) { $npi = "0".$np; }
    elseif ($np < 10) { $npi = "00".$np; }
    else { $npi = "0".$np; } 
    
    
    if ($np < $pmax) { 
    
    if ($np == $seite) { 
    $pagenavi .= " <u>".$npi."</u> -"; 
    }
    else { 
    $pagenavi .= " <a href=\"".$aufruf."?p=".$np."\" title=\"Seite ".$npi."\">".$npi."</a> -"; 
    } 
    
    
    }
    
    } 
    
    $pagenavi = rtrim($pagenavi,'-'); 
    
    
    if (10 < $pmax AND $pmax < 100) { $pmaxi = "0".$pmax; }
    elseif ($pmax < 10) { $pmaxi = "00".$pmax; }
    else { $pmaxi = "0".$pmax; } 
    
    
    if ($seite == $pmax) { 
    $pagenavi .= " ... <u>".$pmaxi."</u> "; 
    }
    else {
    $pagenavi .= " ... <a href=\"".$aufruf."?p=".$pmax."\" title=\"Seite ".$pmaxi."\">".$pmaxi."</a> "; 
    }
    
    
    }
    
    // ------------------------------------- 
    
    return array($pstart, $seite, $pagenavi, $pmax); 
    
    }
    
    
    
    // ----------------------------------------------------------- 
    
    ?>


    und hier ein Beispiel der Anwendung

    <?php 
    
    // ------------- Beispiel Anwendung ------- 
    
    
    // ---- Config und Datenbank-Verbindung $con herstellen ---- 
    
    $db_host = 'xxxxxxxxx'; 
    $db_user = 'yyyyyyy'; 
    $db_pass = 'zzzzzzzzz'; 
    $db_name = 'aaaaaaaa'; 
    
    $db_tabelle1 = 'prefix_meinetabelle';  // --- Tabelle auswaehlen 
    
    $plimit = 10;   // ---- Anzahl (Ausgabe) pro Seite ---- 
    
    // ------------------- 
    
    $con = mysql_connect($db_host,$db_user,$db_pass);
    if (!$con) { echo "<br >Fehler: <br >\r\n" . mysql_error(); exit; }
    
    $sel = mysql_select_db($db_name, $con);
    
    
    // ---------- Anzahl Gesamt ermitteln ------- 
    $sql_select1 = "SELECT * FROM `".$db_tabelle1."`"; 
    $result_select1 = mysql_query($sql_select1, $con);
    $num_rows1 = mysql_num_rows($result_select1); 
    
    
    
    // ---------- Aktuelle Seite ermitteln -------- 
    if (!empty($_REQUEST['p'])) { 
    $pseite = trim(chop($_REQUEST['p'])); 
    }
    else { 
    $pseite = 1; 
    } 
    
    
    // ----- Funktion laden und aufrufen ---- 
    
    include_once('func_getLimitStart.php'); 
    
    $erg = getLimitStart($num_rows1, $plimit, $pseite); 
    
    
    $pstart     = $erg[0];  // ---- Startwert fuer LIMIT in SQL
    $iseite     = $erg[1];  // ---- die aktuelle Seite
    $pagenavi   = $erg[2];  // ---- HTML der Seiten Navigation
    $pmax       = $erg[3];  // ---- letzte Seite
    
    $pstartinfo = ($pstart+1);        // ---- ab dem Ergebnis
    $penderinfo = ($pstart+$plimit);  // ---- bis zum Ergebnis
    
    
    // ------- SQL anpassen !!!! ------- 
    
    $sql = "SELECT * FROM ".$db_tabelle1." LIMIT ".$pstart.",".$plimit.""; 
    
    $result = mysql_query($sql, $con);
    if (!$result) { echo "<br >Fehler: <br >\r\n" . mysql_error(); exit; }
    
    $daten = array();
    while ( $row2 = mysql_fetch_assoc($result) ) {
    $daten[] = $row2;
    }
    
    
    // ------- Ausgabe Seiten Info ------- 
    
    echo "<p>Gesamt: <strong>".$num_rows1."</strong> Eintr&auml;ge auf <strong>".$pmax."</strong> Seiten. "; 
    echo "&nbsp;&nbsp;&nbsp; Aktuelle Seite: <strong>".$iseite."</strong> (Eintr&auml;ge von ".$pstartinfo." bis ".$penderinfo.") </p>\r\n"; 
    
    // ------- Ausgabe Seiten Navigation ------- 
    
    echo "<p style=\"font-size:20px;\">".$pagenavi."</p>\r\n"; 
    
    
    // ------- Ausgabe Seiten Inhalt / Daten ------- 
    
    $pnr = ($pstart + 1); 
    foreach($daten as $ashow) { 
    
    echo "<br />".$pnr."\r\n";
    
    echo "<pre>\r\n"; 
    print_r($ashow); 
    echo "</pre>\r\n";
    
    echo "<hr />\r\n";
    $pnr++; 
    }
    
    // ----------- Ende ------ 
    
    echo "<br />\r\n";
    echo "<br /> FOOTER \r\n";
    echo "<br />\r\n";
    
    
    // ----------------------------------------------------------- 
    ?>


    zum Testen / Nutzen muss man die Dazenbank Zugangsdaten anpassen
    eine Tabelle mit genug Einträgen haben

    und man kann die SQL Zeile anpassen ... z.B. WHERE Bedingungen und ORDER BY etc.


    // ------- SQL anpassen !!!! ------- 
    
    $sql = "SELECT * FROM ".$db_tabelle1." WHERE ..... ORDER BY ..... LIMIT ".$pstart.",".$plimit."";


    die Ausgabe in der foreach() Schleife mit print_r() ist natürlich auch nur zum Testen
    ob und welche Daten ankommen, auch da sollte man die Ausgabe selbst gestalten


    Die Funktion funktioniert bei meinen Tests ganz gut,
    vielleicht ha ja jemand noch Verbesserungs-Vorschläge oder findet Bugs, etc.

    viel Spaß damit
  • in: Wie mittels PHP Script IPs speichern ?

    geschrieben von anlagegeld

    und wenn man die IPs verschlüsselt speichert,
    so das man sie selbst garnicht mehr entschlüsseln kann ?

    Beispiel:
    $secret_key = 'uE4RgB29oPsTfCi51Hy'; 
    
    $user_ip = md5($secret_key.$_SERVER['REMOTE_ADDR']);


    dann sollte es doch rechtlich OK sein

    dumme Frage:
    wie kann man dann eine bestimmte IP-Adresse aussperren,
    wenn diese z.B. die Webseite zu spammt oder ähnlich unerwünschtes macht ?!
  • in: mysql INSERT mit IF Bedingung ?

    geschrieben von anlagegeld

    geilerheiler schrieb:
    Kommt drauf an, vielleicht macht einer, ich weiß ja nicht was dein Script macht, aber
    titel = Online-Kaufhaus link = http://ebay.de
    und der andere macht es so
    titel = Online-Kaufhaus link = http://amazon.de


    Das sind ja zwei verschiedene Links.


    ja, aber ich will die Titel für Rewrite zu einer Einzel-Seite je Eintrag verwenden
    da kann ich keine zwei gleichen Titel gebrauchen, oder ich muss bei mehrfachen noch ne Art Zähler bauen

    geilerheiler schrieb:
    Ansonsten machste einfach so:
    "SELECT url,titel FROM tabelle WHERE url = '$url_user' AND titel = '$titel_user'"



    naja, dann ist aber die Bedingung AND so, dass nur bei titel UND url schon da
    es soll aber auch dann wenn nur eins von beiden schon da ist ein Ergebnis liefern
    also doch eher OR ...

    oder ichmach die Spalten mit UNIQUE Index und dann INSERT mit IGNORE ...
    macht das vielleicht mehr Sinn ?




  • in: Wie mittels PHP Script IPs speichern ?

    geschrieben von anlagegeld

    erstmal sorry, es muss so heissen
    $filename = 'data/mylogfile.txt';


    aber vergiss es IP Counter auf Datei-Basis

    Warum das versagt kann ich auch nicht erklären, aber es versagt !!!
    vielleicht wei bei fopen() zur gleichen Sekunde irgend ein Fehler auftritt ...

    habe selber schon die Erfahrung gemacht, dass aufeinmal die log Datei leer war
    also totaler Datenverlust .... mach es besser gleich mit mySQL ... !!!

    es gibt dazu auch zahlreiche Tutorials
    Google: http://www.google.de/search?q=php+mysql+ip+counter oder ähnliche Suche

  • in: Wie mittels PHP Script IPs speichern ?

    geschrieben von anlagegeld

    ich würde ja $_SERVER['REMOTE_ADDR'] nehmen


    zum Speichern in Log File ... würde dann auch Datum (Timestamp) dazu Speichern

    (ohne MySQL)
    $ts = time(); 
    $ip = $_SERVER['REMOTE_ADDR']; 
    
    $filename = 'data'/mylogfile.txt';
    
    $handle = fopen($filename,"a");
    $eintrag = $ts.";".$ip."\n"; 
    fwrite($handle,$somecontent);
    fclose($handle);


    und zum auslesen dann
    $filename = 'data'/mylogfile.txt';
    
    $daten = file($filename); 
    foreach($daten as $zeile) { 
    $item = explode(';',$zeile); 
    echo "<br />Zeit: ".date('y-m-d H-i-s',$item[0]); 
    echo "<br />IP: ".$item[1]; 
    }


    so wird die Log-Datei (bzw. die MySQL Tabelle) aber in kurzer Zeit sehr groß,
    weil jeder Aufruf gespeichert wird

    EDIT: ... und bei Zugriff von 2 oder mehr Usern zur gleichen Zeit versagt Datei-Speichern !!!!
    deshalb besser MySQL nehmen, die Beispiele sollen ja nur das Prinzip erklären


    egal ob in Datei oder in MySQL,
    Du solltest mehrfache Aufrufe einer IP (in bestimmten Zeitraum) nicht Speichern
    oder bei mehrfachen Aufrufen einen Zähler hinzufügen, also als weitere Spalte

    bei File kann man z.B. für jeden Tag eine eigene Log-Datei machen
    und Dateien, die älter als z.B. 14 Tage sind, dann wieder löschen
    EDIT: aber von Datei rate ich bei sowas eher ab, wegen gleichzeitiger Zugriffe = Datenverlust

    bei mysql kann man auch Einträge die älter sind als z.B. 14 Tage wieder löschen
    sonst werden das in kurzer Zeit unmengen von Daten

    $abstand = (3600*24*14);  // Abstand 14 Tage 
    $deltime = ($ts -$abstand); 
    
    $loeschen = mysql_query("DELETE FROM tabelle WHERE logtime < $deltime ");


    vorausgesetzt Du hast die Spalte logtime in der Tabelle angelegt und mit dem Timespamp gefüttert

    PS:
    das hier sind alles nur Beispiele und allgemeine Tips, keine Lösungen !!!

    Meine Empfehlung ist auch eher MySQL,
    denn besonders wenn mehrere User gleichzeitig die Seite aufrufen
    dann versagt das Datei-Speichern .... MySQL ist da deutlich "stabiler"

    PS2:
    und wie ist das eigentlich rechtlich mit IP-Adressen Speichern ?
    Stichwort: Vorratsdatenspeicherung ... evtl verschlüsselt Speichern? Maximale Speicher-Zeit? etc?
  • in: mysql INSERT mit IF Bedingung ?

    geschrieben von anlagegeld

    ok, also muss ich doch die Abfrage vorher machen

    und ist das richtig, für ... url ODER titel ist vorhanden

    WHERE (url = '$neu_url' OR titel = '$neu_titel')


    oder muss ich da zwei Abfragen machen, je eine für url und eine für titel ?

  • in: mysql INSERT mit IF Bedingung ?

    geschrieben von anlagegeld

    Hallo

    ich habe eine tabelle mit url, titel, bechreibung, etc
    User sollen neue Links vorschlagen können

    wie prüfe ich am besten, ob neue URL (und/oder neuer Titel) bereits in der Tabelle ist
    um keine doppelten Einträge zu bekommen ?

    gibt es sowas wie eine IF Bedingung für INSERT Befehl
    ... nur eintragen wenn url nicht in Tabelle und wenn titel nicht in Tabelle

    geht das auch direkt im INSERT Befehl ?

    INSERT INTO tab_name (feldname1, feldname2, feldname3) 
    VALUES (wert1, wert2, wert3) 
    IF ( ... nur wenn feldname1 noch nirgends den Wert wert1 hat ) 
    AND IF  ( ... nur wenn feldname2 noch nirgends den Wert wert2 hat )


    ... aber wie ? ... geht das überhaupt, quasi innerhalb INSERT ne Abfrage ob schon vorhanden ?
    wenn ja, bitte ein Beispiel, Danke !

    oder muss ich vor dem INSERT eine Abfrage machen ?

    SELECT url, titel FROM ... WHERE (url = '$neu_url' OR titel = '$neu_titel')

    und dann mit ...
    if (mysql_num_rows($query) > 0) { /* schon vorhanden */ } else { /* .... ok ... INSERT ...*/ }
    also vor dem INSERT prüfen ???
  • in: MySQL Array in Spalte?

    geschrieben von anlagegeld

    Hallo

    bei einfachen Arrays die Array-Elemente mit einem individuellem Trenner als String
    ählich wie bei CSV mit | Pipe oder ; Semikolon (Trenner vorher aus Strings escapen)
    mit implode() speichern und beim ausleden dann mit explode()

    oder mit serialize() und unserialize() .... http://php.net/manual/de/function.serialize.php
    damit kann man Arrays als String ablegen und wieder auslesen

    Edit: oder hab ich das falsch verstanden ? .... CONCAT ... ok
  • in: Kategorien und Unterkategorien

    geschrieben von anlagegeld

    Hallo

    ich versuche gerade Kategorien und Unterkategorien zu managen
    mit 2 Ebenen bekomme ich es hin, aber ab der dritten Ebene versage ich kläglich

    ich speichere die Kategorien in einer MySQL Tabelle
    Jede Kategorie hat eine eigene ID (auto increment)
    Hauptkategorien haben in der Spalte ['topkat'] den Wert 0
    Unterkategorien haben in der Spalte ['topkat'] den Wert der übergeordneten Kategorie

    Wie bekomme jetzt eine mehrdimensionales Array,
    das jede Unterkategorie in eine Ebene unter die übergeordnete Kategorie legt
    (ohne in der Schleife für jede Kategorie wieder eine MySQL Anfrage zu starten)

    Wie muss die Abfrage aussehen (bzw. PHP Logik mit Daten-Array aus Tabelle)
    damit ich für Kategorien in mehrern Ebenen (als hierarchisches Array) bekomme ?
    Danke!
  • in: mehrere Teaxtareas durch JS Funktion prüfen

    geschrieben von anlagegeld

    Vielen Dank, so funktionirt es

    Firebug werde ich mir mal reinzeihen und sehen was man damit rausziehen kann

    auch das mit OnSubmit habe ich ausprobiert, funktioniert zwar
    aber irgendwie sind nach Aufruf der alert Meldung alle vorherigen Eingaben im Formular dann weg

    das leigt wahrscheinlich daran, dass ich Cache ausgeschalten habe (in htaccess)

    also prüfe ich nach Absenden per PHP, und wenn unvollständig geht es zurück zum Formular
    mit Übergabe der bereits eigegebenen Inhalte (so dass man nicht alles nochmall neu schreiben muss)

    Danke für die Hilfe !
  • in: HTML Formular mit PHP

    geschrieben von anlagegeld

    weil du im gleichen Formular die zwei Submit Buttons hast

    Du musst für jede Aktion (vor/zurück) je ein eigenes Formular machen
    sonst werden immer beide Buttons abgesendet, auch wenn Du nur einen klickst

    und Du musst prüfen, ob der Monat schon "gewechselt" hat, dann diesen verwenden, sonst aktuellen


    mal mal ganz grob ein Beispiel ( zwei Formulare in Tabelle )

    <?php
    
    $mo_name = array(
    '1' => 'Januar', 
    '2' => 'Februar', 
    '3' => 'M&auml;rz', 
    '4' => 'April', 
    '5' => 'Mai', 
    '6' => 'Juni', 
    '7' => 'Juli', 
    '8' => 'August', 
    '9' => 'Semptember', 
    '10' => 'Oktober', 
    '11' => 'November', 
    '12' => 'Dezember' 
    ); 
    
    if (!empty($_REQUEST['mon'])) { $monat = $_REQUEST['mon']; } else { $monat = date('n'); } 
    if (!empty($_REQUEST['jah'])) { $jahr = $_REQUEST['jah']; }  else { $jahr = date('Y'); } 
    
    if (!empty($_REQUEST['go1'])) { $monat--; } 
    if (!empty($_REQUEST['go2'])) { $monat++; } 
    
    if (12 < $monat) { $jahr++; $monat = 1; } 
    if ($monat < 1) { $jahr--; $monat = 12; } 
    
    ?>
    
    <br>
    <table width="400" border="0" cellspacing="2" cellpadding="2" bgcolor="#DEDEDE">
      <tr>
        <td width="15%" align="center" valign="top">
    	  <form name="form1" method="post" action="">
    	    <input type="submit" name="go1" value="<--">
    	    <input type="hidden" name="mon" value="<?php echo $monat; ?>">
    	    <input type="hidden" name="jah" value="<?php echo $jahr; ?>">
    	  </form>
        </td>
        <td width="70%" align="center" valign="top">
    	<?php 
    	echo "<span style=\"font-size:22px\">".$mo_name[$monat]."</span>"; 
    	echo "<br><span style=\"font-size:16px\">".$jahr."</span>"; 
    	?>
    	</td>
        <td width="15%" align="center" valign="top">
    	  <form name="form2" method="post" action="">
    	    <input type="submit" name="go2" value="-->">
    	    <input type="hidden" name="mon" value="<?php echo $monat; ?>">
    	    <input type="hidden" name="jah" value="<?php echo $jahr; ?>">
    	  </form>
        </td>
      </tr>
    </table>
    <br>
    <br>
    <br>Monat Zahl: <?php echo $monat; ?>
    <br>Monat Name: <?php echo $mo_name[$monat]; ?>
    <br>Jahr: <?php echo $jahr; ?>  
    <br>
    <br>



    das geht sicher auch noch besser :)


  • in: SESSION funktioniert so nicht...

    geschrieben von anlagegeld

    Hallo

    Für Fehler-Ausgabe muss neben error_reporting() auch display_errors an schalten

    ini_set("display_errors", ON);


    wobei ich nicht weiss, ob auf lima-city ini_set funktioniert

    sonst direkt in eine php.ini schreiben

    error_reporting = E_ALL|E_STRICT 
    display_errors = On 
    display_startup_errors = On


    wobei ich nicht weiss, ob auf lima-city eine eigene php.ini funktioniert

    sonst in eine .htaccess Datei

    php_flag display_errors on
    php_value error_reporting 30711


    Erklärung für den Zahlenwert siehe: http://www.php.net/manual/de/errorfunc.constants.php
    (beachte dabei unterschiedliche Werte für verschiedenen PHP Versionen)

    und bei Deinem zweiten echo fehlt ein Semikolon ; (Strichpunkt) am Ende

    echo "Variable gespeichert.";


    das hat ja hemiolos schon geschrieben, ich weise nur nochmal drauf hin ...
  • in: Seiten Änderung ohne Cache löschen

    geschrieben von anlagegeld

    entweder .htaccess

    Header set Cache-Control "no-cache, no-store, must-revalidate, max-age=0, proxy-revalidate, no-transform"
    Header set Pragma "no-cache"


    oder am Script-Anfang (ganz oben) wenn Seite nicht vorher Ausgabe startet (header already sent)

    <?php
    header('Cache-Control no-cache, no-store, must-revalidate, max-age=0, proxy-revalidate, no-transform'); 
    header('Pragma no-cache'); 
    
    // ------- weiterer PHP Code ----- 
    ?>


    oder mit META-TAGs im HEAD TAG
    <meta http-equiv="Pragma" content="no-cache" />
    <meta http-equiv="Expires" content="-1" />
    <meta http-equiv="Cache-Control" content="no-cache" />


    ... aber die sind nicht so zuverlässig, scheint auf lima-city nicht wirklich zu greifen
    (evtl weil andere Header Einstellungen in PHP schon gesetzt wurden)

  • in: mehrere Teaxtareas durch JS Funktion prüfen

    geschrieben von anlagegeld

    simuliertes schrieb:
    Beachte das [0] bei getElementsBYTagName("SPAN")[0]
    Damit rufe ich das ERSTE (es wird bei null angefangen zu Zählen) SPAN Element INNERHAB des Elternnotens von this auf.

    Also knntest Du mit getElementsBYTagName("SPAN")[1] das zweite Feld aufrufen.


    ja, das habe ich wohl verstanden, parentNode = Eltern-Element
    und auch dass Arrays mit 0 (NULL) fürs ERSTE Element beginnen

    bei meinem Code oben funktioniert es ja auch wunderbar im ersten DIV
    (Minimum Zeichen im 2ten INPUT und Ausgane im 2ten SPAN)

    es werden im ersten DIV die Max. und die Min. Zeichen gezählt und angezeigt,
    nur im zweiten DIV klappt es dann nicht mehr .... dort ist nur ein INPUT und ein SPAN

    sobald ich dort auch ein zweites INPUT vor die textarea einfüge, dann funktioniert auch das

    2tes DIV:
    <div>
    	<input name="maxNum" type="hidden" value="50" />
    	<input name="minNum" type="hidden" value="0" />
    	<textarea name="mytextfeld1" cols="64" rows="5" onKeyUp="countDigits(this)" onClick="countDigits(this)"></textarea>
    	<p>Noch <span id="maxzeichen2" class="counter">50</span> Zeichen f&uuml;r die Beschreibung </p>
    </div>


    aber das erste INPUT (im 2ten DIV) war doch da .... und ich habe angenommen,
    wenn es kein zweites INPUT vorhanden, dann ist Wert minDigits mit INPUT')[1] einfach 0 (null)

    ok, es kann auch sein, dass dieser Wert minDigits dann anstatt 0 doch 'false' ist
    und deshalb die Rechnung miniLength = minDigits - areaString.length; einen Fehler verursacht

    aber wenn ich einfüge
    ... 
    var minDigits = node.parentNode.getElementsByTagName('INPUT')[1].value; //minimale Zeichenanzahl
    if (minDigits === false) { minDigits = 0; }
    ...


    dann klappt es auch nicht, also doch nicht false ?!

    wenn ich im 2ten DIV ein zweites INPUT einfüge, dann funktioniert beides ....


    also wenn ich INPUT')[1] auslese im Script, muss es dann auch zwingend vorhanden sein ?
    ... wenn nicht, wass passiert dann, kommt sofort ein Script Abbruch
    oder gibt es einen Rückgabe-Wert den man aus-filtern kann ?

    Danke
  • in: Tabs - ohne Seite neu zu laden

    geschrieben von anlagegeld

    das Beispiel auf der Seite ist wohl eher flash,
    aber Du suc´hst wohl JavaScript ?

    http://www.google.de/search?q=javascript+tabs

    http://www.google.de/search?q=jquery+tabs

    es gibt viele tutorials zum thema tabs mit JS

    ... oder willst Du ein slide-menü ?
  • in: Unterseiten ermitteln und gruppieren

    geschrieben von anlagegeld

    ne... aehhm ja ...

    die SubDomains sollten schon bleiben,
    ich will auch Freehoster Subdomains als unique Hosts behandeln,

    würde ich nur Domains (ohne SubDomains) machen dann hätte ich
    bei 10 verschiedenen Lima-City Userseiten alles in einem Blok lima-city.de
    ich will aber für jede eigenständige Webseite (auch von Freehoster Subdomain) eigene Blöcke

    ich hab mir die Antwort ja quasi schon selbst gegeben, .. idee beim Schreiben bekommen

    $hostliste = array(); 
    
    $i=0; 
    foreach ($daten as $ditem) { 
    $purl = parse_url($ditem['nlink']); 
    $hostliste[$purl['host']][$i] = $ditem;  // 3D-Array 
    $i++;
    }
    
    
    foreach($hostliste as $host => $aitem) { 
    echo "<h2>".$host."</h2>\r\n"; 
    
    foreach($aitem as $ashow) { 
    echo "<pre>\r\n"; 
    print_r($ashow); 
    echo "</pre>\r\n";
    }
    
    echo "<hr />\r\n"; 
    }


    die Frage ist nur bis wieviele URLs das gut geht .... wegen Speicher oder Timeout
    bzw so wird es aufwendig die Ausgabe in Seiten zu splitten mit LIMIT in mySQL Abfrage
    denn wenn ich LIMIT setze, dann sind garantiert noch URLS vom Host ausserhalb des LIMITs
    da müsste ich je Host noch eine MySQL Abfrage machen, um die restlichen Links zu finden

    vielleicht hat ja jemand ne bessere Idee, wie ich das managen kann ?!?
    Danke
  • in: Unterseiten ermitteln und gruppieren

    geschrieben von anlagegeld

    Hallo

    ich habe in einer MySQL Tabelle einige URLs
    manche davon sind Unter-Seiten von einer Domain bzw. von einer SubDomain.

    wie kann ich die Links so sortieren, dass alle Seiten die jeweils auf der gleichen Domain liegen
    gemeinsam in einem Block angezeigt werden,
    dabei sollen aber SubDomains als eigene Domains behandelt werden (z.B. Lima-city User Seiten)

    $sql_select = "SELECT * FROM `".$db_tabelle1."`"; 
    $result_select = mysql_query($sql_select, $con);
    if (!$result_select) { echo "<br >Fehler: <br >\r\n" . mysql_error(); exit; }
    
    $daten = array();
    while ( $row = mysql_fetch_assoc($result_select) ) {
    $daten[] = $row;
    }
    
    echo "<pre>\r\n"; 
    print_r($daten); 
    echo "</pre>\r\n";


    Also 2D Array und Der Spaltenname für die URLs ist 'nlink'

    Wie kann ich jetzt das $daten Array so sortieren (gruppieren)
    dass alle URLs von der gleichen Domain (bzw. Subdomain)
    nacheinander im Array vorliegen ? (bzw. gruppiert ausgegeben werden können)

    ich kann mit parse_url() den host ermitteln, aber dann die Sortierung der Daten ?

    $hostcheck = array(); 
    foreach ($daten as $ditem) { 
    $purl = parse_url($ditem['nlink']); 
    if (!in_array($purl['host'], $hostcheck)) { $hostcheck[] = $purl['host']; } 
    }


    dann habe ich ein Array mit allen vorkommenden HOSTs
    wie soll ich dann je unique HOST die URLs zuordnen?
    Schleife um die unique HOSTs und je HOST dazu eine neue MySQL Abfrage ?


    ... oder (spontane IDEE) soll ich hier gleich ein Array erstellen mit KEY = HOSTNAME

    $hostliste = array(); 
    foreach ($daten as $ditem) { 
    $purl = parse_url($ditem['nlink']); 
    $hostliste[$purl['host']][] = $ditem;  // 3D-Array 
    }


    ob das funktioniert? Hostname als Key und in 3.Ebene die Daten zum Eintrag ?!?
    aber wie bekomme ich dann die Daten so sortiert in ein Array für die Ausgabe (2D Array) ?

    oder gibts ganz andere (bessere) Lösungen ?
    .. z.B. beim Speichern neuer Einträge HOST gleich als neue Spalte in Tabelle dazu
    das wäre wohl das Beste (einfachste) aber dann muss ich DB neu anlegen und Daten neu importieren

    ... sorry, ich "denke" hier laut, paar Ideen sind mir erst beim Schreiben gekommen

    wie würdet Ihr es machen: URLs nach HOST sortiert (gruppiert) ausgeben ?

  • in: mehrere Teaxtareas durch JS Funktion prüfen

    geschrieben von anlagegeld

    ahhhhh ok

    ich hatte es etwa so versucht (das this in der Funktion abfangen)

    var areaString = document.forms[0].this.value;


    was ja nicht funktioniert hat ... Danke für den Code !!!

    noch (kleine) Frage:
    so wie es aussieht, können doch die hidden-Fields auch unterschiedliche Namen haben
    also maxNum1 und maxNum2 usw.

    noch ne (größere) Frage:
    wie kann ich jetzt auch noch für einzele (nicht alle) Textareas eine Mindest-Zeichen-Anzahl verlangen

    z.B. ein zweites hidden-Field und <span> Tag einfügen

    und im JS Code dann entsprechende Rechnung und Ausgabe-Zuweisung

    <html>
    <head>
    <title>Test</title>
    
    <script type="text/javascript">
    //<![CDATA[
    
    function countDigits(node){
    
       var maxDigits = node.parentNode.getElementsByTagName('INPUT')[0].value; //maximale Zeichenanzahl
       var minDigits = node.parentNode.getElementsByTagName('INPUT')[1].value; //minimale Zeichenanzahl
       var outmax = node.parentNode.getElementsByTagName('SPAN')[0];
       var outmin = node.parentNode.getElementsByTagName('SPAN')[1];
       var areaString = node.value;
       var currLength = areaString.length + 1;
       var restLength = maxDigits - areaString.length;
       var miniLength = minDigits - areaString.length;
    	
       if (restLength < 0) { restLength = 0; }
       if (miniLength < 0) { miniLength = 0; }
    
       outmax.innerHTML = restLength;
       outmin.innerHTML = miniLength;
    
       if (areaString.length >= maxDigits) {
    	//die folgende Zeile entfernt alle Zeichen die groesser als maxDigits sind
    	node.value = node.value.substring(0,maxDigits);
       }
    
    }
    
    //]]>
    </script>
    
    
    </head>
    <body>
    
    ...
    
    <form name="formular1" method="post" action="">
    
    <div>
    	<input name="maxNum" type="hidden" value="500" />
    	<input name="minNum" type="hidden" value="100" />
    	<textarea name="mytextfeld1" cols="64" rows="9" onKeyUp="countDigits(this)" onClick="countDigits(this)"></textarea>
    	<p>Maximal noch <span id="maxzeichen1" class="counter">500</span> Zeichen f&uuml;r die Beschreibung </p>
    	<p>Mindestens noch <span id="minzeichen1" class="counter">100</span> Zeichen f&uuml;r die Beschreibung </p>
    </div>
    
    <div>
    	<input name="maxNum" type="hidden" value="50" />
    	<textarea name="mytextfeld1" cols="64" rows="4" onKeyUp="countDigits(this)" onClick="countDigits(this)"></textarea>
    	<p>Noch <span id="maxzeichen2" class="counter">50</span> Zeichen f&uuml;r die Beschreibung </p>
    </div>
    
    <br /> OK: <input type="submit" name="run" value="Abschicken" />
    
    </form>
    
    ...
    
    </body>
    </html>


    das mit .... Noch mindestens x Zeichen ... funktioniert dann zwar im ersten Textfeld
    aber im zweiten Textfeld wird nicht mehr der Wert für maximale Zeichen aktualisiert ?!

    verstehe aber grad garnicht, warum es jetzt damit nur noch im ersten Textfeld funktioniert ?
    irgendwo ist der Wurm drin, aber wo .... ???

    EDIT: ideal wäre dann noch, wenn man das Formular erst dann abschicken kann
    wenn die Mindest-Zeichen Bedingung(en) erfüllt ist (sind) ... :)


  • in: mehrere Teaxtareas durch JS Funktion prüfen

    geschrieben von anlagegeld

    Hallo

    ich habe ein Formular mit mehreren <textarea>
    und möchte für bestimmte Textareas nur eine gewisse Anzahl Zeichen zulassen,

    ich habe es bisher einfac in zwei Funktionen gepackt
    aber die Frage ist, wie kann ich das mit nur einer Funktion machen
    so dass bei Klick in das Formularfeld die entsprechenden Ein-/Ausgabe Werte (name, id) angesprochen werden

    ich habe es mit this versucht, aber ohne Erfolg
    hier das Script mit den 2 Funktionen (die ich gerne als eine hätte, bzw. dynamisch
    so dass ich nicht für jedes weitere Textfeld eine eitere Funktion erstellen muss

    <script type="text/javascript">
    //<![CDATA[ 
    function countDigits1(){ 
    	
    	var maxDigits = 500; //maximale Zeichenanzahl
    	var areaString = document.forms[0].mytextfeld1.value;
    	var currLength = areaString.length + 1;
    	var restLength = maxDigits - areaString.length;
    	if (restLength < 0) { restLength = 0; }
    	
    	document.getElementById("mytextfeld1").innerHTML = restLength;
    	
    	if (areaString.length >= maxDigits) { 
    	//die folgende Zeile entfernt alle Zeichen die groesser als maxDigits sind
    	document.forms[0].mytextfeld1.value = document.forms[0].mytextfeld1.value.substring(0,maxDigits);
    	}
    
    }
    
    function countDigits2(){ 
    	
    	var maxDigits = 200; //maximale Zeichenanzahl
    	var areaString = document.forms[0].mytextfeld2.value;
    	var currLength = areaString.length + 1;
    	var restLength = maxDigits - areaString.length;
    	if (restLength < 0) { restLength = 0; }
    	
    	document.getElementById("mytextfeld2").innerHTML = restLength;
    	
    	if (areaString.length >= maxDigits) { 
    	//die folgende Zeile entfernt alle Zeichen die groesser als maxDigits sind
    	document.forms[0].mytextfeld2.value = document.forms[0].mytextfeld2.value.substring(0,maxDigits);
    	}
    
    }
    
    //]]> 
    </script>
    
    ...
    
    
    <textarea name="mytextfeld1" cols="64" rows="6" onKeyUp="countDigits1()" onClick="countDigits1()"></textarea>
    <p>Noch <span id="mytextfeld1" class="counter">500</span> Zeichen f&uuml;r die Beschreibung </p>
    
    
    <textarea name="mytextfeld2" cols="64" rows="6" onKeyUp="countDigits2()" onClick="countDigits2()"></textarea>
    <p>Noch <span id="mytextfeld2" class="counter">200</span> Zeichen f&uuml;r die Beschreibung </p>
    
    ...


    also wie mache ich aus den zwei Funktionen oben nur eine, die ich für beliebig viele Textfelder verwenden kann
    z.B. bei Funktions-Aufruf mit Parameter Übergabe .... aber wie die Parameter als Variable verwenden
    in z.B.: document.forms[0].mytextfeld2.value ... also anstelle mytextfeld2 aus Parameter-Übergabe
    oder mit this ... ?
  • in: Formular Pflichtfelder funktionieren nicht!

    geschrieben von anlagegeld

    Hallo

    ich würde Eingabe-Variablen immer neu zuweisen und dabei gleich escapen (Sicherheit)

    $name = stripslashes(trim(chop($_GET['name'])));

    ... und evtl. auch nur bestimmte Zeichen zulassen...

    $name = preg_replace('/[^0-9_a-z]/i', $name);

    usw, je nach Anforderung (eMail Syntax prüfen, min../max. Zeichen, etc.)
  • in: Include

    geschrieben von anlagegeld

    Hallo

    weiße Seite deutet auf Fehler hin, der nicht ausgegeben wird
    wäre die Hauptseite eine .html (und keine .php) dann würde ja der PHP Quellcode angezeigt werden ?!

    pooldreams schrieb:
    <?php error_reporting(E_ALL); ?>



    wenn so keine Fehlermeldung kommt, dann versuch es mal mit .htaccess

    php_flag display_errors on
    php_value error_reporting 2039


    oder Wert 30719 für E_ALL
    (30719 in PHP 5.3.x, 6143 in PHP 5.2.x, 2047 previously)

    siehe: http://www.lima-city.de/thread/php-debug-modus
    bzw hier http://www.php.net/manual/de/errorfunc.constants.php

    und dann bitte bier die Fehlermeldung posten

    ... aber schon seltsam, im Code auf den ersten Blick kein Fehler zu sehen

    Edit / PS: sicher, dass die zu includenden Dateien im Hauptverzeichnis liegen?
    oder sind die in einem Unterodner abgelegt ? ... ist mal mein Verdacht hier

  • in: dynamisch mehrstufige Auswahl in Formular ?

    geschrieben von anlagegeld

    ja
    das gefällt mir schon besser

    eigentlich hatte ich es mir so vorgestellt,
    dass die SELECTs alle schon komplett ausformuliert im Quellcode stehen
    und bei entsprechender Auswahl per CSS sichtbar werden

    aber so, mit Daten-Array und SELECT Feld bei Bedarf generieren / füllen
    scheint es ja doch besser zu sein, das spart zumindest Quellcode,
    ist aber bischen aufwändiger zum Einrichten (für mich) da ich bisher
    die einzelnen SELECT Felder halt als ausformulierten Quellcoe habe

    mit dem jQuery Plugin bekomme ich is auf jeden Fall gebacken, Danke !!!
  • in: dynamisch mehrstufige Auswahl in Formular ?

    geschrieben von anlagegeld

    Hallo

    habe etwas gefunden, was meinen Wünschen schon recht nahe kommt

    siehe: http://www.scriptwelt.org/javascripte/Navi/Demo/d_multi_dropdown.html

    ist halt aber was ur-altes

    jetzt hätte ich sowas gerne mit 3 DropDowns in Reihe
    und mit check, ob auch alle Felder ausgewählt wurden
    am besten Absende Button erst einblenden, sobald die Auswahl komplett

    gerne auch mit jquery


    EDIT:

    oder hier: http://javascript.internet.com/forms/dropdown-box-population.html

    oder das hier gefunden: Tripple Dropdown Menu
    Hier: http://www.trans4mind.com/personal_development/JavaScript/tripleMenu.htm
    ist aber noch komplizierter ...

  • in: dynamisch mehrstufige Auswahl in Formular ?

    geschrieben von anlagegeld

    Hallo

    ich möchte ein Formular bauen, in dem erst je nach Auswahl weitere Eingabe-Elemente angezeigt werden

    bisher mache ich es so, dass man für einen kompletten Durchgang 3x absenden muss, also mit zwischenspeichern, aber gibt es nicht eine Möglichkeit, gleich bei Auswahl im ersten Element je Auswahl dazu dann ein zweites anzuzeigen und optional ein drittes ?

    BSP:

    Schritt 1 - Dropdown Auswahl mit verschiedenen Produkten

    Schritt 2 - jedes Produkt hat verschiedene Eigenschaften, je nach Auswahl von Schritt 1 wird das passende Eigenschaft-Auswahl-Element dazu angezeigt

    Schritt 3: für manche Eigenschaften gibt es noch weitere Optionen, je nach Auswahl von Schritt 2 wird, falls vorhanden, das dazu gehörige dritte Auswahl-Elemet angezeigt.

    Erst wenn alle Schritte komplett sind, dann den Button zum Absenden des Formulars einblenden


    Ein Beispiel mit nur 2 Ebenen (ohne die optionale dritte) würde mir auch schon helfen

  • in: innerhalb Wort grosser Buchstabe ?

    geschrieben von anlagegeld

    Hallo

    aber was passiert wenn ein Wort nur aus Gross-Buchstaben besteht

    Bsp: $string = "ich bin AutoFahrer eines BMW aber und meineFrau fährt VW lieber";

    dann hat man B M W und V W auseinander geschrieben
    also bräuchte man eine Regel, die nicht greift, wenn mind 2 Großbuchstaben aufeinander folgen
  • in: MySQL Backup ohne phpMyAdmin (als Script)

    geschrieben von anlagegeld

    ehrlich gesagt hab ich von mysqldump gar keine Ahnung

    aber ich finde es bischen übertrieben, nur wegen mysql backup einen lokalen server zu betreiben (XAMP)
    da ist dann ein Login in PHPMyAdmin doch einfacher
    .... oder halt so ein Script wie von funspiele, das ich ja nur bischen aufgebohrt habe

    ---> er schreibt ja auch, dass er es in sein PHP Script als Funktion einbauen will
    und die Lösung hat er dann ja auch selbst quasi fast fertig geschrieben

    ein MySQL Backup direkt am Webspace klingt für mich nicht gerade nach Einsatz von localhost
    sondern eben direkt am Webspace als PHP-Script .... was ja, wie es oben steht, nicht schlecht ist

    Die kleine Erweiterung habe ich dann gemacht, weil ich sein Script ganz gut fand, funktioniert
  • in: MySQL Backup ohne phpMyAdmin (als Script)

    geschrieben von anlagegeld

    funspiele schrieb:
    nur hab ich keinen Server-Root Zugriff, nur Webspace,


    @hemiolos ich glaub deshalb ist das (auch wenns gut ist) in diesem Fall nicht einsetzbar
    echo '<pre>' . `mysqldump --host=$host --user=$user --password=$pw $db 2>&1`;


    oder funktioniert mysqldump auf Lima-City Webspace ?? glaube mal nicht

    hier das Script mit Auswahl aller Tabellen in der DB .... function get_tables()
    .... und mit .sql Datei-Erstellung ... fwrite()

    <?php 
    // ------------------ config --------------------
    
    $db_host = 'xxxxxxxxxx'; 
    $db_user = 'yyyyyyyyyyyy'; 
    $db_pass = 'zzzzzzzzzz'; 
    $db_name = 'abcabcabc'; 
    
    $backupfile = '_dump_'.$db_name.'.sql'; 
    
    
    // ---------------mysql connect ------------------
    
    $con = mysql_connect($db_host, $db_user, $db_pass);
    if (!$con) { echo "<br />Could not connect: <br />\r\n" . mysql_error(); exit; }
    
    $sel = mysql_select_db($db_name, $con);
    
    
    // -------------- function myquery ---------------
    
    function myquery($sql, $mysql) {
    
    $data = array(); 
      $result = mysql_query($sql, $mysql) or die(mysql_error());
      while ( false !== ($row = mysql_fetch_array($result, MYSQL_NUM)) ) {
    	 $data[] = $row;
      }
    return $data; 
    }
    
    
    // ------------ function get_data ----------------
    
    function get_data($tabelle, $mysql, $null='false') {
    	
    	$d = null;
    	$rdata = mysql_query("SELECT * FROM `" . $tabelle . "`", $mysql) or $this->error(mysql_error());
    	
    	while($cr = mysql_fetch_array($rdata, MYSQL_NUM)) { 
    	
    	$d .= "INSERT INTO `" . $tabelle . "` VALUES (";
    	
    	for($i=0; $i<sizeof($cr); $i++) { 
    		if($null !== false && $cr[$i] == '') {
    			$d .= 'NULL,';
    		} else {
    			$d .= "'$cr[$i]',";
    		}
    	}
    	
    	$d = substr($d, 0, strlen($d) - 1);  // ---- letztes Komma entfernen ---- 
    	$d .= ");\n";
    	}
    
    return($d);
    }
    
    
    // ----------- function get_tables --------------
    
    function get_tables($name, $mysql) { 
    	$tables = array(); 
    	$tablesResult = mysql_query("SHOW TABLES FROM `".$name."`", $mysql);
    	while ($row = mysql_fetch_row($tablesResult)) { 
    	$tables[] = $row[0];
    	}
    return $tables; 
    }
    
    
    
    // -------------------------------------------------
    // -------------------------------------------------
    
    $tabliste = get_tables($db_name, $con); 
    
    echo "<pre>\r\n"; 
    print_r($tabliste);
    echo "\r\n</pre>\r\n"; 
    
    // -------------------------------------------------
    
    
    $rundate = date('Y-m-d H:i:s',time()); 
    
    $handle = fopen($backupfile,"w",0755);
    
    $dumpinfo = "###### MySQL DUMP ### ".$db_name." ### ".$rundate." ######\n\n\n";  
    
    fwrite($handle,$dumpinfo);
    
    // --------------------------------------
    
    foreach($tabliste as $tabelle) {
    
    // ----------- Struktur ----------- 
    
    $erg1 = myquery("SHOW CREATE TABLE $tabelle", $con);
    
    $tab_struktur = $erg1[0][1].';'; 
    
    ## echo "<pre>\r\n"; 
    ## print_r($tab_struktur);
    ## echo "\r\n</pre>\r\n"; 
    
    fwrite($handle,"\n###### ".$tabelle." ######\n\n");
    
    fwrite($handle,$tab_struktur."\n\n\n");
    
    // ----------- Inhalte ----------- 
    
    $erg2 = get_data($tabelle, $con, 'false' );
    
    $tab_inhalte = $erg2; 
    
    ## echo "<pre>\r\n"; 
    ## print_r($tab_inhalte);
    ## echo "\r\n</pre>\r\n"; 
    
    fwrite($handle,$tab_inhalte."\n\n\n");
    
    } 
    
    // -------------------------------------------------
    
    fclose($handle);
    
    
    echo "<br /> DUMP File: <a href=\"".$backupfile."\">".$backupfile."</a> --- ".$db_name." --- ".$rundate." <br />\r\n"; 
    
    
    mysql_close(); 
    
    
    // --------------------------------------
    ?>


    man könnte in die Datei $backupfile noch den Timestamp unterbringen
    dann werden alte Backups nicht überschrieben

    $tsmp = time();
    $backupfile = '_dump_'.$db_name.'_'.$tsmp.'.sql';

    aber dann aufpassen, dass sich nicht zu viele Dateien am Webspache ansammeln
    je Aufruf dann neue Datei .... mit dem gesamten DB Inhalt inkl. Struktur

    eigentlich ja ne coole Sache, so ein Mini-SQL-Dumper :)
  • in: PDF parsen (PDF zu String) in PHP

    geschrieben von anlagegeld

    Hallo
    ich denke es könnte mit OCR - Optical Character Recognition gehen

    z.B. http://www.phpclasses.org/phpocr aber keine Ahnung ob das auch mit PDF geht

    Vielleicht hilft ja auch das hier http://php.livejournal.com/295413.html?thread=4830453#t4830453 bei deinem Code

    sonst kennst Du sicher die Kommntare bei http://de3.php.net/manual/de/ref.pdf.php

    oder das hier http://www.fpdf.de/forum/showthread.php?t=1655 Hinweise in Antw. beachten

    oder hier http://www.php.de/php-tipps-2007/22298-pdf-zu-php-3.html

    .... scheint garnisht so einfach zu sein

    habe selber Interesse an dem Thema ... aber wenn dann eher pdf2html.
    also nicht nur reiner text sondern alles, auch Tabellen, Bilder, etc.


Login zum Webhosting ohne Werbung!