rsort() - array ab [0] verhindern

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Ricola
    antwortet
    <combie>
    laeuft echt super =)
    und ist sher viel code weniger, wie schon gesagt,
    ich haette das so nie hinbekommen =D
    jetzt habe ich auch etwas gelernt "wie vielseitig man mit wenig code sein kann" =)
    </combie>

    jetzt bastle ich noch die "navi" und "pro seite" funktionen ein und denn bin ich happy =D
    obwohl ich es jetzt schon bin =D

    thx, bye erstmal, bis denn =)

    gez. das kleine dummi coding weiblein ;P

    Einen Kommentar schreiben:


  • Ricola
    antwortet
    wow *fasziniertguck*
    also so abkuerzen haette ich es bestimmt nie gekonnt *echt baff*
    $akeys = array_keys($datei); hatte ich vorher.
    das muss ich gleich mal testen =)
    weisst du was combie =) du bist echt ein schatz =D
    es werden die anderen maybe etwas meckern weil es sogesehen
    vorgemacht wurde, aber ich zeige dafuer was ich bis jetzt erreicht
    habe, was aber alles male nicht so gut ist wie dein code =)

    zB index.php
    PHP-Code:
    <?
    $parameter="news"; //rubrik udn zugleich ordnnername
    $news_wert=3; // anzahl der angezeigten artikel pro seite
    include('tech/dynamic.php'); // ist der verarbeitende script
    $parameter=""; // falls danach andere sachen folgen sollen zB notizen
    ?>
    tech/dynamic.php
    PHP-Code:
    <?
    $req_param=$_REQUEST[$parameter];
    $dir_raw="data/".$parameter;
    if(!$news_wert) { $news_wert=3; };

    $fname_link="";
    //filename_link- falls nicht in die index.php includet wird , sondern zB seite.php

    // <combie>
    $datei = glob($dir_raw.'/*.html',GLOB_NOSORT); // <<-- Pfad und Endung anpassen
    rsort($datei);                        // umdrehen
    array_unshift($datei,'dummy');        // neues Element an pos 0
    unset($datei[0]);                     // Element an pos 0 entfernen 
    #my_var_dump($datei);                 // und Zack, da isses wie gewünscht
    // </combie>

    // <Seitennummern als auswahl>
    $Seitennummern="";
    $zahlen="9";
    $Maxdatei=count($datei);
    for ($sn=1; $sn<=ceil (count($datei) / $news_wert); $sn++)
    {
    $Seitennummer="";
    if ($sn==1 and $req_param>(($zahlen-1)/2)+1 and $Maxdatei>$zahlen) $Seitennummer="$sn...";
    else if ($sn==1) $Seitennummer="$sn";
    if ($sn > 1 and $sn < $Maxdatei)
    {
        if ($sn >= $req_param-((($zahlen-1)/2)-1) and $sn <= ($req_param+((($zahlen-1)/2)-1))) $Seitennummer="$sn";    
        else 
        {
        if ($req_param<=((($zahlen-1)/2)+1) and $sn<$zahlen) $Seitennummer="$sn";
        if ($req_param>$Maxdatei-(($zahlen-1)/2) and $sn>$Maxdatei-($zahlen-1)) $Seitennummer="$sn";
        }
    }    
    if ($sn==$Maxdatei and $req_param <= $Maxdatei-((($zahlen-1)/2)+1) and $Maxdatei>$zahlen) $Seitennummer="...$Maxdatei" ;
    else if ($sn==$Maxdatei)  $Seitennummer=$Maxdatei;
    if ($Seitennummer <> "")
        {
        if ($Seitennummer == $req_param) $Seitennummern.= "<a class=\"link\" href=\"/$fname_link?$parameter=$sn\">$Seitennummer</a> ";
        else $Seitennummern.= "<a href=\"/$fname_link?$parameter=$sn\">$Seitennummer</a> ";
        }
    }
    echo $Seitennummern;
    // </Seitennummern als auswahl>

    // <datei-inhalte verabeiten>
    if(!$req_param or $req_param==1)
        {
        $from =    1;
        $to =     $news_wert;
        }
    else
        {
        $from =    $req_param*$news_wert-($news_wert-1);
        $to =     $req_param*$news_wert;
        }
    for ($i = $from; $i <= $to; $i++)
        {
        if($datei[$i]!=NULL)
            {
                { // title
                $fp=fopen($datei[$i], "r");
                $titel_show = explode("<!--title-->",fread($fp,filesize($datei[$i])));
                fclose($fp);
                }
                { // author
                $fp=fopen($datei[$i], "r");
                $author_show = explode("<!--author-->",fread($fp,filesize($datei[$i])));
                fclose($fp);
                }
                { // text
                $fp=fopen($datei[$i], "r");
                $text_show = explode("<!--text-->",fread($fp,filesize($datei[$i])));
                fclose($fp);
                }
            // date, filename START
            $file_date_split = explode("_", $datei[$i]);
            //$file_date_split { [0]="2007" [1]="06" [2]="18" [3]="12-00" [4]="news" [5]="filetagg.html" }
            $file_date =    ltrim($file_date_split[2],"0");  // tag
            $file_date .=    ".";
            $file_date .=    ltrim($file_date_split[1],"0");  // monat
            $file_date .=    ".";
            $file_date .=    $file_date_split[0];  // jahr
            $file_date .=    " r.";
            // date, filename END
            echo '<div style="height:15px; margin: 0px 4px;"><div style="float:left;"><b>Nr.</b> '.sprintf("%03d",
            $akeys[$i]).'</div><div class="news_date" style="float:right;">'.$file_date.'</div></div>';
            echo'<fieldset>';
            if(trim($titel_show[1])!="") { echo '<legend align="center"><b>'.trim($titel_show[1]).'</b></legend>';}
            if(trim($text_show[1])!="") { echo '<div align="justify" style=" line-height:14px;" >'.trim($text_show[1]).'</div>';}
            if(trim($author_show[1])!="") { echo '<br /><br />'; author_link(trim($author_show[1])); }
            echo'</fieldset><br />';
            }
        }
    // </datei-inhalte verabeiten>
    ?>
    udn hiermit kann ich auch navigieren zB
    http://host/?news=2
    oder
    http://host/?notizen=5

    ist nichts angegeben so kommt das ins spiel
    $news_wert=3; // anzahl der angezeigten artikel pro seite
    ist "$news_wert" nicht angegeben so kommt wiederum das ins spiel
    if(!$news_wert) { $news_wert=3; };

    ich hoffe man versteht jetzt warum ich so dringend darauf bestanden hab =)
    also meine version laeuft klasse dank der glob() loesung =)
    jetzt muss sich nur noch die komplett combie loesung testen =)
    thx combie =*
    Zuletzt geändert von Ricola; 16.07.2007, 22:20.

    Einen Kommentar schreiben:


  • combie
    antwortet
    Zumindest das dreifache lesen der Datei ist überflüssig!
    Auf foreach umgestellt:
    Wo dein $akeys herkommt, oder wofür es gut ist knnte ich allerdings nicht feststellen..
    PHP-Code:
    <?php
    $filter 
    "./news/*.html"// <<--anpassen

    function author_link() // dummy 
    {}

    $dateien glob($filter,GLOB_NOSORT); // <<-- Pfad und Endung anpassen
    rsort($dateien);                        // umdrehen
    array_unshift($dateien,'dummy');        // neues Element an pos 0
    unset($dateien[0]);                     // Element an pos 0 entfernen 
    //print_r($dateien);                 // und Zack, da isses wie gewünscht

    $count 0;
    foreach(
    $dateien as $datei)
    {
        
    $count++;
        
    $content file_get_contents($datei);
        list(,
    $titel_show,)  = explode("<!--title-->" ,$content);
        list(,
    $author_show,) = explode("<!--author-->",$content);
        list(,
    $text_show,)   = explode("<!--text-->"  ,$content);
        
    // date, filename START
        
    $file_date_split explode("_"basename($datei));
        
    $file_date =    ltrim($file_date_split[2],"0");  // tag
        
    $file_date .=    ".";
        
    $file_date .=    ltrim($file_date_split[1],"0");  // monat
        
    $file_date .=    ".";
        
    $file_date .=    $file_date_split[0];  // jahr
        
    $file_date .=    " r.";
        
        echo 
    '
        <div style="height:15px; margin: 0px 4px;">
          <div style="float:left;">
            <b>Nr.</b> '
    .sprintf("%03d",$count).'
          </div>
          <div class="news_date" style="float:right;">
            '
    .$file_date.'
          </div>
        </div>'
    ;
        echo 
    '<fieldset>';
        if(
    trim($titel_show)!=""
         echo 
    '<legend align="center"><b>'.trim($titel_show).'</b></legend>';
        if(
    trim($text_show)!=""
          echo 
    '<div align="justify" style=" line-height:14px;" >'.trim($text_show).'</div>';
        if(
    trim($author_show)!=""
          echo 
    '<br /><br />'author_link(trim($author_show));
        echo
    '</fieldset><br />';
    }
       
    ?>

    Einen Kommentar schreiben:


  • tontechniker
    antwortet
    bin zwar nicht blond aber ich weiss nicht worauf du deine frage beziehst
    Bezog sich einfach nur auf
    und merke ich gerade das bei der dump zwar die reichenfolge sich...
    Sätze ohne Syntax sind schwierig.

    Einen Kommentar schreiben:


  • Ricola
    antwortet
    hm der aufbau ist genau so:
    2007_06_18_08-03_news_warmersommer.html
    datum_uhr-zeit_rubrik_orientirungstagg

    orientirungstagg dafuer damit nicht die datei immer erst gleich geoeffnet werden muss um nach dem haupttagg zu suchen
    wer der stimmt dan datei explode und filtern siehe kurzen ausschnitt:
    PHP-Code:
    for ($i $from$i <= $to$i++)
                {
                if(
    $datei[$i]!=NULL)
                    {
                        { 
    // title
                        
    $fp=fopen($dir_raw."/".$datei[$i], "r");
                        
    $titel_show explode("<!--title-->",fread($fp,filesize($dir_raw."/".$datei[$i])));
                        
    fclose($fp);
                        }
                        { 
    // author
                        
    $fp=fopen($dir_raw."/".$datei[$i], "r");
                        
    $author_show explode("<!--author-->",fread($fp,filesize($dir_raw."/".$datei[$i])));
                        
    fclose($fp);
                        }
                        { 
    // text
                        
    $fp=fopen($dir_raw."/".$datei[$i], "r");
                        
    $text_show explode("<!--text-->",fread($fp,filesize($dir_raw."/".$datei[$i])));
                        
    fclose($fp);
                        }
                    
    // date, filename START
                    
    $file_date_split explode("_"$datei[$i]);
                    
    //$file_date_split { [0]="2007" [1]="06" [2]="18" [3]="12-00" [4]="news" [5]="titeltagg.html" }
                    
    $file_date =    ltrim($file_date_split[2],"0");  // tag
                    
    $file_date .=    ".";
                    
    $file_date .=    ltrim($file_date_split[1],"0");  // monat
                    
    $file_date .=    ".";
                    
    $file_date .=    $file_date_split[0];  // jahr
                    
    $file_date .=    " r.";
                    
    // date, filename END
                    
    echo '<div style="height:15px; margin: 0px 4px;"><div style="float:left;"><b>Nr.</b> '.sprintf("%03d",
                    
    $akeys[$i]).'</div><div class="news_date" style="float:right;">'.$file_date.'</div></div>';
                    echo
    '<fieldset>';
                    if(
    trim($titel_show[1])!="") { echo '<legend align="center"><b>'.trim($titel_show[1]).'</b></legend>';}
                    if(
    trim($text_show[1])!="") { echo '<div align="justify" style=" line-height:14px;" >'.trim($text_show[1]).'</div>';}
                    if(
    trim($author_show[1])!="") { echo '<br /><br />'author_link(trim($author_show[1])); }
                    echo
    '</fieldset><br />';
                    } 
    und die files:
    PHP-Code:
    <!--title-->news title<!--title-->
    <!--
    author-->phe<!--author-->
    <!--
    text-->
    lorem ipsum...
    lorem ipsum...
    lorem ipsum...
    <!--
    text--> 

    Einen Kommentar schreiben:


  • combie
    antwortet
    sondern mir ist es so nicht so umstaendlich beim einfuegen von news
    Ganau das verstehe ich nicht!!!
    Du hast da irgendwie einen Bock im Konzept

    Aber ohne den Code zu sehen oder wenigstens einen Ablaufplan kann ich dazu wenig sagen.

    Aus meiner Sicht gibt es KEINEN Grund am Index rum zu Pfuschen..


    z.B:

    Heißen deine Dateien ja "news_035.html" usw.
    Da wäre die 35 genau die Zahl , an der ich mich orientieren würde!
    Und Was passiert, wenn einer dort aus der Mitte rausgelöscht werden MUSS, Dann hängste da wieder mit deinem Konzept
    Oder nicht?

    Einen Kommentar schreiben:


  • Ricola
    antwortet
    Original geschrieben von penizillin
    www.das-dass.de
    das! war nur ein tippfehler ;P
    dass! du dir aber eigentlich haettest schon denken koennen ;P

    Original geschrieben von penizillin
    und nicht, wie du es "schöner" findest.
    mir geht es nicht darum ob es schoener aussieht ;P
    sondern mir ist es so nicht so umstaendlich beim einfuegen von news
    die exploded werden, ich habe das ganze "nicht" als sql laufen,
    brauche ich auch nicht, denn laufen tut es spitze nur das mit der
    sortierung und und dem [0] hat hier das ganze immer verschoben,
    hab vor lauter +1 und -1 den ueberblick fast verloren und
    dies ist so nun alle mal leichter und erfordert weniger code =)

    Einen Kommentar schreiben:


  • combie
    antwortet
    sortierung bei windows und unix wurde die unterschiede machen?
    Denke schon... darum ja auch GLOB_NOSORT
    Und Überhaupt, einmal in PHP sortieren reicht doch! Weil glob() würde die Dateien, für dich, in falscher Reihenfolge liefern.

    Witzige Nebenerscheinung:
    Unter Win ist das readdir Gedöns deutlich schneller als glob()
    Unter linux ist die Situation genau umgekehrt
    Zuletzt geändert von combie; 16.07.2007, 14:45.

    Einen Kommentar schreiben:


  • penizillin
    antwortet
    weil ich gelesen hab das windows anders sortiert als ein unix system.
    www.das-dass.de
    windows ist im gegensatz zu unix nicht case sensitive.

    schließe mich combies erster antwort an: mach keinen unsinn und arbeite mit arrays so, wie sie aufgebaut sind, und nicht, wie du es "schöner" findest.

    Einen Kommentar schreiben:


  • Ricola
    antwortet
    <combie>
    soetwas aehnliches habe ich auch gerade geschrieben nur ohne dem glob(),
    die glob() ist ja echt toll =)
    kannte ich leider noch net.
    sortierung bei windows und unix wurde die unterschiede machen?
    weil ich gelesen hab das windows anders sortiert als ein unix system.
    ich teste es gerade local,
    muss erst alles anpassen und denn auf server online testen.
    ich meld mich noch wie es ausschaut =)
    danke =)
    </combie>

    <tontechniker>
    hey na =)
    bin zwar nicht blond aber ich weiss nicht worauf du deine frage beziehst
    </tontechniker>

    Einen Kommentar schreiben:


  • combie
    antwortet
    PHP-Code:
    $test glob('./*.php',GLOB_NOSORT); // <<-- Pfad und Endung anpassen
    rsort($test);                        // umdrehen
    array_unshift($test,'dummy');        // neues Element an pos 0
    unset($test[0]);                     // Element an pos 0 entfernen 
    print_r($test);                 // und Zack, da isses wie gewünscht 
    evtl hift dir dieses ja...

    Aber weiterhin, halte ich das Index Gedöns für recht Sinnfrei!
    1. Man verwendet zum durchlaufen von Arrays normalerweise foreach und dem ist der Key erstmal egal

    2. Solltest du for verwenden, kannst du problemlos vorwärts und rückwarts dadurch rennen...
    Zuletzt geändert von combie; 16.07.2007, 14:15.

    Einen Kommentar schreiben:


  • tontechniker
    antwortet
    Was willst du?

    Einen Kommentar schreiben:


  • Ricola
    antwortet
    maedls wissen es doch nicht besser *mist* ;P
    und merke ich gerade das bei der dump zwar die reichenfolge sich
    geaendert hat aber nur in form von "auf dem kopf stehend" (-.'-)
    combie gut bemerkt weil das tatsaehclich nitch mit der frage hin kommt
    weil die meine antwort zu frueh abgegeben hab x(

    Einen Kommentar schreiben:


  • combie
    antwortet
    Na na...

    Punkt1:
    In deinem Eingangspostings Anforderungen wird NICHT der $key=> $value Bezug behalten! Also hast du jetzt was anderes, als du dir zu Anfang gewünscht hast

    Punkt2:
    Das Beispiel zu arsort im Handbuch, ist etwas dull
    Weil: arsort ($fruits); dort Null Komma Null Wirkung hat !!

    Punkt3:
    Ich halte es für bedenklich assoziative und numerische Arrays "so" in einen Topf zu werfen. PHP hat da einige Fallen aufgestellt, in die man schnell mal eben Tappen kann.

    Einen Kommentar schreiben:


  • Ricola
    antwortet
    Original geschrieben von jahlives
    arsort() und Manual lesen

    Gruss

    tobi
    =D danke das hat mir arsort() geklappt =)
    keine sorge ich habe alle array functionen durchgelesen ich versuche mich an die reglen zu halten, hab nur leider die erklaerungen nicht
    alle verstanden unter anderem die von arsort()
    die hatte ich naemlich gestern abend schon versucht zu verstehen,
    dumm war nur dass ich es nicht einfach getestet habe *schaem*
    die erklarung von rsort() var besser verstaendlich deswegen hatte ich
    diese genutzt.
    nochmal thx =)

    Original geschrieben von combie
    Wieso bestehst du auf sowas...?
    Arrays haben mit 0 anzufangen,
    (^.^)
    was waere denn damit
    d = Zitrone
    a = Orange
    b = Banane
    c = Apfel
    auszug manual

    ich finde das ist das gleiche ding wie mit der "streit" um "short open taggs"
    generel sagt fast jeder benutze diese nicht, aber in wirklichkeit
    werden diese trotzdem benutzt.

    naja ist ja auch net schlimm
    jetzt funzt es ja =D

    thx bye =)

    Einen Kommentar schreiben:

Lädt...
X