kostenloser Webspace werbefrei: lima-city


Suche auf lima-city

  • in: 4er Array Kombinationen aus n Elementen (Permutation)

    geschrieben von spdata

    danke

    ja, solche und ähliche Beispiele hatte ich auchschon gefunden

    aber die machen alle "nur" Permutationen mit jeweils allen Elementen aus dem Array

    mein Problem, ist, das Ausgangs-Array hat n Elemente (hier im BSP 6)
    und es sollen aber Permutationen mit je nur 4 Elementen ermittelt werden

    das macht die Sache wohl etwas komplizierter


  • in: 4er Array Kombinationen aus n Elementen (Permutation)

    geschrieben von spdata

    Hallo

    ich suche eine Möglichkeit und aus einem Array mit n Elementen
    alle unique Kombinationen zu finden, die aus jeweils 4 Elementen bestehen

    Beispiel:

    $startarray = array('Wert1', 'Wert2', 'Wert3', 'Wert4', 'Wert5', 'Wert6');


    Das Ergebnis soll sein: (Permutation)
    $ergebnis => Array
            (
                [0] => Array
                    (
                        [0] => Wert1
                        [1] => Wert2
                        [2] => Wert3
                        [3] => Wert4
                    )
                [1] => Array
                    (
                        [0] => Wert1
                        [1] => Wert2
                        [2] => Wert3
                        [3] => Wert5
                    )
                [2] => Array
                    (
                        [0] => Wert1
                        [1] => Wert2
                        [2] => Wert3
                        [3] => Wert6
                    )
                [3] => Array
                    (
                        [0] => Wert1
                        [1] => Wert2
                        [2] => Wert4
                        [3] => Wert5
                    )
                [4] => Array
                    (
                        [0] => Wert1
                        [1] => Wert3
                        [2] => Wert4
                        [3] => Wert5
                    )
                [5] => Array
                    (
                        [0] => Wert1
                        [1] => Wert2
                        [2] => Wert5
                        [3] => Wert6
                    )
                [6] => Array
                    (
                        [0] => Wert1
                        [1] => Wert3
                        [2] => Wert5
                        [3] => Wert6
                    )
                [7] => Array
                    (
                       ... usw ... 
                    )
            }


    so dass keine Kombination "doppelt" vorkommt
    also auch nicht in vertauschter Reihenfolge



    gibt es dafür vielleicht eine fertige PHP Funktion ?
    bzw. wie soll ich die Permutationen erstellen ?


  • in: Parameter Übergabe an externe JS Datei ?

    geschrieben von spdata

    Hallo

    ich möchte in einem Javascript eine externe .js Datei aufrufen
    und diesem Aufruf einen Parameter mitgeben, leider bekomme ich es nicht hin

    habe es mal als Beispiel stark vereinfacht:

    die "erste" JS Datei:
    var zielurl = 'http://example.org'; 
    
    document.write('<scr' + 'ipt src="http://www.anderedomain.xyz/script.js?zielurl='+zielurl+'"></scr' + 'ipt>');


    in der externen "zweiten" JS Datei will ich dann den Parameter zielurl auslesen
    und als queryurl verwenden

    in der "zweiten" JS Datei:
    var queryurl = window.location.search.substring(1);
    
    document.write('<h2>'+queryurl+'</h2>');


    so klappt es aber nicht

    ... wie kann ich mit so einem Aufruf (Javascript Weiterleitung) einen Parameter übergeben
    und wie bekomme ich in der 'zweiten' JS Datei den Wert des übergebenen Parameters?

    Danke

  • in: Zeilen in Datei zählen ?

    geschrieben von spdata

    hackyourlife schrieb:
    Eine andere Möglichkeit gibt es eigentlich auch nicht, da man ja in der Datei nach Zeilenumbrüchen suchen muss und deshalb die gesamte Datei lesen muss.

    stimmt auch wieder

    schade, dass man mit fgets() auch bis zum Zeilenende auslesen muss,
    ich dachte fgets() macht immer Zeilenweise, und man könnte da nur das erste Zeichen auslesen
    und je Durchlauf der while-Schleife springt fgets() immer eine Zeile weiter
    ... aber das geht ja leider so nicht ... falch gedacht :(

    mit meiner feof() hatte ich dann wohl einen endlos-Zähler ... ^O^

    wenn ich fgets($handle) ohne Angabe von Zeichen (int $length) mache,
    dann geht es ja bis zum Zeilenende (laut php.net Doku)

    also so funktioniert es jetzt bei mir mit fgets()

    function count_filerows ($file) { 
    $handle = fopen($file,'r');
    $i=0; 
       while ( fgets($handle) !== false ) { 
       $i++; 
       }
    fclose($handle);
    return $i; 
    }


    ist nur noch die Frage, was weniger Ressourcen braucht,
    das mit fgets() oder das mit file()

    hackyourlife schrieb:
    Das Einfachste ist wahrscheinlich Folgendes:
    $lines = count(file($datei));

    Du machst ja auch nichts anderes als alle Zeilen lesen ;-)

    stimmt, so ist es einfach, aber auch Ressourcen-sparsamer als mit fgets() ?
    ... die zu prüfende Datei kann zwischen 2 und 10000 Zeilen haben

    da ich es als Funktios-Aufruf will, hier nochmal die Variante mit file()

    function count_filerows ($datei) { 
       $fdata = file($datei); 
       $rows = count($fdata); 
       unset($fdata); 
    return $rows; 
    }


    macht das unset($fdata); hier übergaupt Sinn? ... ist ja innerhalb der Funktion
    und sollte doch nach return sowieso nicht mehr existieren ?!?! oder?


    bzw in Kurzform:

    function count_filerows ($datei) { 
       return count(file($datei)); 
    }



    also was frisst jetzt Euerer Meinung nach weniger Ressourcen ?!

    PS:
    ... wie könnte man das evtl. testen, was schneller ist bzw. weniger RAM / CPU braucht?


  • in: Zeilen in Datei zählen ?

    geschrieben von spdata

    Hallo

    ich möchte so Performance-schonend wie möglich die Zeilen einer Datei zählen.

    bekannt ist mir mit file() alle Zeilen als Array einzulesen
    und dann mit count() dieses Array zu zählen

    function count_filerows ($datei) { 
       $fdata = file($datei); 
       $rows = count($fdata); 
    return $rows; 
    }


    Aber mit file() muss ich ja jedesmal die komplette Datei einlesen

    ... gibt es nicht eine Funktion, um je Zeile nur 1 Zeichen einzulesen ?!?
    oder was ganz anderes, um die Zeilen-Anzahl zu ermitteln ?!


    cool wäre halt einfach ein Parameter in file(), der die Länge (Anzahl Zeichen) je Zeile angibt
    ... gibts aber bei file() wohl nicht, siehe: http://php.net/manual/de/function.file.php

    wie kann ich sonst die Anzahl der Zeilen einer Datei möglichst Ressourcen-schonend zählen ?!
    Danke!

    EDIT habe zwei Versuche gemacht mit feof() und fgets() leider ohne Erfolg:


    bei feof() bekomme ich: Fatal error: Maximum execution time of 20 seconds exceeded

    function count_filerows ($datei) { 
    $handle = fopen($datei,'r');
    $rows=0; 
    while(!feof($handle)) { 
       $rows++; 
       }
    fclose($handle);
    return $rows; 
    }




    bei fgets() bekomme ich als Ergebnis immer 0 (null)

    function count_filerows ($datei) { 
    $handle = fopen($datei,'r');
    $rows=0; 
    while ( fgets($handle, 1) !== false ) { 
       $rows++; 
       }
    fclose($handle);
    return $rows; 
    }


    .... die Idee ist denke ich schon gut,
    ??? ... aber warum klappt es nicht ?!? ... wo ist der Fehler?

    Danke!
  • in: PHP - Dateien anzeigen + löschfunktion

    geschrieben von spdata

    Hallo

    zum Thema: PHP - Dateien anzeigen + löschfunktion

    hier mal ein Script zum Löschen von allen Dateien und ganzen Ordnern
    ... löscht innerhalb des Verzeichnis, in dem das Script liegt.

    eher zur Kontrolle der Dateien auf dem Webspace, also nix für die User :)

    oder doch ?
    .... die Variable $ordner = '.'; als User-Verzeichnis anpassen
    und die Zugangskontrolle (Login) entsprechend ändern


    hier die Datei: delete_all.php zum anzeigen und löschen von Dateien und Ordner

    <?php
    // ------------------------------------------------------------ 
    // ----------------- DELETE files and folders ----------------- 
    // ------------------------------------------------------------ 
    
    $password = 'admin';    // --- bitte anpassen / aendern !!! 
    
    // -------------------------------------------- 
    
    $secsalt = 'c4RtG81Qwi'; 
    
    $ordner = '.'; 
    
    $message = 'Bitte eine Datei oder ein Verzeichnis ausw&auml;hlen:'; 
    
    // -------------------------------------------- 
    
    header("Cache-Control: no-store, no-cache, must-revalidate");
    header("Cache-Control: post-check=0, pre-check=0", false);
    header("Pragma: no-cache");
    
    $runfile = basename($_SERVER['SCRIPT_NAME']); 
    $run_dir = dirname($_SERVER['SCRIPT_NAME']); 
    
    // -------------------------------------------- 
    
    
    function deldir($dir)  { 
    
    	$dp = @opendir($dir); 
    	while($file = @readdir($dp)) { 
    	$name = $dir . '/' . $file;
    	if ($file != '.' && $file != '..') 
    	{ 
    	if (is_dir($name)) { @deldir ($name); } 
    	else { @unlink($name); }
    	} 
    	} 
    	@closedir($dp); 
    	@rmdir($dir); 
    	$message = 'Das Verzeichnis <strong>'.$dir.'</strong> wurde entfernt.';
    
    return $message; 
    }  
    
    // -------------------------------------------- 
    
    $ypw = md5($password.$secsalt); 
    $zpw = 'x'; 
    
    if (!empty($_GET['pw'])) { 
    $zpw = md5($_GET['pw'].$secsalt); 
    }
    
    if (!empty($_GET['xpw'])) { 
    $zpw = $_GET['xpw']; 
    }
    
    // -------------------------------------------- 
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="pragma" content="no-cache">
    
    <title>DELETE ALL</title>
    
    <style type="text/css">
    <!--
    body { 
      font-family: Verdana, Arial; 
      font-size: 12px; 
      color: #000000; 
      background-color: #FFFFFF; 
    }
    -->
    </style>
    
    </head>
    <body>
    
    
    <?php 
    // -------------------------------------------- 
    
    if ($zpw == $ypw) { 
    
    
    
    if (!empty($_GET['delete'])) { 
    // ------------------------------ 
    
    $directory = trim($_GET[delete]);
    
    if (is_file($directory) === TRUE) {
    @unlink ($directory); 
    $message = 'Die Datei <strong>'.$directory.'</strong> wurde entfernt.'; 
    }
    else { 
    $message = deldir ($directory); 
    }
    
    // ------------------------------ 
    }
    
    
    // -------------------------------------------- 
    
    
    echo "<div style=\"text-align:center;\">\r\n";
    echo "<h1>DELETE ALL</h1>\r\n"; 
    echo "<p> --- <a href=\"".$runfile."?&xpw=".$zpw."\">HOME</a> --- <a href=\"".$runfile."?&xpw=x\">LOGOUT</a> --- </p>\r\n"; 
    echo "<p><span style=\"padding:4px; background:#DEDEDE;\">".$run_dir."/</span></p>\r\n";
    echo "<p>".$message."</p>\r\n"; 
    echo "</div>\r\n";
    
    echo "<hr />\r\n";
    
    echo "<div style=\"text-align:center;\">\r\n";
    echo "<br />\r\n";
    
    
    echo "<table width=\"700\" border=\"0\" cellspacing=\"2\" cellpadding=\"2\" align=\"center\">\r\n"; 
    
    echo "<tr bgcolor=\"#CCCCCC\" align=\"center\" valign=\"top\">\r\n"; 
    echo "<td width=\"5%\">NR</td>\r\n";
    echo "<td width=\"10%\">TYP</td>\r\n"; 
    echo "<td width=\"55%\">NAME</td>\r\n"; 
    echo "<td width=\"15%\">VIEW</td>\r\n";
    echo "<td width=\"15%\">DELETE</td>\r\n"; 
    echo "</tr>\r\n"; 
      
    $handle = opendir($ordner);
    
    $i=1; 
    while ($file = readdir ($handle)) {
    if($file != '.' && $file != '..' && $file != $runfile) {
    
    if(is_dir($ordner.'/'.$file)) {
    $deltyp = 'Ordner'; 
    $delnam = '<strong>'.$ordner.'/'.$file.'/</strong>'; 
    } 
    else {
    $deltyp = 'Datei'; 
    $delnam = ''.$ordner.'/'.$file.''; 
    }
    
    $viewit = '<a href="'.$ordner.'/'.$file.'" target="_blank">(ansehen)</a>'; 
    $delink = '<a href="'.$runfile.'?delete='.$ordner.'/'.$file.'&xpw='.$zpw.'">[entfernen]</a>'; 
    
    if ( $i%2 == 0) { $tabbgcolor = '#DDDDDD'; } 
    else { $tabbgcolor = '#EEEEEE'; } 
    
    echo "<tr bgcolor=\"".$tabbgcolor."\" align=\"left\" valign=\"top\">\r\n";
    echo "<td width=\"5%\">&nbsp; ".$i."</td>\r\n";
    echo "<td width=\"10%\">&nbsp; ".$deltyp."</td>\r\n";
    echo "<td width=\"55%\">&nbsp; ".$delnam." </td>\r\n";
    echo "<td width=\"15%\">&nbsp; ".$viewit."</td>\r\n";
    echo "<td width=\"15%\">&nbsp; ".$delink."</td>\r\n";
    echo "</tr>\r\n";
    
    $i++; 
    
    }
    
    }
    
    closedir($handle);
    
    
    echo "</table>\r\n"; 
    
    echo "<br />\r\n";
    echo "<br />\r\n";
    
    echo "</div>\r\n";
    
    
    
    // -------------------------------------------- 
    
    }
    else { 
    
    echo "<br />\r\n"; 
    echo "<form name=\"form1\" method=\"get\" action=\"".$runfile."\">\r\n"; 
    echo "Passwort:  <input type=\"password\" name=\"pw\" size=\"22\" maxlength=\"100\" />\r\n"; 
    echo "<input type=\"submit\" name=\"login\" value=\"OK\" />\r\n"; 
    echo "</form>\r\n"; 
    echo "<br />\r\n"; 
    
    }
    
    // -------------------------------------------- 
    
    
    echo "<br />\r\n"; 
    echo "<br />\r\n"; 
    echo "<br />\r\n"; 
    
    
    // ---------------------------------------------------- 
    ?>
    
    </body>
    </html>



    ok, das kann man natürlich auch mit SESSIONs machen
    und noch viel mehr rein bauen, wie Datei-Datum, Sortierung nach Name/Datum, etc.
    aber so ist es auch schon ganz brauchbar, finde ich


  • in: URL mit Parameter bei GET Übergabe

    geschrieben von spdata

    ok, beide Varianten funktionieren, das mit explode() und das mit substr()

    habe es mal jeweils in eine Funktion gepackt

    (1) mit explode()

    function deeplink_encode1 ($link, $deepid='&url=') { 
      $deepos = strpos($link, $deepid); 
        if ($deepos === FALE) { $neulink = $link; }
        else { 
          $urltempar = explode($deepid,$link);  
          $link_teil1 = $urltempar[0]; 
          $link_teil2 = $urltempar[1]; 
          $neulink = $link_teil1.$deepid.urlencode($link_teil2);
        }
    return $neulink;
    } 
    
    // ----------------------------------------------------------- 
    
    $new_link = deeplink_encode1($longlink,'&url=');



    (2) mit substr()

    function deeplink_encode2 ($link, $deepid='&url=') { 
      $deepos = strpos($link, $deepid);  
        if ($deepos === FALE) { $neulink = $link; }
        else { 
          $deeplen = strlen($deepid);
          $link_teil1 = substr($link, 0, $deepos); 
          $link_teil2 = substr($link, $deepos + $deeplen); 
          $neulink = $link_teil1.$deepid.urlencode($link_teil2); 
        }
    return $neulink;
    } 
    
    // ----------------------------------------------------------- 
    
    $new_link = deeplink_encode2($longlink,'&url=');



    jetzt würde ich gerne wissen, welche der beiden Funktionen schneller ist,
    bzw. welche weniger Ressourcen verbraucht (CPU / RAM / runtime ...) ... ?
    ... es sind pro Aufruf bis zu 50 Links zu prüfen


    und ob es besser ist, das Vorkommen von '&url=' vor Aufruf der Funktion zu prüfen
    und nur wenn das auch im $longlink vorkommt, dann die encode Funktion aufrufen


    ist das egal, ob ich diese Prüfung (ob '&url=' überhaupt im $longlink vorkommt)
    im Code oder in der Funktion mache, also was würde mehr Performance brauchen,

    Wenn ich vorher prüfe, kann ich die Prüfung innerhalb der Funktion zwar weglassen

    function deeplink_encode2a ($link, $deepid='&url=') { 
      $deepos = strpos($link, $deepid);  
      $deeplen = strlen($deepid);
      $link_teil1 = substr($link, 0, $deepos); 
      $link_teil2 = substr($link, $deepos + $deeplen); 
      $neulink = $link_teil1.$deepid.urlencode($link_teil2); 
        }
    return $neulink;
    }
    
    // ----------------------------------------------------------- 
    
    if (strpos($longlink, '&url=')) !== FALE) {
    $new_link = deeplink_encode2a($longlink, '&url='); 
    }
    else { 
    $new_link = $longlink; 
    }



    wenn ich einfach jeden Link durch einer der oberen encode Funktionen jage
    dann wird bei FALSE der encode-Teil in der Funktion ja auch nicht angewendet.

    kommt das auf das gleiche raus, Performance-Unterschiede?
    wie würdet Ihr es machen ?
    jeden Link vorher prüfen .... oder alle Links durch-jagen und innerhalb Funktion prüfen ?!


  • in: Gegenstück zu php include() in Javascript ?

    geschrieben von spdata

    Hallo

    ich habe eine Seite, deren Inhalte bisher mit php include() eingebunden werden.
    je nach $_GET Anfrage wird die entsprechende Datei includiert

    index.php?kapitel=top1_4 .... dann wird die Datei top1_4.htm als Inhalt includet
    (enthält den HTML-Code mit dem Inhalt, ohne Head und ohne Menü, nur Content)

    Jetzt will ich diese Seite für Webspace ohne PHP umbauen
    bzw. so, dass man auf der Seite auch offline (auf PC) an die Inhalte kommt.


    Wie mache ich es per Javascript, dass bei Klick auf index.html?kapitel=top1_4
    die Datei top1_4.htm im entsprechenden Content-Bereich ausgegeben wird ?

    bisher als PHP:

    <div id="content"> 
    
    <?php 
    if (!empty($_GET['kapitel'])) {  $inhalt = $_GET['kapitel'].'.htm'; }
    else { $inhalt = 'start.htm'; }
    
    if (file_exists($inhalt)) {  include($inhalt);  }
    else {  echo "<p>Fehler .... keine Daten zur Kapitel Auswahl.</p>'; }
    ?>
    
    </div>



    ich suche jetzt diese Funktion als Javascript

    also die GET Variable kapitel in Javascript verfügbar machen,
    und Dateiname var inhalt = kapitel+'.htm'; im Content Div ausgeben
    (wenn keine GET Variable übergeben, dann start.htm ausgeben)

    also analog zum PHP wie oben, nur eben in JavaScript.

    PS: nein, ich will nicht mit frames oder iframe arbeiten

    hat jemand ein Beispiel? .... Danke!


  • in: URL mit Parameter bei GET Übergabe

    geschrieben von spdata

    Hallo

    ich glaube Du hast dabei übersehen, dass nicht $link der Link im url Parameter ist,
    sondern der komplette Link, der diesen url Parameter aber auch andere enthält.

    ..../index.php?id=1234&typ=A&url=http://example.de?wert=555&info=xyz&status=1

    Problem ist, wie gesagt, ich habe nur den kompletten Link, und nicht den url Parameter einzeln


    Nochmal das Beispiel mit explode()

    $link = 'http://example.org/somedir/index.php?id=1234&typ=A&url=http://example.de?wert=555&info=xyz&status=1';
    
    $urlparatmp = explode('&url=',$link);  
    
    $link_teil1 = $urlparatmp[0];     // --- Link Teil vor &url= 
    $link_teil2 = $urlparatmp[1];     // --- Link Teil nach &url= 
    
    $link_neu = $link_teil1.'&url='.urlencode($link_teil2);
    
    echo '<a href="' . $link_neu . '">KLICK</a>';


    das funktioniert aber nur, wenn der Parameter url der letzte Parameter im Link ist
    wenn die Parameter anders verteilt sind, dann klappt das so nicht mehr mit explode

    BSP:
    ..../index.php?id=1234&url=http://example.de?wert=555&info=xyz&status=1&typ=A
    (hier ist &typ=A der letzte Parameter, also würde dieser in $link_teil1 fehlen .... )

    daher dachte ich an ein preg_match, der den url Parameter ausliest
    aber weil im url Parameter ja auch & Zeichen enthalten sind,
    kann ich nicht suchen nach & um das Ende des url Parameter zu finden

    ich hoffe das Problem ist jetzt (besser) verstanden .... :)

    da werde ich wohl sicher stellen müssen, das der url Parameter immer der zuletzt angehängte ist
    damit es mit der explode() Methode funktioniert, oder hat jemand doch noch ne Idee ?!

  • in: URL mit Parameter bei GET Übergabe

    geschrieben von spdata

    Hallo

    urlencode wäre schon gut

    leider habe ich die URL, die ich als Parameter anhängen will, nicht einzeln

    also den Link bekomme ich so als string

    $link = 'http://example.org/somedir/index.php?id=1234&typ=A&url=http://example.de?wert=555&info=xyz&status=1';


    also müsste ich den erst zerlegen, damit ich den url Parameter einzeln habe
    um diesen dann durch urlencode() zu jagen .... explode oder preg_match ?

    mal grobe Schätzung mit explode()

    $urlparatmp = explode('&url=',$link); 
    $link_neu = $urlparatmp[0].'&url='.urlencode($urlparatmp[1]);


    ob das hinhaut ?!

    ... setzt wohl auch vorraus, das &url= der letzte Parameter in $link ist


  • in: URL mit Parameter bei GET Übergabe

    geschrieben von spdata

    Hallo

    ich möchte über einen Link einen Parameter übergeben,
    der wiederum eine URL mit Parametern enthält

    index.php?id=1234&typ=A&url=http://example.de?wert=555&info=xyz&status=1

    dann kommt als $_GET Werte an:

    Array
    (
        [id] => 1234
        [typ] => A
        [url] => http://example.de?wert=555
        [info] => xyz
        [status] => 1
    )


    ich will aber, dass als $_GET ankommt

    Array
    (
        [id] => 1234
        [typ] => A
        [url] => http://example.de?wert=555&info=xyz&status=1
    )


    wie mache ich das so, dass die mit url= übergebene URL komplett mit allen Parameter ankommt ?
    Danke


  • in: Benutzerdefinierte Datei mit PHP öffnen

    geschrieben von spdata

    Hi

    hier mal ein ganz dreckiger php code

    <?php
    
    if (!empty($_POST['name'])) { 
    
    $go_name = trim(chop($_POST['name']));
    
    // ----- Eingabe von Steuer- und Sonderzeichen befreien ----- 
    
    $go_name = preg_replace('/[^0-9a-zA-ZäöüÄÖÜß_\- ]/', '', $go_name); 
    
    $umlaute1 = array( 'ä',  'ö',  'ü',  'ß',  'Ä',  'Ö',  'Ü'  ); 
    $umlaute2 = array( 'ae', 'oe', 'ue', 'ss', 'Ae', 'Oe', 'Ue' ); 
    
    $save_name = str_replace($umlaute1, $umlaute2, $go_name); 
    
    $file_name = '_user_'.$save_name.'.txt'; 
    
    if (!file_exists($file_name)) { 
    
    $user_infos = "0|0|0"; 
    
    $handle = fopen($file_name,"w", 0666);
    fwrite($handle,$user_infos);
    fclose($handle);
    
    } 
    else { 
    $user_infos = file_get_contents($file_name); 
    }
    
    
    
    // --------------------------------------- 
    
    $fragen = array(); 
    $fragen[0] = 'Fragen und Antworten'; 
    
    $fragen[1] = array(); 
    $fragen[1][0] = 'Was hat hat eine Elefant ?'; 
    $fragen[1][1] = 'Schnabel'; 
    $fragen[1][2] = 'Rüssel'; 
    $fragen[1][3] = 'Flügel'; 
    $fragen[1][4] = 'Federn'; 
    $fragen[1][5] = 2; 
    
    $fragen[2] = array(); 
    $fragen[2][0] = 'Wie hoch ist der Eifelturm in Paris ?'; 
    $fragen[2][1] = '113 Meter'; 
    $fragen[2][2] = '241 Meter'; 
    $fragen[2][3] = '324 Meter'; 
    $fragen[2][4] = '537 Meter'; 
    $fragen[2][5] = 3; 
    
    $fragen[3] = array(); 
    $fragen[3][0] = 'Wie heisst die Hauptstadt von Italien ?'; 
    $fragen[3][1] = 'Neapel'; 
    $fragen[3][2] = 'Venedig'; 
    $fragen[3][3] = 'Rom'; 
    $fragen[3][4] = 'Palermo'; 
    $fragen[3][5] = 3; 
    
    $fragen[4] = array(); 
    $fragen[4][0] = 'Wo findet das Dschungle-Camp statt ?'; 
    $fragen[4][1] = 'Brasilien'; 
    $fragen[4][2] = 'Iran'; 
    $fragen[4][3] = 'Deutschland'; 
    $fragen[4][4] = 'Australien'; 
    $fragen[4][5] = 4; 
    
    $anzahlfragen = (count($fragen) - 1); 
    
    // --------------------------------------- 
    
    
    $user_data = explode('|',$user_infos); 
    
    $last_frage   = $user_data[0]; 
    $antw_richtig = $user_data[1]; 
    $antw_falsch  = $user_data[2]; 
    
    
    if (!empty($_POST['zumergebnis']) && $_POST['zumergebnis'] == 'ja') { 
    
    echo "<h2>ERGEBNIS</h2>\r\n"; 
    echo "<p>Name: $go_name </p>\r\n"; 
    echo "<p>Anzahl Fragen: $last_frage</p>\r\n"; 
    echo "<p>Rischtige Antworten: $antw_richtig </p>\r\n"; 
    echo "<p>Falsche Antworten: $antw_falsch </p>\r\n"; 
    
    
    }
    else { 
    
    
    $fragenr = ($last_frage + 1); 
    $ausgabe1 = $fragen[$fragenr]; 
    
    if (!empty($_POST['fnum'])) { 
    $go_fnum = trim(chop($_POST['fnum']));
    
    if ($_POST['antwort'] == $ausgabe1[5]) { 
    echo "<p>Deine Antwort war richtig.</p>\r\n";
    $antw_richtig++;
    } 
    else {
    echo "<p>Deine Antwort war falsch.</p>\r\n";
    $antw_falsch++; 
    }
    
    $fragenext = ($fragenr+1); 
    
    $user_infos_neu = "$fragenr|$antw_richtig|$antw_falsch"; 
    
    $handle = fopen($file_name,"w", 0666);
    fwrite($handle,$user_infos_neu);
    fclose($handle);
    
    if ($fragenr == $anzahlfragen) { 
    
    echo "<form name=\"form3\" method=\"post\" action=\"\">\r\n"; 
    echo "<p>Weiter zum ERGEBNIS</p>\r\n"; 
    echo "<input type=\"hidden\" name=\"name\" value=\"$go_name\">\r\n"; 
    echo "<input type=\"hidden\" name=\"zumergebnis\" value=\"ja\">\r\n"; 
    echo "<p> &nbsp;&nbsp;&nbsp; OK <input type=\"submit\" name=\"go\" value=\"weiter\"> </p>\r\n"; 
    echo "</form>\r\n"; 
    } 
    else { 
    
    echo "<form name=\"form3\" method=\"post\" action=\"\">\r\n"; 
    echo "<p>Weiter zur FRAGE: $fragenext</p>\r\n"; 
    echo "<input type=\"hidden\" name=\"name\" value=\"$go_name\">\r\n"; 
    echo "<p> &nbsp;&nbsp;&nbsp; OK <input type=\"submit\" name=\"go\" value=\"weiter\"> </p>\r\n"; 
    echo "</form>\r\n"; 
    
    }
    
    
    }
    else { 
    
    
    echo "<h2>FRAGE: $fragenr von $anzahlfragen</h2>\r\n"; 
    
    echo "<form name=\"form2\" method=\"post\" action=\"\">\r\n"; 
    
    echo "<p>FRAGE: $ausgabe1[0]</p>\r\n"; 
    echo "<p>&nbsp;</p>\r\n"; 
    
    echo "<p>ANTWORTEN:</p>\r\n"; 
    echo "<ol>\r\n"; 
    echo "<li> <input type=\"radio\" name=\"antwort\" value=\"1\"> &nbsp; $ausgabe1[1] </li>\r\n"; 
    echo "<li> <input type=\"radio\" name=\"antwort\" value=\"2\"> &nbsp; $ausgabe1[2] </li>\r\n"; 
    echo "<li> <input type=\"radio\" name=\"antwort\" value=\"3\"> &nbsp; $ausgabe1[3] </li>\r\n"; 
    echo "<li> <input type=\"radio\" name=\"antwort\" value=\"4\"> &nbsp; $ausgabe1[4] </li>\r\n"; 
    echo "</ul>\r\n"; 
    echo "<input type=\"hidden\" name=\"name\" value=\"$go_name\">\r\n"; 
    echo "<input type=\"hidden\" name=\"fnum\" value=\"$fragenr\">\r\n"; 
    echo "<p> &nbsp;&nbsp;&nbsp; OK <input type=\"submit\" name=\"go\" value=\"weiter\"> </p>\r\n"; 
    echo "</form>\r\n"; 
    
    }
    
    }
    
    }
    else { 
    
    ?>
    
    <br>
    <form name="form1" method="post" action="">
      Dein Name: <input type="text" name="name" size="24" maxlength="100">
      &nbsp;&nbsp;&nbsp; OK <input type="submit" name="go" value="weiter">
    </form>
    <br>
    
    <?php
    
    }
    
    
    // --------------------------------------- 
    ?>


    problem dabei ist vorallem, wenn der User im Browser zurück geht,
    dann kommt Fehler, weil Fragen-Nr weiter hoch gezählt wird.

    eigentlich so völlig unbrauchbar der Code, Fehler sind so garantiert !!!
    aber ist halt einfach mal ein Denk-Anstoß ... zu Fragen in Array

    geht der User aber brav nur über die Formular Buttons, sollte es klappen

    aber so ist das keine gute Lösung
    besser wäre wohl alles in MySQl zu machen
    und auch mit einer Tabelle, welche Fragen welcher User schon beantwortet hat
    dann kann er evtl auch mal eine überspringen bzw. man kann Fehler abfangen,
    indem man prüft, ob diese Frage schon beantwortet wurde, wenn ja , nicht nochmal

    auch würde ich für jeden User (Name) einen Account machen, mit Passwort und Login
    so, dass nicht 2 verschiedene Personen mit dem gleicnen Name rumhantieren

    Nochmal ... der Code oben ist eigentlich ein NEGATIV Beispiel und sollte NICHT verwendet werden

    aber vielleicht kann man daraus ja weitere Ideen ableiten

  • in: Keys in Array mit oder ohne Anführungszeichen?

    geschrieben von spdata

    Hallo

    ich möchte einem multidimensionales Array neue Keys geben
    und frage mich dabei, ob es notwendig ist, die neuen Keys in Anführungszeichen zu setzen ?!

    test

    $daten1 = array();
    
    $daten1[0] = array('id'=>'178', 'name'=>'Name1', 'imfo'=>'Bla balbal Text'); 
    $daten1[1] = array('id'=>'127', 'name'=>'Name2', 'imfo'=>'Bla balbal Text'); 
    $daten1[2] = array('id'=>'345', 'name'=>'Name3', 'imfo'=>'Bla balbal Text'); 
    $daten1[3] = array('id'=>'167', 'name'=>'Name4', 'imfo'=>'Bla balbal Text'); 
    $daten1[4] = array('id'=>'214', 'name'=>'Name5', 'imfo'=>'Bla balbal Text');


    so
    $daten2 = array(); 
    
    foreach($daten1 as $item1) { 
    $newkey = $item1['id']; 
    $daten2[$newkey] = $item1; 
    }


    oder so
    $daten2 = array(); 
    
    foreach($daten1 as $item1) { 
    $newkey = $item1['id']; 
    $daten2[''.$newkey.''] = $item1; 
    }


    oder wie .... oder egal ?

Login zum Webhosting ohne Werbung!