Visualizzazione risultati 1 fino 6 di 6

Discussione: [PHP] Frasi/numeri random ogni 4 ripetizioni

  1. #1
    Guest

    Predefinito [PHP] Frasi/numeri random ogni 4 ripetizioni

    Ciao a tutti, ho un problema un pò ambiguo e spero che si possa risolvere.
    Ho questo codice:
    Codice PHP:
    <?php
    $dir
    = "photo";
    foreach (
    glob("$dir/*.jpg") as $filename) {
    echo
    "<div class=\"button\" id=\"prova\"><img src=\"./resize.php?file=$filename\"></div>
    <script type=\"text/javascript\"> var prova = \"<img src='
    $filename' />\"; T$('prova').onclick = function(){TINY.box.show(prova,0,0,0,1)}</script>";
    }
    ?>
    In pratica lo script mi apre una determinata cartella e me ne visualizza il suo contenuto, ogni immagine me la apre tramite l'apposito tag <IMG>.
    Adesso il mio problema è questo: ho la necessità (associato a questo script) di inserire a random (e generate a caso) delle frasi o numeri tutti uguali fino a 4 ripetizioni.
    Mi spiego meglio: dato che nella cartella, che mi apre lo script, ho più immagini di conseguenza avrò più ripetizioni dell'ECHO, quello che devo fare io sarebbe (vi mostro il risultato già stampato)
    Codice HTML:
    <div id="NUMERO_1"><img src="./resize.php?file=$filename"></div>
    <script type="text/javascript">
    var NUMERO_1 = "<img src='$filename' />";
    T$('NUMERO_1').onclick = function(){TINY.box.show(NUMERO_1,0,0,0,1)}
    </script>
    dove NUMERO_1 è la parola random che dovrà cambiare ogni 4 ripetizioni dopo che si è inserito nelle rispettive righe, così nel codice successivo a quello avrò NUMERO_2 (x4) nelle rispettive righe e così via dicendo.

    Insomma, non posso avere gli stessi nomi in ID e nella variabile dello script, altrimenti non funziona.
    Spero di essermi spiegato, vi ringrazio

    Ciao.
    Ivan

  2. #2
    Guest

    Predefinito

    Ciao!

    In pratica ti basta utilizzare un contatore che ti tiene conto di quante ripetizioni stai effettuando, e che riazzeri ogni volta che arrivi a 4. Dopodichè fai un controllo su questo contatore e se è pari a 0 allora generi un nuovo id. Ti ho anche scritto una semplice funzione che dovrebbe restituire un id abbastanza univoco.

    Codice PHP:
    <?php

    // genera l'id random
    function getRandomId()
    {

    $id = "id_";

    for(
    $i = 1; $i <= 10; $i++)
    {
    $id .= rand(0, 100);
    }

    return
    md5($id);

    }

    $dir = "photo";
    // richiama glob() assegnandola ad una variabile, altrimenti viene richiamata ad ogni iterazione!
    $files = glob("$dir/*");

    // conta a quante ripetizioni si è arrivati
    $rpCount = 0;
    // conserva l'id generato
    $id = "";

    foreach (
    $files as $filename)
    {

    // termine del ciclo di ripetizione, ricomincio da capo
    if($rpCount == 4)
    {
    $rpCount = 0;
    }

    // nuovo ciclo di ripetizione, creo un nuovo id
    if($rpCount == 0)
    {
    $id = getRandomId();
    }

    // aumento il contatore
    ++$rpCount;

    echo
    "<div class=\"button\" id=\"$id\"><img src=\"./resize.php?file=$filename\"></div>
    <script type=\"text/javascript\"> var
    $id = \"<img src='$filename' />\"; T$('$id').onclick = function(){TINY.box.show($id,0,0,0,1)}</script>";

    }

    ?>
    Ultima modifica di RigheDiCodice : 21-04-2010 alle ore 00.19.04

  3. #3
    Guest

    Predefinito

    Ciao, grazie per il tuo aiuto ma non ottengo il risultato
    Guarda un pò cosa succede alla generazione dello script:
    Codice HTML:
    /* RESULT 1 */
    <div class="button" id="dcfc030c23f8a40f9bb2b2a6399ca3e9"><img src="./resize.php?file=photo/1.jpg"></div>
    <script type="text/javascript"> var dcfc030c23f8a40f9bb2b2a6399ca3e9 = "<img src='photo/1.jpg' />"; T$('dcfc030c23f8a40f9bb2b2a6399ca3e9').onclick = function(){TINY.box.show(dcfc030c23f8a40f9bb2b2a6399ca3e9,0,0,0,1)}</script>
    
    /* RESULT 2*/
    <div class="button" id="dcfc030c23f8a40f9bb2b2a6399ca3e9"><img src="./resize.php?file=photo/2.jpg"></div>
    <script type="text/javascript"> var dcfc030c23f8a40f9bb2b2a6399ca3e9 = "<img src='photo/2.jpg' />"; T$('dcfc030c23f8a40f9bb2b2a6399ca3e9').onclick = function(){TINY.box.show(dcfc030c23f8a40f9bb2b2a6399ca3e9,0,0,0,1)}</script>
    
    /* RESULT 3 */
    <div class="button" id="dcfc030c23f8a40f9bb2b2a6399ca3e9"><img src="./resize.php?file=photo/3.jpg"></div>
    <script type="text/javascript"> var dcfc030c23f8a40f9bb2b2a6399ca3e9 = "<img src='photo/3.jpg' />"; T$('dcfc030c23f8a40f9bb2b2a6399ca3e9').onclick = function(){TINY.box.show(dcfc030c23f8a40f9bb2b2a6399ca3e9,0,0,0,1)}</script> 
    In pratica tutti e 3 i risultati hanno lo stesso ID, mentre io voglio che l''ID sia uguale SOLO per ogni blocco di risultati.

    Spero mi potrai aiutare.

    Grazie
    Ciao :)

  4. #4
    Guest

    Predefinito

    Beh, ma allora ti basta semplicemente generare un nuovo id ad ogni iterazione del foreach:
    Codice PHP:
    <?php

    // genera l'id random
    function getRandomId()
    {

    $id = "id_";

    for(
    $i = 1; $i <= 10; $i++)
    {
    $id .= rand(0, 100);
    }

    return
    md5($id);

    }

    $dir = "photo";
    $files = glob("$dir/*");

    foreach (
    $files as $filename)
    {

    $id = getRandomId();

    echo
    "<div class=\"button\" id=\"$id\"><img src=\"./resize.php?file=$filename\"></div>
    <script type=\"text/javascript\"> var
    $id = \"<img src='$filename' />\"; T$('$id').onclick = function(){TINY.box.show($id,0,0,0,1)}</script>";

    }

    ?>
    Citazione Originalmente inviato da TurkoSoft Visualizza messaggio
    Adesso il mio problema è questo: ho la necessità (associato a questo script) di inserire a random (e generate a caso) delle frasi o numeri tutti uguali fino a 4 ripetizioni.
    Per "ripetizioni" io pensavo intendessi una "iterazione" del ciclo foreach.

    Spero di aver capito giusto adesso.
    Ciao =)

  5. #5
    Guest

    Predefinito

    Ciao, si perfetto adesso funziona.
    Ti chiedo scusa se nel mio post iniziale mi sono espresso male.

    Adesso avrei solo un'ultima gentilezza da chiederti, esiste una funzione simile a md5() però al posto di essere alfanumerico, vorrei solo lettere.
    Lo so sembra una richiesta assurda ma devo provare una cosa con lo script che sto creando.

    Saluti e grazie :)
    Ivan

  6. #6
    Guest

    Predefinito

    No, beh, figurati, l'importante è che ci siamo chiariti.

    Per la tua funzione "md5() solo lettere" sinceramente non so se ne esista una già pronta. Dunque l'unica soluzione che mi viene in mente è quella di creartela da te. Potresti per esempio sostituire ogni numero che trovi nella stringa con una lettera. Esempio di funzione semplicissima:
    Codice PHP:
    function md5OnlyLetters($md5_str)
    {

    static
    $numbers = array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
    static
    $letters = array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j");

    return
    str_replace($numbers, $letters, $md5_str);

    }
    Ciao!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •