Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Rotazione casuale banner multipli

    Salve a tutti mi sono registrato da poco ma da molto tempo leggo il forum, ho un problema sto realizzando un sito e con html e css non ho problemi ma di php e programmazione non ne so proprio niente, avrei bisogno di uno script per visualizzare diversi banner con diversi collegamenti in div differenti che cambino ad ogni caricamento della pagina senza doppi o ripetizioni, allora ho scaricato da un sito uno script php che fa questo solo con le immagini ma a tempo e non a refresh di pagina, il codice dello script è il seguente:
    <?php
    // rotate images randomly but w/o dups on same page - format:
    // [img]rotate.php?i=0[/img] - rotate image #0 - use 'i=1'
    // for second, etc
    // (c) 2004 David Pankhurst - use freely, but please leave in my credit
    $images=array( // list of files to rotate - add as needed
    "bomb.gif",
    "frown.gif",
    "grim.gif",
    "smile.gif" );
    $total=count($images);
    $secondsFixed=1; // seconds to keep list the same
    $seedValue=(int)(time()/$secondsFixed);
    srand($seedValue);
    for ($i=0;$i<$total;++$i) // shuffle list 'randomly'
    {
    $r=rand(0,$total-1);
    $temp =$images[$i];
    $images[$i]=$images[$r];
    $images[$r]=$temp;
    }
    $index=(int)($_GET['i']); // image index passed in
    $i=$index%$total; // make sure index always in bounds
    $file=$images[$i];
    header("Location: $file"); // and pass file reference back
    ?>

    per utilizzarlo nella pagina poi si scrive:
    [img]rotate.php?i=0[/img]image #1
    [img]rotate.php?i=1[/img]image #2
    [img]rotate.php?i=2[/img]image #3
    in qualsiasi punto della pagina, il problema è che lo script non permette di associare un determinato link a un' immagine in particolare perchè non scrive i link a href ma solo l'immagine. Adesso vi chiedo qualcuno di voi sa come modificare questo script per ottenere gli effetti desiderati?
    Grazie in anticipo per il vostro aiuto
    Ciao

  2. #2
    Hai a disposizione un DB o cosa???

    Ad ogni modo, per creare una rotazione di banner ad ogni cambio di pagina, ti basta creare uno script PHP che richiami in ogni pagina dove vuoi visualizzare i banner.
    Se non c'è JavaScript che si attiva a scadenze regolari e/o un refresh nei tag meta, sei sicuro che i banner rimarranno visualizzati sino a che la pagina lo sarà.

    Uno script semplice per gestire un baner rotator potrebbe essere del tipo:

    Codice PHP:
    <?php
    // dichiaro l'array
    $banner = array(
    "bomb.gif"
    "frown.gif"
    "grim.gif"
    "smile.gif"
    );

    // conto quanti banner sono presenti nell'array
    // toglo 1 al totale perché la numerazione 
    // degli array parte da 0 (zero)
    $num count($banner) - 1

    // genero due numeri casuali, che indicano 
    // il valore di ogni chiave nell'array dei banners
    $key1 rand(0$num);
    $key2 rand(0$num);
    // applico la funzione di cui sopra per
    // ottenere una chiave numerica diversa dalla precedente

    while($key1 === $key2) {
        
    $key2 rand(0$num); 
    }


    $primo_banner "<img src=\"cartella/dei/banner/".$banner[$key1]."\" />";
    $secondo_banner "<img src=\"cartella/dei/banner/".$banner[$key2]."\" />"
    ?>
    Non ho testato lo script, ma dovrebbe funzionare.
    All'inizio del post ti ho chiesto se l'applicazione si poggia su un DB, questo perché in questo modo, devi sempre aggiornare l'array dei banner a mano se vuoi aggiungerne/toglierne uno.
    Se disponi di un DB puoi tranquillamente fare una query ed effettuare il fetching dei risultati direttamente in un array, mentre potresti anche creare un array al volo utilizzando un readdir od un glob su una particolare cartella.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  3. #3
    Ah... dimenticavo.
    Se vuoi associare un link ad un banner, il metodo è lo stesso ti basta modificare lo script come segue.

    Codice PHP:
    <?php
    // dichiarazione del banner
    $banner = array( 
    "banner" => array("bomb.gif""frown.gif""grim.gif""smile.gif"),
    "link" => array("http://www.sito1.it""http://www.sito2.it""http://www.sito3.it""http://www.sito4.it"),
    ); 

    /*
    Ometto il resto dello script che rimane uguale
    al precedente, e passo a scriverti il metodo
    per associare un link all'immagine selezionata casualmente
    */

    $primo_banner "
        <a href=\""
    .$banner['link'][$key1]."\">
            <img src=\"cartella/dei/banner/"
    .$banner['banner'][$key1]."\" />
        </a>
        "

    $secondo_banner "
        <a href=\""
    .$banner['link'][$key2]."\">
            <img src=\"cartella/dei/banner/"
    .$banner['banner'][$key2]."\" />
        </a>
        "

    ?>
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  4. #4
    Molte grazie per la risposta, si ho a disposizione un db ma come ho gia detto di php, programmazione, e sql ne so poco quindi per avere meno difficoltà nell' utilizzo dello script ho scelto uno script nel cuale si inseriscono manualmente i links e i nomi delle immagini, anche se dovendo gestire molti banners mi farebbe comodo usare un db. Ritornando allo script di prima se io volessi associare il link "http://www.sito1.it" all' immagine "bomb.gif"
    se ho capito bene dovrei fare così:

    <?php
    // dichiarazione del banner
    $banner = array(
    "banner" => array("bomb.gif", "frown.gif", "grim.gif", "smile.gif"),
    "link" => array("http://www.sito1.it", "http://www.sito2.it", "http://www.sito3.it", "http://www.sito4.it"),
    );

    // conto quanti banner sono presenti nell'array
    // toglo 1 al totale perché la numerazione
    // degli array parte da 0 (zero)
    $num = count($banner) - 1;

    // genero due numeri casuali, che indicano
    // il valore di ogni chiave nell'array dei banners
    $key1 = rand(0, $num);
    $key2 = rand(0, $num);
    // applico la funzione di cui sopra per
    // ottenere una chiave numerica diversa dalla precedente

    while($key1 === $key2) {
    $key2 = rand(0, $num);
    }


    $primo_banner = "
    <a href=\"http://www.sito1.it".$banner['link'][$key1]."\">
    <img src=\"bomb.gif".$banner['banner'][$key1]."\" />
    </a>
    ";
    $secondo_banner = "
    <a href=\"".$banner['link'][$key2]."\">
    <img src=\"cartella/dei/banner/".$banner['banner'][$key2]."\" />
    </a>
    ";
    ?>

    e così via per le altre immagini giusto?

    e ancora qual è il comando php che dovrei integrare nel codice html per visualizzare i banners?
    Ancora molte grazie per il tuo aiuto.
    Ciao

  5. #5
    se io volessi associare il link "http://www.sito1.it" all' immagine "bomb.gif" se ho capito bene dovrei fare così:
    Basta che rispetti le posizioni ed associerai in automatico un banner ad un link.
    Se in posizione 0 di BANNERS metti bomb.gif, ed in posizione 0 di LINK metti il sito di riferimento, quei due avranno la stessa chiave e saranno sempre associati ---- se rispetti il codice che ti ho scritto.

    e ancora qual è il comando php che dovrei integrare nel codice html per visualizzare i banners?
    ECHO.

    Codice PHP:
    echo "
    $primo_banner


    $secondo_banner
    "

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  6. #6
    Ho provato lo script ma non funziona nella pagina nel browser vedo solo il comando che ho scritto, ho messo tutti i files in una cartella lo script php l'ho compilato associando dei siti casuali alle immagini in questo modo:

    <?php
    // dichiarazione del banner
    $banner = array(
    "banner" => array("bomb.gif", "frown.gif", "grim.gif", "smile.gif"),
    "link" => array("http://www.google.com", "http://www.myspace.com", "http://www.msn.com", "http://www.smile.com"),
    );

    // conto quanti banner sono presenti nell'array
    // toglo 1 al totale perché la numerazione
    // degli array parte da 0 (zero)
    $num = count($banner) - 1;

    // genero due numeri casuali, che indicano
    // il valore di ogni chiave nell'array dei banners
    $key1 = rand(0, $num);
    $key2 = rand(0, $num);
    // applico la funzione di cui sopra per
    // ottenere una chiave numerica diversa dalla precedente

    while($key1 === $key2) {
    $key2 = rand(0, $num);
    }


    $primo_banner = "
    <a href=\"http://www.google.com".$banner['link'][$key1]."\">
    <img src=\"bomb.gif".$banner['banner'][$key1]."\" />
    </a>
    ";
    $secondo_banner = "
    <a href=\"http://www.myspace.com".$banner['link'][$key2]."\">
    <img src=\"frown.gif".$banner['banner'][$key2]."\" />
    </a>
    ";
    $terzo_banner = "
    <a href=\"http://www.msn.com".$banner['link'][$key3]."\">
    <img src=\"grim.gif".$banner['banner'][$key3]."\" />
    </a>
    ";
    $quarto_banner = "
    <a href=\"http://www.smile.com".$banner['link'][$key3]."\">
    <img src=\"smile.gif".$banner['banner'][$key3]."\" />
    </a>
    ";
    ?>

    poi nella pagina che ho chiamato home.php ho inserito questo:

    echo "
    $primo_banner


    $secondo_banner


    $terzo_banner
    ";

    ma aprendo la pagina con un browser vedo questo:

    echo " $primo_banner
    $secondo_banner
    $terzo_banner ";

    e non i banners (questa prova è stata effettuata su un server con php funzionante),
    inoltre credo che questo script, al contrario dell' originale che era valido solo per le immagini, non visualizzi tutti i banners a rotazione anche se quelli visualizzabili sono meno dei banners caricati, mi spiego meglio supponiamo che io voglia inserire 3 banners in una pagina in tre divs diversi ma avendo 4 banner disponibili come in questo caso lo script dovrebbe prendere a caso 3 dei 4 banner disponibili per volta, invece in questo caso mi sembra che i banners visualizzabili debbano essere di ugual numero ai banner disponibili, inoltre il fatto di richiamare lo script in un comando singolo echo ""; non mi permette di "staccare" gli stessi banners. Spero di aver spiegato in maniera non troppo ingarbugliata, cmq lo script che ho postato faceva tutto cio ma solo per le immagini.
    Ciao

    P.S.
    Ribadisco che i siti che ho scelto come collegamento sono puramente casuali, servono solo per testare lo script.

  7. #7
    Non so cosa hai combinato.
    Qui da me lo script funziona perfettamente!

    Ad ogni modo, se il risultato che ottieni è questo:
    ma aprendo la pagina con un browser vedo questo:
    echo " $primo_banner
    $secondo_banner
    $terzo_banner ";
    Può significare che:
    1. hai usato gli short open tag ed il php.ini non è configurato per farlo (<? ?> in luogo di <?php ?>).
    2. Il codice da te mostrato non è compreso tra i tag di apertura e chiusura del PHP.

    Posta il codice completo di home.php e per cortesia, usa il bottone PHP per scrivere codice in questo forum, così non sono costretto a ciecarmi per leggerlo.

    Ultima annotazione.
    Le variabili $terzo_banner e $quarto_banner non saranno mai visualizzate!!!!! Indovina perché????
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  8. #8
    Allora ho corretto l' errore nello script non mi ero accorto di aver assegnato key3 al terzo banner e al quarto banner, cmq il risultato non cambia, ho creato un file che si chiama "rotazione banner.php" con il seguente codice:

    Codice PHP:
     <?php 
    // dichiarazione del banner 
    $banner = array( 
    "banner" => array("bomb.gif""frown.gif""grim.gif""smile.gif"), 
    "link" => array("http://www.google.com""http://www.myspace.com""http://www.msn.com""http://www.smile.com"), 
    ); 

    // conto quanti banner sono presenti nell'array 
    // toglo 1 al totale perché la numerazione 
    // degli array parte da 0 (zero) 
    $num count($banner) - 1

    // genero due numeri casuali, che indicano 
    // il valore di ogni chiave nell'array dei banners 
    $key1 rand(0$num); 
    $key2 rand(0$num); 
    // applico la funzione di cui sopra per 
    // ottenere una chiave numerica diversa dalla precedente 

    while($key1 === $key2) { 
    $key2 rand(0$num); 



    $primo_banner 
    <a href=\"http://www.google.com"
    .$banner['link'][$key1]."\"> 
    <img src=\"bomb.gif"
    .$banner['banner'][$key1]."\" /> 
    </a> 
    "

    $secondo_banner 
    <a href=\"http://www.myspace.com"
    .$banner['link'][$key2]."\"> 
    <img src=\"frown.gif"
    .$banner['banner'][$key2]."\" /> 
    </a> 
    "

    $terzo_banner 
    <a href=\"http://www.msn.com"
    .$banner['link'][$key3]."\"> 
    <img src=\"grim.gif"
    .$banner['banner'][$key3]."\" /> 
    </a> 
    "

    $quarto_banner 
    <a href=\"http://www.smile.com"
    .$banner['link'][$key4]."\"> 
    <img src=\"smile.gif"
    .$banner['banner'][$key4]."\" /> 
    </a> 
    "

    ?>
    mentre il codice della pagina home.php è il seguente:

    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Untitled Document</title>
    </head>
    
    <body>
    
    
    echo " 
    $primo_banner 
    
     
    $secondo_banner 
    
     
    $terzo_banner 
    ";
    
    
    
    
    
    </body>
    </html>
    tutti i files comprese le immagini si trovano nella stessa cartella.

  9. #9
    ERRORE 1.
    L'errore che ti avevo detto di trovare non lo hai trovato.
    Codice PHP:
    $key1 rand(0$num); 
    $key2 rand(0$num); 
    Se non comunichi allo script che deve calcolarsi anche altri valori $key (il 3 ed 4) non riuscirai mai ad implementare altri banner.

    ERRORE 2.
    Salve a tutti mi sono registrato da poco ma da molto tempo leggo il forum
    Fossi in te, più che il forum leggerei il manuale ufficiale.
    Mi spiace essere così schietto, ma senza offese.... è come se mi chiedessi di spiegarti le equazioni di secondo livello quando non sai neanche dove sono di casa le tabelline!
    Non ho proprio voglia di passare più di qualche ora al PC a rispondere a chi mi dice che uno script funzionante non gli funziona e poi alle 1 e 20 della notte scopro il perché dopo 3/4 post!
    Tu la pagina la puoi chiamare home.php ed usarla per inserire solo codice HTML.
    Ma se vuoi inserire codice PHP, questo deve essere compreso tra i tag di apertura e chiusura.
    Questa nozione basilare sta scritta praticamente ovunque quando si parla di PHP, ma facendo un paragone anche con il JavaScript funziona cosi, anche con l'HTML, anche con i CSS.
    Prima spieghi all'interprete del linguaggio quello che sta per leggere, dove inizia e dove finisce, poi gli fai capire quello che te hai scritto, affinché lui lo possa interpretare!

    Peraltro.... il tuo codice manca anche di un'altra cosa, che cercherò di spiegarti facendoti un esempio.
    Se tu fossi l'interprete PHP, ed aprissi la pagina home.php, anche ammettendo che non ci fossero errori..... ad un certi punto dello script trovi un echo di due variabili che non si sa da dove escono fuori.
    Tu cosa faresti???
    Se hai uno script esterno che, giustamente, fa delle operazioni, non trovi sia quantomeno logico pensare di dire ad una pagina php di richiamare quel file, se vuoi che al suo interno vengano eseguite quelle operazioni???

    Detto questo, passo a scriverti il file home.php.
    Codice PHP:
    <?php
    include 'rotazione banner.php';
    ?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 

    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Untitled Document</title>
    </head>

    <body>

    <?php
    echo 
    $primo_banner 

     
    $secondo_banner 

     
    $terzo_banner 
    "
    ;
    ?>

    </body>
    </html>
    Ti saluto passandoti una guida fondamentale che ti aiuterà a capire i meccanismi del linguaggio.
    GUIDA PHP/MYSQL PRATICA.
    Se hai voglia di imparare il PHP è un ottimo punto di partenza.
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  10. #10
    Non ho capito bene come correggere l'errore 1, ma comunque lo so hai perfettamente ragione a me mancano proprio le basi di php, infatti ho comprato un libro di php, e riguardo alla programmazione dovrei ripassare quel poco che ho fatto alle scuole superiori di pseudocodifica, il problema è che il tempo è tiranno, cmq molte grazie per il tuo aiuto.
    Ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.