php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 21.11.2008, 03:35  
Neuer Benutzer
 
Registriert seit: 19.11.2008
Beiträge: 1
crow befindet sich auf einem aufstrebenden Ast
Standard Mehrdimensionales array durchsuchen

Halle Leute ich habe vor einen counter in PHP zu schreiben. ich weiss das das nix besonders späktakuläres ist aber seis drum...
ich will kein MySQL verwenden deswegen weden alle daten in 2 txt dateien gespeichert.
geplant ist das ganze wie folgt.:
es gibt ein php script das beim seitenaufruf gestartet wird. das guckt sich dann die IP der Person an, die die seite aufruft und guckt dann ob die schon in der lsite ist. wenn ja vergleicht das script das datum. wenn es noch derselbe tag ist, passiert nix. wenn das datum allerdings vom vortag ist, soll der eintrag gelöscht werden und ein neuer geschrieben und der counter um 1 erhöht werden und der neue wert dann in eine andere txt datei geschrieben werden. so hatte ich mir das überlegt.^^

PHP-Code:
<?php
$count 
0;
$ip_aktuell $_SERVER['REMOTE_ADDR'];
$date date(ydm);
$dateiname_ip_liste "ip2.txt";
$dateiname_counter "counter.txt";

if(!
file_exists($dateiname_ip_liste))    
{                   
    
$test fopen ($dateiname_ip_liste,"w"); 
    
fclose($test);               
}

//sorgt dafür das nicht 10^n IPs geschrieben werden beim reloaden
if(filesize($dateiname_ip_liste) < 1){
$rad rand(20);
while(
$count 20)
{
    
    if(
$count == 5)
    {
        
$min_day 01;
        
$max_day 30;
        
$min_month 01;
        
$max_month 12;
        
$min_year 01;
        
$max_year 99;
        
$rand_day rand($min_day $max_day);
        
$rand_month rand($min_month $max_month);
        
$rand_year rand($min_year $max_year);
        
        
$rand_date "$rand_year$rand_day$rand_month";
        
        
$ip_datei fopen("ip2.txt""a");
        
fwrite($ip_datei$rand_date."|".$ip_aktuell."\n");
        
fclose($ip_datei);
        
$count++;
    }
    else
    {
        
//erzeugen der random ips
        
$min 0;
        
$max 255;
        
$min2 0;
        
$max2 255;
        
$min3 0;    
        
$max3 255;
        
$min4 0;
        
$max4 255;
        
$rand rand($min $max);
        
$rand2 rand($min2 $max2);
        
$rand3 rand($min3 $max3);
        
$rand4 rand($min4 $max4);
        
$rand_ip "$rand.$rand2.$rand3.$rand4";
            
        
$ip_datei fopen($dateiname_ip_liste"a");
        
fwrite($ip_datei$date."|".$rand_ip."\n");
        
fclose($ip_datei);
        
$count++;
    }
}
}
//darf nicht vor der while schleife stehen da sonst die datein eiglesen wird bevor sei ein inhalt hat :)
$datei file($dateiname);
$array = array();
$count 0;
$_nicht_mehr_weitersuchen 0;
foreach(
$datei as $Zeile)
{
    
$zerlegen explode("|"$Zeile);
    
$array[] = $zerlegen;
    
/*so hier möchte ich jetzt das array durchsuchen
    damit ich auch nachher weiss an welcher stelle 
    die gefundene ip steht lass ich gleichzeitig ne counter mitlaufen
    der counter geht auch aber das durchsuchen nicht :(*/
    
$search array_search($ip_aktuell$zerlegen);
    if(
$_nicht_mehr_weitersuchen == 0)
    {
        if(
$serach == 1)
        {
            
$platz $count;
            
$_nicht_mehr_weitersuchen 1;
        }
        else
        {
            
$count++;
        }
    
    }
    
}
echo 
"<pre>";
print_r$array );
echo 
"</pre>";
echo
"$count";
echo
"$platz";

//wenn die ip nicht gefunden wurde
if($_nicht_mehr_weitersuchen == 0)
{
    
//neue daten dem array hinzufügen
    
$teilarray = array();
    
$teilarray[] = $ipaktuell;
    
$teilarray[] = $date;
    
$array[] = $teilarray;
    
    
//daten wieder ins txt schreiben
    
foreach($array as $teilarray)
    {
        
$ip_datei fopen($dateiname_ip_liste"a");
        
fwrite($ip_datei$teilarray[0]."|".$teilarray[1]."\n");
        
fclose($ip_datei);
    }
    
    
//pagecounter um 1 erhöhen
    
if(!file_exists($dateiname_counter))    
    {                   
        
$test fopen ($dateiname_counter,"w"); 
        
fclose($test);               
    }
    
$_counterdatei fopen($dateiname_counter,"r+");
    
$_counterstand fgets($_counterdatei,10); //datei wird gelesen bis zur 10. stelle
    
if(empty($_counterstand)){$_counterstand 0;}
    
$_counterstand++; //+1
    
echo("Besucher:$_counterstand");
    
rewind($_counterdatei); // damit der dateizeiger wieder auf platz 1 springt
    
fwrite($_counterdatei$_counterstand);
    
fclose($_counterdatei);
}
//vergleich von den datums hmm was ist die mehrzahl ¿? daten¿?
//wenn die ip gefunden wurde das datum aber nicht gleich ist:
if(array[$platz][0]-$date != 0)

    
//neue daten hinzufügen
    
unset($array[$platz])
    
$teilarray = array();
    
$teilarray[] = $ipaktuell;
    
$teilarray[] = $date;
    
$array[] = $teilarray;

    
//daten wieder ins txt schreiben
    
foreach($array as $teilarray)
    {
        
$ip_datei fopen($dateiname_ip_liste"a");
        
fwrite($ip_datei$teilarray[0]."|".$teilarray[1]."\n");
        
fclose($ip_datei);
    }    

    
//pagecounter um 1 erhöhen
    
if(!file_exists($dateiname_counter))    
    {                   
        
$test fopen ($dateiname_counter,"w"); 
        
fclose($test);               
    }
    
$_counterdatei fopen($dateiname_counter,"r+");
    
$_counterstand fgets($_counterdatei,10); //datei wird gelesen bis zur 10. stelle
    
if(empty($_counterstand)){$_counterstand 0;}
    
$_counterstand++; //+1
    
echo("Besucher:$_counterstand");
    
rewind($_counterdatei); // damit der dateizeiger wieder auf platz 1 springt
    
fwrite($_counterdatei$_counterstand);
    
fclose($_counterdatei);
}

?>
so das ist der code den ich bis jetzt habe. am anfang wird eine liste mit random ips+ daten generiert. die wird dann in eine txt datei geschrieben und dann im nächsten schritt in ein array gelesen wird.
ich wil nun in der foreach schleife gleich überprüfen ob sich in dem unter array die aktuele ip befidnet weil das die einziege möglichkeit ist die mir eingefallen ist ein mehrdimensionales array zu durchsuchen.
das klappt aber nicht

EDIT: ach aj hab ich ganz vergessen fals sich jemand frag was der komische counter in der foreach schleife zu suchen hat. der sit dafür das das ich nachher weiss welche nr das array mit der selben ip hat damit ich das datum vergleichen kann und das gegebenenfalls rauslöschen kann.

lg aus Uruguay crow

Geändert von crow (21.11.2008 um 05:21 Uhr). Grund: code veränderung
crow ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 21.11.2008, 08:26  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Willkommen. Sag mal ist deine Shift-Taste kaputt?

Bevor ich mir deinen Code angucke, willst du sowas machen?

PHP-Code:
// Daten auslesen
$datei file("datei.txt");
$counter = (int)$datei[0]; // erste Zeile ist der Counter
unset($datei[0]);

// Daten aufbereiten
$ips = array();
foreach(
$datei as $line)
{
  
$tmp explode(';',$line);
  
$ips[$tmp[0]] = $tmp[1];
}

// Check für Counter
if(array_key_exists($_SERVER['REMOTE_ADDR'],$ips) && $ips[$_SERVER['REMOTE_ADDR']] < date('Ymd',time()))
{
  
$counter++;
  
$ips[$_SERVER['REMOTE_ADDR']] = date('Ymd',time());
}

// Daten für Datei vorbereiten
$output[0] = $counter;
foreach(
$ips as $ip => $dat)
{
  
$output[] = "$ip;$dat";
}
// Daten in Datei schreiben
file_put_contents("datei.txt",$output); 
cycap ist offline  
Alt 21.11.2008, 10:21  
Erfahrener Benutzer
 
Benutzerbild von tomtaz
 
Registriert seit: 17.06.2008
Beiträge: 1.762
PHP-Kenntnisse:
Fortgeschritten
tomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig nett
tomtaz eine Nachricht über ICQ schicken tomtaz eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von cycap Beitrag anzeigen
Willkommen. Sag mal ist deine Shift-Taste kaputt?
Ne, das glaub ich nicht, die erste Zeile und im Edit hat er sie ja auch noch verwendet...
__________________
Mfg Tomtaz
"Es soll jetzt diese Erfindung geben.... Kugel oder so heißt die. Ist so eine Art Suchmaschine..."
tomtaz ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Turnierbaum aus array erstellen kingflo PHP-Fortgeschrittene 11 30.07.2008 11:32
Soapfault: Undefined Property Argi PHP-Fortgeschrittene 0 28.07.2008 11:17
ARRAY: alle möglichen Kombinationen Tentacle PHP Tipps 2006 13 12.05.2006 00:18
Übersicht aus mehrdimensionalem Array erzeugen Crypi PHP-Fortgeschrittene 0 30.01.2006 13:44
Array auslesen andrew22 PHP Tipps 2006 3 21.01.2006 23:06
Array Formatierung PHP Tipps 2006 3 17.01.2006 19:12
Menü mit Unterpunkten supertramp Beitragsarchiv 7 18.10.2005 22:40
Problem beim vergleichen von 2 Arrays PHP Tipps 2005-2 1 06.10.2005 14:25
(schnellere) Funktion zum Zusammenfassen von CSS PHP-Fortgeschrittene 21 08.08.2005 16:47
array nach Stringteilen durchsuchen PHP Tipps 2005-2 6 22.07.2005 19:44
Sortieren von Arrays mit mehr als 2 Dimensionen (Teil 2) Buhmann PHP-Fortgeschrittene 4 12.07.2005 14:03
Ordnerstruktur -> mehrdim. Array (rekursives Durchsuchen) PHP-Fortgeschrittene 4 26.03.2005 11:43
[Erledigt] Mehrdimensionales Array in eindimensionales Array umwandeln PHP-Fortgeschrittene 3 03.01.2005 22:31
Abfrage mit id aus anderer Tabelle suter PHP Tipps 2004-2 15 16.12.2004 14:25

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mehrdimensionales array durchsuchen, php mehrdimensionales array durchsuchen, http://www.php.de/php-tipps-2008/49209-mehrdimensionales-array-durchsuchen.html, array_search mehrdimensional, mehrdimensionale arrays durchsuchen, php array durchsuchen, php array_search mehrdimensional, php zweidimensionales array durchsuchen, mehrdimensionales array durchsuchen php, array durchsuchen, multidimensionales array durchsuchen, mehrdimensionale array durchsuchen, multiarray durchsuchen, php multi array search, mehrdimensionale array durchsuchen php, multi array durchsuchen, mehrdimensionalen array durchsuchen, zweidimensionales array durchsuchen, mehrdimensionale arrays durchsuchen php, mehrdimensional array durchsuchen

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:23 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum