Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Impaginazione sito PHP

  1. #1
    Utente di HTML.it L'avatar di Fifa79
    Registrato dal
    Sep 2009
    Messaggi
    95

    Impaginazione sito PHP

    Salute gente... Oggi avrei una "domandina" da postarvi di quelle facili facili...
    Scherzo! Facile non è nè da spiegare nè probabilmente da realizzare.
    Comunque ci provo. Allora, il mio sito ha 500 software (50 antivirus, 30 firewall, 20 utilità etc...). La struttura della navigazione è molto semplice:
    Homepage -> pagine contenenti il sommario dei software (a gruppi di dieci) -> pagina del software specifico

    In soldoni: vado in Home, clicco su "Antivirus" e mi si apre la pagina degli antivirus che mi contiene i primi dieci (per andare alle altre pagine basta cliccare su 2, 3, 4 e 5).

    Il problema è che vorrei una pagina intermedia che contenesse tutti gli antivirus e che cliccando sui nomi degli antivirus mi rimandasse alla pagina delle categorie (1, 2, 3, 4, 5).

    Es.: Home -> Antivirus (Nome 1), (Nome 2), (Nome 3), (Nome 4), (Nome 5), (Nome 6), (Nome 7), (Nome 8), (Nome 9), (Nome 10), (Nome 11), (Nome 12), (Nome 13), (Nome 14), (Nome 15), (Nome 16), (Nome 17), (Nome 18), (Nome 19), (Nome 20), (Nome 21), (Nome 22) etc...

    Quindi cliccando sui nomi degli antivirus da (Nome 1) a (Nome 10) si va alla pagina antivirus_1.php,
    cliccando sui nomi degli antivirus da (Nome 11) a (Nome 20) si va alla pagina "antivirus_2.php",
    cliccando sui nomi da (Nome 21) a (Nome 30) si va alla pagina "antivirus_3.php" e così via dicendo...

    Penso che meglio di così potrei fare solo con un disegno. Se necessario lo farò ma spero che qualcuno capisca quello che vorrei fare.

    A proposito come si inserisce un'immagine su questo forum?

    Thanks.

  2. #2
    Ci penso stanotte e domani ti rispondo...
    Bella sfida. A colpo d'occhio potrei dirti un ciclo while per tutti i prodotti e per ogni prodotto metti un ciclo for che crea 10 link per volta con diverso nome ma stesso collegamento.
    Si perde però la sequenza dei numeri. Arrivato a 10 ricomincia.
    Potresti settare una variabile $i a 1 e nel ciclo for aumentarla di 1 per ogni ciclo.
    Non so...
    Lasciamici pensare bene (in realtà sto andando a letto ) e poi ti rispondo.
    A domani!
    Ce l'ho fatta! - ItalianPixel -

  3. #3
    Utente di HTML.it L'avatar di Fifa79
    Registrato dal
    Sep 2009
    Messaggi
    95
    Mi raccomando... pensaci bene eh!?!
    E quando mi rispondi tieni conto che in php io sono una schiappa
    Eheh, io di cicli ne conosco soltanto uno e non penso sia quello giusto
    Praticamente conosco solo l'abc del php.


  4. #4
    E fu così che ce la fece!
    Ho dovuto creare un database nuovo ma il risultato si vede assai!
    Codice PHP:
    //connessione
    $nome="root";
    $psw="";
    $host="localhost";
    $database="prove";
    $connessione=mysql_connect($host,$nome,$psw);
    //controllo connessione
    if(!$connessione){
        echo 
    "Errore nella Connessione al Database.";
    }
    mysql_select_db($database,$connessione);

    //script
    $query=mysql_query("SELECT * FROM prova");
    $a=1;
    $b=10;
    while(
    $array=mysql_fetch_array($query)){
        echo 
    $array['nome'].'
    '
    ;
        
        for(
    $i=$a;$i<=$b;$i++){
            echo 
    '[url="'.$array['link'].'"]Link "'.$i.'"[/url]
    '
    ;

            
    $a++;
        }
        
    $b=$b+10;

    Ti spiego (ti ho messo anche la connessione così se non la conosci bene non fai errori).
    Estrai tutti i dati dal database. In questo caso c'erano 3 campi:ID,NOME e LINK.
    Diamo alle variabili i valori che ci serviranno come limiti per il ciclo for.
    Estraiamo uno per uno i valori della query con il ciclo while, in questo caso estraiamo il nome ($array['nome']) e andiamo a capo.
    Qui creiamo un secondo ciclo che ha come parametri $i uguale alla $a (è come dire che inizia da 1 in questo caso), vale finché è minore o uguale alla variabile $b (che è dieci) e per ultimo incrementiamo il valore della variabile $i che ci serve per il nostro ciclo.
    La parte scritta con for, per intenderci, viene letta solo una volta e quello che c'è tra le sue parentesi graffe viene ripetuto tante volte quante descritte all'interno delle tonde del ciclo for();
    Comunque scriviamo il nostro link, dandogli il link di quel ciclo while (bada, il ciclo for non estrae, in questo caso, i valori dal database, ma crea dei link con lo stesso collegamento per tot volte, incrementando solo in numero del link).
    Alla fine del ciclo for aumentiamo la variabile $a di 1.
    Chiudendo il ciclo for rimane aperto ancora quello while, che usiamo per dire alla variabile $b che il ciclo è finito e che deve aumentarsi di 10.
    Poi chiudiamo tutto e lui ricomincia finché ci sono record nel database.
    La cosa importante è l'incremento delle variabili a e b.
    Perché lo abbiamo fatto così? Perché la variabile a è il numero dal quale il ciclo for inizia, quindi se vuoi i numeri sequenziali, a non dovrà mai essere uguale, per questo lo incrementiamo alla fine di ogni ciclo for con $a++;
    E b? perché lo incrementiamo di 10 e fuori dal ciclo for?
    Beh, perché è il nostro tetto massimo nel ciclo for. Difatti inizia da 10. Se mettessi 1 ci sarebbe il primo link con un valore solo e dal secondo ce ne sarebbero 10, poiché noi aggiungiamo 10 al valore già esistente di b ($b=$b+10; ) ma se b all'inizio fosse uno sarebbe come scrivere $b=1+10.
    Dal secondo ciclo b varrebbe 11 e alla fine del ciclo while gli aggiungeremmo altri 10 e da li diventerebbe tutto regolare, ma non all'inizio.

    Se fai delle prove e cambi i valori iniziali di a e b, vedrai la differenza.
    Fallo, così capisci fino in fondo il funzionamento dello script.
    Ce l'ho fatta! - ItalianPixel -

  5. #5
    Utente di HTML.it L'avatar di Fifa79
    Registrato dal
    Sep 2009
    Messaggi
    95
    Cavoli... non ci hai dormito la notte! Ma vedo che però i risultati ci sono...
    Ok, adesso mi metto a fare delle prove per vedere di adattare il codice al mio script.
    Grazie mille per ora!
    Giochi Gratis Online Oh! Come vorrei essere ignorante... ehi! Un momento! Ma io lo sono per davvero!

  6. #6
    Utente di HTML.it L'avatar di Fifa79
    Registrato dal
    Sep 2009
    Messaggi
    95
    Provato e funziona ma sto impazzendo... non riesco a trovare la quadratura del cerchio

    Ti mando il codice della pagina che vorrei modificare

    Codice PHP:
    include_once("$HTTP_SERVER_VARS[DOCUMENT_ROOT]/admin/moduli/inc/parametriperaccesso.php");
    include_once(
    "$HTTP_SERVER_VARS[DOCUMENT_ROOT]/admin/moduli/inc/dateperdata.php");
    if (
    $_REQUEST["genere"]!="") {
        
    $query="SELECT * FROM genere WHERE id=".$_REQUEST["genere"];
        
    $result=mysql_query($query) or die ($query);
        
    $row=mysql_fetch_array($result);
        
    $nome_genere $row["nome"];
    }

    // RICERCA **********************************************
    //if ($cerca!="") {
        // <blocco numerazione pagine>
        // inserire tutti i campi inviati con il metodo post / get a questa form
        
    $query_string="$genere";
        
    // </blocco numerazione pagine>
        
    $query_genere="";
        if (
    $genere!="") {
            
    $query_genere=" and id_categoria=$genere";
        }
        
    $query_nome="";
        if (
    $nome!=""$query_nome=" and titolo like '%$nome%'";

        
    $query_end=" FROM notizia,genere WHERE 1".$query_nome.$query_genere." and genere.tipo='gioco' and genere.id=notizia.id_categoria";
        
    // <blocco numerazione pagine>
        
    $num=10// numero di risultati per pagina
        
    $pag=1000// numero di pagine per blocco
        
    if (!isset($start)) $start=0;
        
    // </blocco numerazione pagine>
        
    $query="SELECT notizia.id as id, notizia.titolo as titolo, genere.nome as genere, notizia.tipologia as tipologia".$query_end." ORDER BY data desc LIMIT $start,$num";//<- LIMIT $start,$end per numerazione pagine, altrimenti senza il LIMIT tira fuori tutti i risultati 

    $_result=mysql_query($query) or die("Impossibile eseguire: $query"); 
    Tieni conto che ho la tabella "notizia" che contiene le notizie e la tabella "genere" che divide le notizie in tipi. Nel sito ho infatti software e giochi (che sono i due generi).

    Questo è il codice che mi tira fuori 10 software (o giochi) per pagina.

    Ho commentato qualcosa per farti capire meglio, anche se credo che un esperto in PHP come te non abbia problemi del genere.

    Si potrebbe adattare il tuo script a questo?

    Grazie mille anticipate.

    Giochi Gratis Online Oh! Come vorrei essere ignorante... ehi! Un momento! Ma io lo sono per davvero!

  7. #7
    E quello script ti funziona? Mancano le dichiarazioni di alcune variabili, tipo $genere.
    Comunque è semplice. Dopo aver tirato fuori i dati del genere scelto, con l'id di quel genere estrai le notizie così:
    Codice PHP:
    $query=mysql_query("SELECT * FROM prova WHERE genere='$_REQUEST[genere]' "); 
    $a=1
    $b=10
    while(
    $array=mysql_fetch_array($query)){ 
        echo 
    $array['nome'].'
    '

         
        for(
    $i=$a;$i<=$b;$i++){ 
            echo 
    '[url="'.$array['link'].'"]Link "'.$i.'"[/url]
    '


            
    $a++; 
        } 
        
    $b=$b+10

    Poi te lo ordini come vuoi. Anche random se ti serve.
    Ce l'ho fatta! - ItalianPixel -

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.