Visualizzazione dei risultati da 1 a 8 su 8

Discussione: da Asp a PHP

  1. #1

    da Asp a PHP

    Salve ragazzi, ho iniziato da una settimana circa a studiare PHP. Ho alcuni quesiti che vi proporrei col tempo......

    Dovrei fare il paging di un recordset (sto utilizzando la libreria MS SQL Server) e cercavo qualche proprietà o metodo per sostituire "PageSize","AbsolutePage","PageCount" (di ADO).

    Mi volete suggerire qualche documentazione da leggere?
    Quando arriva la minestra non c'è più sinistra o destra.
    In Croazia - Scambio Link con PR

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    110
    Anche io sto facendo il passaggio e mi unisco alla richiesta.
    In più ho un altro problema, ho installato php 5.0.4 sotto IIS 5 ...ho fatto tutto il da farsi ma non riesco ad interpretare le pagine php con le directory virtuali, se uso la root di IIS funziona!! (tra l'altro è il percorso che ho usato nel doc_root del php.ini)
    Ciao
    Marco

  3. #3
    mmm devi usare un limitatore per l'estrazione dei record .... se non sbaglio su accesso si usa TOP, su mysql invece si usa LIMIT (che è la sintassi SQL standard)

    guarda un'instante in giro x vedere cosa si usa

    fatto questo ... poi fai normalmente la paginazione dei risultati estratti

    PS: servono 2 valori ... la posizione iniziale e quanti valori estrarre che calcoli con facilità avendo la pagina corrente

  4. #4
    Quindi me lo devo fare da solo, non è stata implementata già qualche funzione.....

    OK

    Grazie,
    Saluti
    Quando arriva la minestra non c'è più sinistra o destra.
    In Croazia - Scambio Link con PR

  5. #5
    Visto che non sono presenti strumenti per il paging ho pensato di fare così:
    codice:
    $pagina_corrente = 1;
    $elementi_pagina = 3;
    
    $query = "
    if exists (select * from dbo.sysobjects 
    where id = object_id(N'[dbo].[paging]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    begin
    drop table [dbo].[paging]
    end
    
    CREATE TABLE [dbo].[paging] (
    	[ID] [int] NOT NULL ,
    	[user] [varchar] (50) null,
    	[testo_client] [varchar] (500) null,
    	[risposta_server] [varchar] (500) null,
    	[data] [smalldatetime] null,
    	[valutazione] [int] null,
    	[url] [nvarchar] (255) NULL 
    ) ON [PRIMARY]
    
    select count(*) as numero_elementi
    from WEB_LibroOspiti 
    
    insert into paging
    select top ".$elementi_pagina*$pagina_corrente." * 
    from WEB_LibroOspiti
    where [user] like 'f%'
    order by [user]
    
    select top $elementi_pagina * 
    from WEB_LibroOspiti 
    left join paging on 
    WEB_LibroOspiti.id = paging.id
    where WEB_LibroOspiti.[user] like 'f%' and paging.id is null
    order by WEB_LibroOspiti.[user]
    
    drop table [dbo].[paging]
    ";
    
    $result = mssql_query( $query );
    $line = mssql_fetch_row($result);
    
    $numero_elementi = $line[0];
    $pagine = round($numero_elementi / $elementi_pagina);
    
    echo "Numero elementi:$numero_elementi
    Pagine:$pagine
    Elementi per pagina:$elementi_pagina
    ";
    
    mssql_next_result($result);
    mssql_next_result($result);
    
    echo mssql_num_rows( $result );
    for ($i = 0; $i < mssql_num_rows( $result ); ++$i)
         {
             $line = mssql_fetch_row($result);
             print( "$line[0] - $line[1]
    \n");
         }
    	
    mssql_close($db);
    che dite è troppo oneroso dal punto di vista dell'elaborazione?
    forse è meglio scaricare tutto il recordset, saltare al record e da li ciclare?
    Quando arriva la minestra non c'è più sinistra o destra.
    In Croazia - Scambio Link con PR

  6. #6
    ehm ...

    guarda che fare il paging è banalissimo

    ti basta fare cosi:
    - al server di database gli dici di estrarre una specifica porzione di dati (usando TOP)
    - dato che top estra dal record 1 fino a quello che ti interessa tu ti devi spostare alla fine meno i record che devi visualizzare (puoi usare sia un ciclo for con dentro un fetch o se c'è puoi usare un seek o qualcosa del genere)
    - una volta in quella posizione inizi a stampare a video i risultati, i 5 ... 10 ... 15 quelli che devi stampare

    a questo punto, la barra con l'elenco delle pagine o con il semplice avanti e indietro e facile da fare:
    - se non ti viene passata la pagina corrente, per te, di default, è la prima
    - se ti viene passata la validi, ovvero verifichi che non sia inferiore a 1 o superiore alle pagine presenti

    per calcolarti il record di inizio è semplice ... pagina_corrente * record_per_pagina

    per sapere il numero di record TOTALI presenti che devi estrarre fai una query prima del tipo SELECT COUNT(*) FROM ......... WHERE ............

    in pratica una query come quella di estrazione ma con count al posto del where

    e poi fai la normale query per l'estrazione dei record e ti sei risolto il problema

  7. #7
    Sono d'accordo,
    quello che mi domandavo è se conviene ottenere direttamente da SQL Server il solo recordset da visualizzare (come ho fatto io) o scaricare tutto il recordset (top) contenente anche le informazioni non utili.

    ma probabilmente il problema non esiste, la faccio sempre complicata
    Quando arriva la minestra non c'è più sinistra o destra.
    In Croazia - Scambio Link con PR

  8. #8
    si ma cosi fai il doppio del lavoro

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.