1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Linkausgabe Reihenfolge !?!

Dieses Thema im Forum "PHP" wurde erstellt von klausi89, 20. September 2016.

  1. klausi89

    klausi89 Grünschnabel

    Hallo ich habe mal wieder ein kleines Problem und zwar kann ich über meinen Adminbereich links einfügen und diese werden in json dateien der Reihenfolge nach gespeichert - also 1.json 2.json 3.json usw - durch diesen Code

    Code (PHP):
    1. $t = count(glob("../links/link/{*.json}",GLOB_BRACE));
    2. $tplus = $t+1;
    3. $finfo = array('name'=> $postname, 'url'=> $posturl, 'type'=> $posttype, 'min'=> $postmin, 'time'=> $posttime, 'favorite'=> $postfav);
    4. $fjson = json_encode($finfo);
    5. $dir = '../links/link/';
    6. file_put_contents($dir.$tplus.'.json', $fjson);
    diese werden nachfolgenden Shema gespeichert -->
    1.json
    2.json
    3.json usw.

    Das funktioniert auch alles soweit und wird über diesen code ausgegeben

    Code (PHP):
    1. $load = $_GET['coin'];
    2. $idload = $_GET['id'];
    3. switch ($load) {
    4.     case 'btc':
    5.          if($idload == '0'){
    6.          echo '<center>
    7.         <ul class="button-group round even-6">      
    8.         <li><a href="/view/links/1" class="button small success">'.$btnnext.'</a></li>
    9.         </ul>
    10.         </center>
    11.         '.$adfbtc1.'
    12.         <hr />
    13.         <iframe id="fm" name="fm" src="/about.html" frameborder="0" scrolling="auto" width="1000px" height="950px"></iframe>';
    14.          } elseif($idload == $tfbtc) {
    15.          $btcgetf = file_get_contents('links/link/'.$idload.'.json');
    16.          $ibtcget = json_decode($btcgetf, true);
    17.          $getname = $ibtcget['name'];
    18.          $geturl = $ibtcget['url'];
    19.          $gettype = $ibtcget['type'];
    20.          $getmin = $ibtcget['min'];
    21.          $gettime = $ibtcget['time'];
    22.          $idnext = $idload+1;
    23.          echo '<div class="callout panel text-center"><b>'.$nametextview.'</b> '.$getname.'<b> '.$typetextview.'</b> '.$gettype.'<br /><b>'.$mintextview.'</b> '.$getmin.' <b>'.$timetextview.'</b> '.$gettime.$minutes.'</div>';
    24.          echo '<center>
    25.         <ul class="button-group round even-6">
    26.         <li><a href="'.$geturl.'" class="button small" target="_blank">'.$btnview.'</a></li>
    27.      
    28.         <li>
    29.         <form method="post" action="/reportlink" target="ventanaForm" onsubmit="window.open(\'\', \'ventanaForm\', \'\')">
    30.         <input type="hidden" name="idreported" id="idreported" value="'.$idload.'">
    31.         <input type="hidden" name="coinreported" id="coinreported" value="'.$load.'">
    32.         <input type="submit" class="button small alert" value="'.$linkreport.'">
    33.         </li>
    34.      
    35.         <li><a href="/links/link/0" class="button small success">'.$linknext.'</a></li>
    36.         </ul>
    37.         </center>
    38.         <hr />
    39.         <iframe id="fm" name="fm" src="'.$geturl.'" frameborder="0" scrolling="auto" width="1000px" height="950px"></iframe>';
    40.          } else {
    41.          $btcgetf = file_get_contents('links/link/'.$idload.'.json');
    42.          $ibtcget = json_decode($btcgetf, true);
    43.          $getname = $ibtcget['name'];
    44.          $geturl = $ibtcget['url'];
    45.          $gettype = $ibtcget['type'];
    46.          $getmin = $ibtcget['min'];
    47.          $gettime = $ibtcget['time'];
    48.          $idnext = $idload+1;
    49.          echo '<div class="callout panel text-center"><b>'.$nametextview.'</b> '.$getname.'<b> '.$typetextview.'</b> '.$gettype.'<br /><b>'.$mintextview.'</b> '.$getmin.' <b>'.$timetextview.'</b> '.$gettime.$minutes.'</div>';
    50.          echo '<center>
    51.         <ul class="button-group round even-6">
    52.         <li><a href="'.$geturl.'" class="button small" target="_blank">'.$btnview.'</a></li>
    53.      
    54.         <li>
    55.         <form method="post" action="/reportlink" target="ventanaForm" onsubmit="window.open(\'\', \'ventanaForm\', \'\')">
    56.         <input type="hidden" name="idreported" id="idreported" value="'.$idload.'">
    57.         <input type="hidden" name="coinreported" id="coinreported" value="'.$load.'">
    58.         <input type="submit" class="button small alert" value="'.$linkreport.'">
    59.         </li>
    60.      
    61.         <li><a href="/view/link/'.$idnext.'" class="button small success">'.$linknext.'</a></li>
    62.         </ul>
    63.         </center>
    64.         <hr />
    65.         <iframe id="fm" name="fm" src="'.$geturl.'" frameborder="0" scrolling="auto" width="1000px" height="950px"></iframe>';
    66.          }
    So nun zu meinem Problem dadurch das die Dateien durchnummeriert werden und ich eine lösche kommt es zum Fehler
    bsp. 1.json
    3.json

    gibt es eine Möglichkeit das die Dateien nicht nach Nummerierung aufgerufen werden sondern einfach nur die nächste egal welche nummer die nächste Datei hat

    ich bin mir nicht ganz sicher aber denke das das durch dieses generiert wird
    Code (PHP):
    1.  $idnext = $idload+1;
    wäre nett das sich das jemand mal angucken könnte und vielleicht eine Lösung dafür hat oder eventuell eine Idee wie man das anders lösen könnte.

    Also quasi soll das script am besten folgendes machen - bei aufruf kommt sowieso als erstes die about.html mit einem klick auch den nextbutton - kommt datei 1.json - nächster klick 2.json - nächster 3.json - lösche ich z.bsp. datei 2.json - kommt er damit nicht mehr zurecht - also sollte er am besten aufrufen

    about.html - nächste.json -> nächste.json -> nächste usw. wenn dann das ende der json dateien im ordner erreicht ist -> wieder zu about.html

    Vielleicht hat jemand ne Idee wie man das umschreiben könnte -> über Hilfe wäre ich sehr dankbar

    angeblich wäre das mit foreach möglich....nur wie ?

    Danke schon mal
    Lg
     
    Zuletzt bearbeitet: 20. September 2016
  2. Yaslaw

    Yaslaw n/a Moderator

    Alle Dateinamen in ein Array einlesen. Der Array hat einen Index. Dann kannst du über den Index die Date aufrufen

    Code (PHP):
    1. function jsonFileFilter($fileName){
    2.     return substr_compare(fileName, "json", -4, 4);
    3. }
    4.  
    5. //Alle json-Files auslesen und mit einem neuen Index versehen
    6. $files = array_values(array_filter(scandir($dir), 'jsonFileFilter'));
    7.  
    8. //Index beginnt bei 0
    9. // Wenn also die Erste Datei die Nummer 1 hat, musst du das berücksichtigen
    10.  
    11. //Erste Datei
    12. $firstJson = $files[$idload-1];
    13. $nextJson = $files[$idload];
     
  3. klausi89

    klausi89 Grünschnabel

    Ok danke schon mal für die schnelle Antwort.......

    also datei 0 ( ist about.html) wird immer zuerst aufgerufen, die Datei liegt auch in einem anderen Ordner
    könnte ich da nicht einfach die function integrieren und $idnext einfach mit $nextjson ersetzen

    also wie genau ich das jetzt ins bestehende Script integrieren kann.
    Ach mensch ich wäre so froh wenn ich PHP auch aus dem FF könnte.

    lg
     
  4. Yaslaw

    Yaslaw n/a Moderator

    Mein Code war nur ein Beispiel. Bei deinem Code verstehe ich noch nicht ganz, wo du umgesetzt hast, was du im Text erklärst.
     
  5. klausi89

    klausi89 Grünschnabel

    Ok trotzdem Danke...habe das kurzer hand nun komplett anders gelöst ;)
     
Die Seite wird geladen...