• User

    Un archivio con php

    Vorrei creare un archivio che contenga alcuni articoli posizionati dal più recente al più vecchio... vorrei che questo archivio, cambi pagina superati un tot di articoli... per fare questo, con l'html, mano a mano che gli articoli aumentano, la gestione sarebbe quasi impossibile...

    Ho visto invecie moltissime pagine web create con il php che fanno automaticamente questa operazione (tipo questa -> http://it.t45ol.com/giochi-gratis/giochi-shockwave-2.php?start=0&nbl=4&order=gameID&max=82 che dopo 16 articoli cambia pagina)

    Non ho idea di come si possa creare una cosa del genere... mi potete aiutare? in giro non ho trovato nessun manuale che tratta di questo


  • User

    possibile che nessuno sappia come fare???

    Vi faccio vedere un altro esempio...

    http://www.flashgames.it/sezione.php?pageNum_sezione=4&categoria=azione

    Qui ogni 12 articoli si crea un'altra pagina (penso che sia un sistema automatico...)

    Anche la struttura della pagina -> "4&categoria=azione"... a cosa serve? qualcuno me lo potrebbe spiegare? vi prego!!!!


  • User Attivo

    ciao. questo è un piccolo esempio

    
    $obj=new Connessione($server,$database,$utente,$passwd);
    $obj->Apri();
    
    		  $sql="SELECT * FROM news";
    		  $ris =$obj->Query($sql);
    		 while( $row = mysql_fetch_array($ris))
    		 {
    		  $count=mysql_num_rows($ris);
             }
             $fp=5; // msg x pagina
             $pag=$count/$fp; // numero di pagina che viene creato
    
    if (isset($_GET['giggione']))
    	$giggione=$_GET['giggione'];
    else
    	$giggione = 0;
    			 
              $sql="select * from news order by idnews desc limit ".$giggione*$fp.",".$fp."";
    		  $risultato =$obj->Query($sql);
    		 while( $col = mysql_fetch_array($risultato))
    		 { 
                         // stampa delle news
                      }
          $obj->Chiudi();
    

  • User

    sezione.php?pageNum_sezione=4&categoria=azione

    ora ho capito come ha fatto flashgame... con il metodo get!!!

    Comunque con quello che dici tu mi dovrei collegare ad un database sql vero?


  • User Attivo

    @Leo06 said:

    sezione.php?pageNum_sezione=4&categoria=azione

    ora ho capito come ha fatto flashgame... con il metodo get!!!

    Comunque con quello che dici tu mi dovrei collegare ad un database sql vero?

    si hai bisogno di un db. scusa se sono stato poco chiaro.....


  • User

    Cercavo un modo per farlo senza db...

    Sono riuscito a risolvere con degli array... il problema adesso è quello di scambiare l'ordine degli articoli inseriti nell'array (in questo modo avrò a disposizione gli articoli dall'ultimo inserito al primo...)

    una guida in php dice che occorre fare in questo modo...

    array_reverse(nome_array,[booleano])

    io allora scrivo -> array_reverse($vettore,[true]);

    MI DA ERRORE!!!

    Qualcuno mi aiuti!!!


  • Moderatore

    ma hai messo [true] con le parentesi? 😐

    di solito l'argomento tra parentesi è opzionale 🙂

    prova a toglierlo :ciauz:


  • User

    Si mi ero sbagliato... avevo messo le parentesi

    Comunque non mi funzionava lostesso

    Allora ho visto meglio e bisognava assegnare ad un altro vettore l'array iniziale con gli indici al contrario in questo modo...

    $vettoredestinatario = array_reverse($vettore)


  • User

    Ciao metto un modo artenativo a quello di spaceconte, è quello che utilizzo io...magari può tornare utile

    <?php
    //impaginatore
    include "pager_multiselect.php";
    include "config.php"; 
    mysql_select_db&#40;"DBNAME"&#41; or die&#40;mysql_error&#40;&#41;&#41;;
    $n_result = mysql_query&#40; "SELECT * FROM sezione Order By id DESC" &#41;;
    $num_rows = mysql_num_rows&#40;$n_result&#41;;
    
    	
    		     //mi servirà; per far capire all'impaginatore dove ci troviamo
    			 $pag = $_GET&#91;page&#93;;
    			//
    			
    			//stabilisco limite dei risultati mostrati ed offset dei risultati
                $limite = "12";
                $off = "12";
    			//
    			//qui richiamo la funzine dell'impaginatore
    			getPagerData&#40;$num_rows, $limite, $pag, $off&#41;; 
    			$offset_ = $offset;
    			$pag = $page;
    			$result = mysql_query&#40; "SELECT * FROM sezione Order By id DESC LIMIT $offset_, $limite" &#41;;
    
    while &#40;$row = mysql_fetch_array&#40;$result&#41;&#41;&#123;
    //printo ciò che voglio far vedere
    echo "<h1>$row&#91;titolo&#93;</h1>";
    //puoi mettere quello che vuoi
    &#125;
    ?>
    
     <?php 
    //nome della pagina dei risultati
    $pagina_w = "paginarisultati.php";
    //
    //numero di pagine linkate da mostrare per visionarle direttamente, esempio di visualizzazione:   pagina precedente, pagine&#58; &#91;1&#93; &#91;2&#93; &#91;3&#93; &#91;4&#93; &#91;5&#93; &#91;6&#93; &#91;7&#93; &#91;8&#93; &#91;9&#93; &#91;10&#93; pagina successiva
    $pagine_mostr = 10;
    //
    //pagine da mostrare, le moltiplico se si scorre di blocco in blocco, 
    //quindi da 10 in 10. Si potrebbe sviluppare con un ciclo for, a voi l'onere! Per il momento l'ho fatto a mano, prevedendo di non avere pi&ugrave; di 50 pagine di risultati!
    if &#40;$pag > $pagine_mostr*5&#41;
    $pagine_mostr = $numPages;
    
    if &#40;$pag > $pagine_mostr*4&#41;
    $pagine_mostr = $pagine_mostr*5;
    
    if &#40;$pag > $pagine_mostr*3&#41;
    $pagine_mostr = $pagine_mostr*4;
    
    if &#40;$pag > $pagine_mostr*2&#41;
    $pagine_mostr = $pagine_mostr*3;
    
    if &#40;$pag > $pagine_mostr*1&#41;
    $pagine_mostr = $pagine_mostr*2;
    
    if &#40;$numPages<$pagine_mostr&#41;
    $pagine_mostr = $numPages;
    //
      //ecco di seguito i links per navigare i risultati!
       if &#40;$pag == 1&#41;
                            &#123;
    						$impa .= "Pagine dei risultati&#58; &#40;$numPages pagine totali per $num_rows articoli&#41; 
    
    "; 
    						&#125; else &#123;
    						$impa .= "Pagine dei risultati&#58; &#40;$numPages pagine totali per $num_rows articoli&#41; 
    
    ";
    						$impa .= "<a  href=\"$pagina_w?page=".&#40;$pag-1&#41;."\">Pagina precedente</a>";
    						&#125;
    						for &#40;$i = 1; $i <= $pagine_mostr; $i++&#41; &#123; 
    						$impa .= "  "; 
    						if &#40;$i == $page&#41; 
    						$impa .= "** - $i - **"; 
    						else &#123;
    						
    						$impa .= "<a  href=\"$pagina_w?page=".$i."\">&#91;$i&#93;</a>"; 
    						&#125;
    						&#125;
    						if &#40;$pag == $numPages&#41;&#123;
                             ; 
    						&#125;
    						else &#123;
    						
    						$impa .= "  ";
    						$impa .= "<a  href=\"$pagina_w?page=".&#40;$pagine_mostr+1&#41;."\">&#91;---&#93;</a>  <a class='linkstatico' href=\"$pagina_w?page=".&#40;$pag+1&#41;."\">Prossima pagina</a>"; 
    						&#125;
    						if &#40;$num_rows < $limite&#41; &#123;
    						$impa = "Una pagina di risultati per $num_rows articoli 
    
    ";
    						&#125;
    						if &#40;$num_rows == 0&#41; &#123;
    						$impa = "Nessun risultato 
    
    ";
    						&#125;
    						
    						print $impa;
    						//
        ?>
    

    codice su pager_multiselect.php

    <?
    //impaginatore
    function getPagerData&#40;$numHits, $limit, $page, $off&#41; &#123; 
     		global $offset,$limit,$page,$numPages,$ret,$off;
    		$numHits = &#40;int&#41; $numHits; 
     		$limit = max&#40;&#40;int&#41; $limit, $off&#41;; 
     		$page = &#40;int&#41; $page; 
     		$numPages = ceil 
     		&#40;$numHits / $limit&#41;; 
    
     		$page = max&#40;$page, 1&#41;; 
    	 	$page = min&#40;$page, $numPages&#41;; 
    
    		$offset = &#40;$page- 1&#41; * $limit; 
    		$off = $offset;
    
     		$ret = new stdClass; 
    
     		$ret->offset = $offset; 
     		$ret->limit = $limit; 
    	 	$ret->numPages = $numPages; 
     		$ret->page = $page; 
    
     	  return $ret; 
    	  
          &#125; 
    ?>
    

    ciao
    Dax