Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Galleria Foto. Come renderla dinamica

    ciao a tutti


    Nel mio dominio ho una cartella che contiene foto che carico io dalla rete con apposito form Php.
    Ogni voltra che aggiungo una foto, la cartella oviamente aumenta di uno il suo contenuto.
    Nella pagina web che visualizza le foto, ho il segutente script javascritp: premetto che non sono sviluppatore js anche se gestisco i files dentro le pagine web, ho poca dimestichezza con la programmazione
    Il mio scopo quindi è che ogni volta dentro lo script si inseriscala foto nuova che carico io. ecco qua:

    <script type="text/javascript" language="JavaScript">

    var photos=new Array()
    var which=0

    /*Change the below variables to reference your own images. You may have as many images in the slider as you wish*/

    photos[0]="public/foto/141.jpg"
    photos[1]="foto/2.jpg"
    photos[2]="foto/3.jpg"
    photos[3]="foto/4.jpg"
    photos[4]="foto/5.jpg"

    function backward(){
    if (which>0){
    window.status=''
    which--
    document.images.photoslider.src=photos[which]
    }
    }

    function forward(){
    if (which<photos.length-1){
    which++
    document.images.photoslider.src=photos[which]
    }
    else window.status='End of gallery'
    }
    </script>

    <input onclick="backward()" value="&lt;&lt;Back" name="B2" type="button"> <input onclick="forward()" value="Next&gt;&gt;" name="B1" type="button">
    Ricomincia</div></form></td></tr></tbody></table>

    </div>

    questa è la lista dellefoto presenti. Finché rimane statica, nessun problema. Posso agire sull'html io aggiungendo ogni volta il nomedella foto.

    photos[0]="foto/1.jpg
    photos[1]="foto/2.jpg"
    photos[2]="foto/3.jpg"
    photos[3]="foto/4.jpg"
    photos[4]="foto/5.jpg"

    Esiste invece una possibilità che li in quell'elenco si aggiunga ogni volta una foto nuova, per es. la 6.jpg. E' su javascript che devo agireo su PHP? insomma,è fattibile quello che chiedo?Non riesco proprio a venirne a capo

    ogni foto con php è aggiunta sul server con questo script.

    move_uploaded_file($file_temp,$nuovo_nome);
    ecco qua

    $percorso="/foto/";
    //cartella sul server dove verrà spostata la foto

    $nuovo_nome=$percorso.$ultimo_id.".jpg";
    //nuovo nome dell'immagine

    grazie in anticipo a tutti quanti vorranno darmi una mano

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649

    Re: Galleria Foto. Come renderla dinamica

    Originariamente inviato da websky
    in quell'elenco si aggiunga ogni volta una foto nuova, per es. la 6.jpg. E' su javascript che devo agireo su PHP?
    php, sposto

  3. #3
    Ciao
    scusate, ma non avevo realizzarto che fosse php-topic
    volevo chiedere aquesto punto s epossibileun parere.
    Su quali variabili devo agire per aumentare la lista javascript delle immagine nell'array
    photos?
    grazie mille

  4. #4
    Utente bannato
    Registrato dal
    Jan 2009
    Messaggi
    152

    php for/while loop with numeric var increment.

    Non so da dove viene elaborata la variabile php $ultimo_id
    ma è quella che ci torna utile.

    Possiamo far scrivere la lista dell' Array al PHP con un loop, una ripetizione, eseguita con for
    Occorre programmare fino a quando/dove questa ripetizione deve procedere: finchè la nuova variabile introdotta, $item si mantiene < minore di $ultimo_id
    Ad ogni replica, $item si incrementa di +1 ed echo scrive la sua riga.


    Sostituisci la lista delle foto:

    photos[0]="public/foto/141.jpg"
    photos[1]="foto/2.jpg"
    photos[2]="foto/3.jpg"
    photos[3]="foto/4.jpg"
    photos[4]="foto/5.jpg"

    con questo blocchetto di
    Codice PHP:
    <?php
    $item 
    0;

    echo 
    "photos[0]=\\"public/foto/141.jpg\\"\\n";
     for (
    $item=1$item $ultimo_id$item ++){
     
    $pic  $item+1;
     echo 
    "photos[".$item."]=\\"foto/".$pic.".jpg\\";\\n";
     }
    ?>
    sempre ammesso che il valore di $ultimo_id sia già definito a quel livello; ma temo che dovremo importarlo da un' altra pagina/database.
    Prova questo medellino, salvalo sul server come file.php aprilo sul Browser e poi vai a vedere il Codice HTML che il Browser riceve
    (click di destro => HTML -o- View Page Source).
    Noterai che in base al valore assegnato a $ultimo_id il php ti scriverà l' Array; fermandosi al [7] settimo articolo, nell' esempio.
    codice:
    <html>
    <head>
    <TITLE>revised Array</TITLE>
    
    <script type="text/javascript" language="JavaScript">
    
    var photos=new Array();
    var which=0;
    
    /*Change the below variables to reference your own images. You may have as many images in the slider as you wish*/
    
    <?php
    $ultimo_id = 8;
    $item = 0;
    
    echo "photos[0]=\\"public/foto/141.jpg\\"\\n";
     for ($item=1; $item < $ultimo_id; $item ++){
     $pic  = $item+1;
     echo "photos[".$item."]=\\"foto/".$pic.".jpg\\";\\n";
     }
    ?>
    
    function backward(){
    // ...
    }
    
    function forward(){
    // ...
    }
    
    </script>
    
    </head>
    <body bgcolor="#909090">
    
    <div align="center">
    
    
    
    
    <form>
     inserisci numero: <tt><big>photos[<input 
     type="text" size="1" name="item" style="text-align: center;" onClick='this.value="";'>]</big></tt>
     
    
    
     <input value="ricava URL da Array" type="button" onClick='displayer.value=photos[item.value];'>
     
    
    
     <input value="" type="text" size="" name="displayer">
    </form>
    </div>
    
    
    
    </body>
    </html>
    Le backslash di escape possono dover essere doppie, sul server \\
    \n serve a rendere un ritorno di riga sul codice che vedrai dal browser, altrimenti php echo ti scrive su riga continua.

  5. #5
    Ciao StrayStudios

    Innanzitutto grazie

    E' quello che volevo fare,. evitando ajax (che non conosco assolutamente)

    la variabile in questione $ultimo_id è quella che contiene l'ultimo valore id della foto inserita nel db mysql
    Ecco lo script completo. (inizia se la connession al db èa buon fine)
    di upload foto sul server
    (upload.php)


    else {
    $insertSQL = "INSERT INTO foto (descrizione) VALUES ('".$_POST['descrizione']."')";
    //preparo la stringa per l'inserimento

    mysql_select_db($dbname);
    //effettuo l'inserimento sul database

    $Result1 = mysql_query($insertSQL) or die(mysql_error());
    //effettuo l'inserimento sul database

    $ultimo_id = mysql_insert_id();

    $file_temp=($_FILES['userfile']['tmp_name']);
    //file temporaneo che contiene l'immagine caricata

    $percorso="public/foto/";
    //cartella sul server dove verrà spostata la foto

    $nuovo_nome=$percorso.$ultimo_id.".jpg";
    //nuovo nome dell'immagine


    $inviato = file_exists($file_temp);
    //verifica se il file è stato caricato sul server

  6. #6
    ciao
    ho provato lo script

    mi dice
    che nella linea 51 C'è QUESTO ERRORE

    Parse error: parse error, expecting `','' or `';'' in D:\Inetpub\webs\XXXXXX.COM\gallery.php on line 51

    LINEA 50 echo "photos[0]=\\"public/foto/141.jpg\\"\\n";
    for ($item=1; $item < $ultimo_id; $item ++){

    LINEA 51 for ($item=1; $item < $ultimo_id; $item ++){
    $pic = $item+1;
    echo "photos[".$item."]=\\"foto/".$pic.".jpg\\";\\n";
    }
    ?>

    non vedo errori nella 51 quindi immagino sia nella 50?

    In ogni caso, l'ultimo_id lo posso prendere dal db mysql con una query epoi fareil ciclo?

    Giusto?
    ciao grazie!

  7. #7
    Utente bannato
    Registrato dal
    Jan 2009
    Messaggi
    152

    mysql_num_rows();

    Forse vuole il semicolon di chiusura dopo la graffa }

    };
    ?>

    All' echo della Linea 50 ho fatto scrivere un articolo invariabile a posizione [0] (ho pensato a una foto di base che forse usi in apertura di pagina).
    Se non è il caso, togli la riga e sotto parti con for ($item=0; invece che 1 (come faccio qua sotto).


    Dici giusto.
    Bisognerà ovviamente avviare la connesione al db anche sulla pagina della slide-show e poi sottoporgli una Query per estrarre l' ultimo numero progressivo che, anche in assenza o a prescindere dalla colonna AUTO_INCREMENT si potrebbe avere con la conta delle righe:

    codice:
    <?php
    $con = mysql_connect("localhost", " ", " ");
    mysql_select_db(" ");
    
    $sql = "SELECT * FROM foto";
    $result = mysql_query($sql);
    
    $ultimo_id = mysql_num_rows($result);
    $item = 0;
    
     for ($item=0; $item < $ultimo_id; $item ++){
     $pic  = $item+1;
     echo "photos[".$item."]=\\"foto/".$pic.".jpg\\";\\n";
     };
    
    mysql_close($con);
    ?>
    $sql = "SELECT * FROM foto";
    o anche solo:
    $sql = "SELECT descrizione FROM foto";


    Ovviamente le foto ci verranno elencate in ordine progressivo; se vogliamo invece avere ad es.:

    photos[0]="foto/9.jpg"
    photos[1]="foto/5.jpg"
    photos[2]="foto/6.jpg"
    photos[3]="foto/4.jpg"
    photos[4]="foto/2.jpg"

    dovremmo costruire una opzione sulla pagina di caricamento; o fare una pagina intermedia che funga da pannello di amministrazione.
    Per ora sbizzarrisciti con questo e facci sapere ...

  8. #8
    Utente bannato
    Registrato dal
    Jan 2009
    Messaggi
    152
    Originariamente inviato da websky
    non vedo errori nella 51 quindi immagino sia nella 50?
    Eh sì che un ; può volerci anche qua:

    LINEA 50 echo "photos[0]=\\"public/foto/141.jpg\\";\\n";

    nella riga dopo infatti lo avevo messo, qua non so come me lo sono mangiato; comunque, mi funziona ugualmente sul server.
    Se poi credi che i problemi possano venire dagli escape, usa l' alternanza doppi/singoli apici, e fai a meno anche della \n

    echo "photos[".$item."]='foto/".$pic.".jpg'; ";


    Non so se è tutto nella stessa pagina, form di upload e slide-show, se è così dai un altro nome alla variabile invece di $ultimo_id nel mio blocco di php per evitare interferenze con la $ultimo_id che magari serve successivamente al codice preesistente. Io ho ragionato come fossero due pagine distinte.

  9. #9
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    Codice PHP:
    <script type="text/javascript" language="JavaScript">

    var photos=new Array()
    var which=0

    /*Change the below variables to reference your own images. You may have as many images in the slider as you wish*/

    <?php
    foreach(glob('public/foto/*.jpg') as $key=>$foto)
    {
    echo 
    "photos[$key]='$foto'\n";
    }
    ?>

    function backward(){
    if (which>0){
    window.status=''
    which--
    document.images.photoslider.src=photos[which]
    }
    }

    function forward(){
    if (which<photos.length-1){
    which++
    document.images.photoslider.src=photos[which]
    }
    else window.status='End of gallery'
    }
    </script>
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  10. #10
    Ciao e g razie ad entrambi.
    Ora è risolto ecco codice

    //ultimo inserimento, foto novità

    $nesql = "SELECT id_foto, descrizione FROM (SELECT id_foto, descrizione FROM foto ORDER BY id_foto DESC) a LIMIT 1";
    $nentry = mysql_query ($nesql);

    $new = mysql_fetch_row ($nentry);

    //prima foto da mettere comeinizio galleria

    $nesql2 = "SELECT id_foto, descrizione FROM (SELECT id_foto, descrizione FROM foto ORDER BY id_foto) a LIMIT 1";
    $nentry2 = mysql_query ($nesql2);

    $new2 = mysql_fetch_row ($nentry2);

    //ciclo per creare lo scorrimento poi si aggancia ovviamente alla fiunzione JS
    $sql = "SELECT * FROM foto ORDER BY descrizione";
    $result = mysql_query ($sql);

    while ($row = mysql_fetch_row($result))
    {
    echo "photos[".$item."]=\"public/foto/".$row[0].".jpg\";";

    $item=$item+1;
    }
    }
    ?>







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 © 2024 vBulletin Solutions, Inc. All rights reserved.