mysqldumper
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 17.03.2005, 09:23   #1
TP-Senior
 
Registriert seit: Oct 2003
Ort: Auer - Südtirol - Italy
didi69 macht alles soweit korrekt

Fehler beim sortieren !!!


Hallo zusammen,

versuche es nochmal um Hilfe zu bekommen.

Es sortiert nicht nach "Klicks", wenn nur bis 10 Bilder in der Log Textdatei drinnen sind.
Über 10 Bilder in der Log Datei gehts.
Habe das Sortierscript von Dennis The Menace bekommen. Ich kenne mich mit PHP nicht so gut aus um den Fehler zu finden.
Vieleicht gibt es ja eine andere Möglichkeit die Sortierung durchzuführen...


Hier mal die php Datei top10.php
PHP-Code:
$galerie = $_GET['galerie']; // Galerienamen wird übergeben 
    $image_url = "./$galerie/"; // Bilderpfad wird übergeben 
    $fp= "./log/$galerie.txt";  // Log Dateipfad wird übergeben 
    if (!file_exists($fp)) die ("<td class='contenthead'><br>Noch keine TOP 10 Fotos online!</td>"); 
         
    $i=0; 
    $platz=1; 
     
  foreach(top10($fp, 10) as $line)  // es wird die Funktion top10 aufgerufen um zu sortieren 
  { 
     
    list($bild, $wert, $datum1, $datum2, $stamp1, $stamp2) = $line; 

    echo "<td width=\"150\" class=\"topfoto\" align=\"center\"><font color=\"#E60000\"><b>$platz. Platz</b></font><br><a href=\"#\" onClick=\"MM_openBrWindow('windowtop.php?pic=$bild&galerie=$galerie','fenstername', 'scrollbars=0,toolbar=0,location=0,directories=0,s  tatus=1,resizable=0,width=640,height=450,top=0')\"><img src=\"$image_url/$bild\" style=\"border:1px solid #666666\";></a><br>Aufrufe: $wert</td>"; 
             
  if ($i==9) {break;} 
    $i++; 
    $platz++; 
    
    if ($i%5 ==0) { //wenn $i durch 5 teilbar ist, 
        ?> 
           </tr><tr> 
        <? 
        

    } 
    
?>

Function zum sortieren:
PHP-Code:
function top10$string$integer 

//Sollte die Datei nicht existieren 
   
if( !is_readable$string ) ) 
    return 
false

//Lese die Datei als Array aus 
   
$file file$string ); 
   
$array = array(); 
   
$return = array(); 

//Erstellt ein mehrdimensionales Array 
   
foreach( $file as $line 
    
array_push$arrayexplode' - '$line ) ); 

//Multisort von mehrdimensionalen arrays 
function order_by($ar1$ar2

  if (
$ar1[1]<$ar2[1]) 
      return -
1
  else if (
$ar1[1]>$ar2[1]) 
      return 
1
  if (
$ar1[5]<$ar2[5]) 
      return -
1
  else if (
$ar1[5]>$ar2[5]) 
      return 
1
  return 
0


// To sort now, we use: 

usort($array,'order_by'); 

//Sonderfall (falls integer größer ist als count 
  
if( count$array ) <= $integer ) return $array

//Gir mir mal die letzten $integer x Werte zurück 
for( $i count$array ); $i count$array )-$integer$i--) 
  
array_push$return$array[$i-1]); 
   
return 
$return


Log Datei zum Sortieren: (Sortierreihenfolge: Aufrufe-Wert=(Feld2) - Timestamp-Stamp2(Feld5)
PHP-Code:
Foto0003.jpg 2005-03-07 (23:08) - 2005-03-07 (23:08) - 1110233311 1110233311
Foto0002
.jpg 2005-03-07 (23:08) - 2005-03-07 (23:08) - 1110233326 1110233326
Foto0001
.jpg 2005-03-07 (23:08) - 2005-03-07 (23:08) - 1110233334 1110233334
Foto0014
.jpg 2005-03-07 (23:08) - 2005-03-07 (23:09) - 1110233336 1110233360 
Grüße und danke für eure Hilfe
Dieter
didi69 ist offline   Mit Zitat antworten


Alt 17.03.2005, 09:53   #2
TP-Specialist
 
Benutzerbild von theo
 
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
theo bringt sich richtig ein
hi dieter,

is aber auch logisch oder? es heisst "top10". da muessen es auch 10 sein
hat der liebe dennis (wo steckt der kerl eigentlich??) schon recht.

versuch mal folgendes
PHP-Code:
foreach(top10($fp5) as $line)  // es wird die Funktion top10 aufgerufen um zu sortieren 
aber dann sind es nur noch die top5

hardy
theo ist offline   Mit Zitat antworten
Alt 17.03.2005, 10:10   #3
TP-Senior
 
Registriert seit: Oct 2003
Ort: Auer - Südtirol - Italy
didi69 macht alles soweit korrekt
Hi theo

dann ist ja das gleiche Probblem. Wenn da unter 5 Fotos in der Log Datei drinnen sind gehts auch nicht.

Kann man das nicht anders lösen? Also es müsste auch richtig anzeigen wenn nur 2 oder 3 Fotos angeklickt wurden.

Grüße
Dieter
didi69 ist offline   Mit Zitat antworten
Alt 17.03.2005, 10:20   #4
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
Du musst ermitteln, wieviele Bilder drin sind.
PHP-Code:
$anzahl=0;
$dh opendir($path);
while (
false !== ($filename readdir($dh)))
{
    if (
$filename != "." && $filename != ".." && !is_dir($fpath.$filename)) {
        if(
substr(strtoupper($filename),-4)==".JPG"$anzahl++;
    }
}
$anzahl=($anzahl<10) ? $anzahl 10

dann kannst Du es so machen:
foreach(top10($fp, $anzahl) as $line)
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer

Geändert von steffenk (17.03.2005 um 10:24 Uhr).
steffenk ist offline   Mit Zitat antworten
Alt 17.03.2005, 10:31   #5
TP-Senior
 
Registriert seit: Oct 2003
Ort: Auer - Südtirol - Italy
didi69 macht alles soweit korrekt
@ St@eff.en

Danke, danke.

Es ist aber eine Datei TXT was mit
$fp= "./log/$galerie.txt"; //Pfad der Log Datei und Name

ermittelt wird und kein Verzeichniss.

Grüße
Dieter
didi69 ist offline   Mit Zitat antworten
Alt 17.03.2005, 10:34   #6
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
dann ist es noch einfacher. Da ja nur die Bilder drinstehen, musst Du nur die Anzahl der Textzeilen ermitteln:
PHP-Code:
$a=file($logdatei);
$anzahl=(count($a)<10) ? $anzahl 10
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 17.03.2005, 14:11   #7
TP-Senior
 
Registriert seit: Oct 2003
Ort: Auer - Südtirol - Italy
didi69 macht alles soweit korrekt
@St@eff.en

Habe mir das mal angesehen und probiert.

Wenn ich weniger als 10 Zeilen in der Logdatei habe, zeigt es überhaubt nichts an, also die Top10 Seite bleibt leer.

Grüße
Dieter
didi69 ist offline   Mit Zitat antworten
Alt 17.03.2005, 14:14   #8
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
sorry, Tippfehler:

$anzahl=(count($a)<10) ? count($a) : 10;

... im Eifer des Gefechts ...
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 17.03.2005, 14:21   #9
TP-Moderator
 
Benutzerbild von skipperjan
 
Registriert seit: Jan 2005
Ort: Düsseldorf
skipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKE
Hm,

PHP-Code:
foreach(top10($fp5) as $line)  // es wird die Funktion top10 aufgerufen um zu sortieren 
Du wirst um eine kleine vorab Abfrage nicht umhinkommen, ob da jetzt 5 oder zehn steht, musst du zuvor überprüfen, ersetze also die 5 oder 10 durch eine Variable, z.B. $max oder einen Funktionsaufruf, wenn Bilderzahl < 10, $max= count(file($logdatei)) usw.,

dann musst du deine Max Top - Zahl immer nach unten korrigieren,

so long,

skipperjan
__________________
Chenaski - Klamotten designed by Pete
USE - nicht immer nur mit Stars and Stripes rumlaufen!

Hunde in der Großstadt: Guck mal wo ich fast reingetreten bin.....
skipperjan ist offline   Mit Zitat antworten
Alt 17.03.2005, 19:14   #10
TP-Senior
 
Registriert seit: Oct 2003
Ort: Auer - Südtirol - Italy
didi69 macht alles soweit korrekt
@St@eff.en

danke danke es funkte zuerst nicht. Habe aber in der Function folgende Zeile entfernt dann geht es auch mit der Sortierung

PHP-Code:
//Sonderfall (falls integer größer ist als count 
  
if( count$array ) <= $integer ) return $array
Kommisch, eigentlich müsste das ja das gleiche machen als deine Function oder??

Grüße und danke
Dieter
didi69 ist offline   Mit Zitat antworten
Alt 18.03.2005, 17:07   #11
TP-Senior
 
Registriert seit: Oct 2003
Ort: Auer - Südtirol - Italy
didi69 macht alles soweit korrekt
Hallo

ich möchte gerne das verstehen, könnte mir das einer bestätigen?
PHP-Code:
$anzahl=(count($a)<10) ? count($a) : 10
wenn count($a) kleiner ist als 10 führe count(a$) :10 aus.
z.b. count=7 dann müsste 7:10=0,7 als $anzahl gespeicher werden


Dann müsste das aber auch gehen. Ich habs jetzt weggelöscht weil bis 10 Zeilen in der Log Datei nichts angezeigt wurde.
PHP-Code:
//Sonderfall (falls integer größer ist als count 
  
if( count$array ) <= $integer ) return $array
Grüße
Dieter
didi69 ist offline   Mit Zitat antworten
Alt 18.03.2005, 18:45   #12
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
halt - das ist anders !

$anzahl=(count($a)<10) ? count($a) : 10;

Das ist nur die Kurzschreibweise für:
PHP-Code:
if(count($a)<10) {
    
$anzahl=count($a);
} else {
    
$anzahl=10;

count gibt nur an, wieviele Elemente in dem Array $a sind.

Beispiel: Es sind 3 Bilder (zeilen) in der logdatei.
Dann hat $a 3 Elemente, count($a) ist 3.

Daraus ergibt sich für $anzahl der Wert 3.

Sind 10 oder mehr Bilder da, ist $anzahl immer 10.
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 19.03.2005, 16:09   #13
TP-Senior
 
Registriert seit: Oct 2003
Ort: Auer - Südtirol - Italy
didi69 macht alles soweit korrekt
@St@eff.en

ach so Kurzschreibweise. Wieder etwas dazugelernt

Aber wieso musste ich das weglöschen damit geht???
PHP-Code:
//Sonderfall (falls integer größer ist als count 
  
if( count$array ) <= $integer ) return $array
Grüße
Dieter
didi69 ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
Fehler beim sortieren !!! Fehler beim sortieren !!!
« Welcher Compiler für C++? | aktive Benutzer ermitteln »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:05 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.