Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Discussione: problemi con query

  1. #1

    problemi con query

    ciao

    sto incontrando questa difficoltà: praticamente ho uno script (PHP4) che visualizza delle news.
    Io vorrei però far visualizzare soltanto una news (l'ultima in base alla data di inserimento).
    Per far ciò ho aggiunto alla SELECT LIMIT1 ...però cos' facendo non me la visualizza l'ultima news dicendomi che sul database non ci sono dati. Mi date una nmano a risolvere questo arcano?
    Il codice che sto utilizzando è:

    <?php

    //connessione a mysql
    mysql_connect('localhost','pippo','pippo');
    //selezione del database
    mysql_select_db('pippo');

    //sottomissione della query (come usare mysql_query())
    $res = paging('SELECT id,titolodocumenti, estesodocumenti FROM documenti ORDER BY datains DESC LIMIT 1');
    echo "<table border='0' class='descrizione'>\n";

    /*
    verifica dei risultati: $res è un array..
    */
    if (!$res[0]) { echo "non ci sono dati";}
    else
    {
    /*sull'elemento zero si opera con un ciclo allo stesso modo
    in cui si farebbe con il risultato di mysql_query()
    */
    $i=0;


    while($dati = mysql_fetch_array($res[0]))
    {
    $i++;
    if($i==1){
    echo "<tr>";
    }

    echo "<td>".$dati['titolodocumenti']."</td>";
    echo "</tr>";
    echo "<tr>";
    echo "<td>".$dati['estesodocumenti']."</td>";
    if($i==1){
    echo "</tr>";
    $i=0;
    }


    }
    }
    /*stampa del minimenu' di link alle altre pagine
    (poteva essere stampato anche prima del ciclo)
    */
    echo "</table>";


    ?>

  2. #2

  3. #3
    Utente di HTML.it L'avatar di hcka
    Registrato dal
    Oct 2002
    Messaggi
    435
    Non so cosa faccia la funzione paging, ma se anziché paging fosse mysql_query, quell'if dovrebbe essere

    if (mysql_num_rows($res)) {
    $dati = mysql_fetch_array($res);
    #ecc
    } else {
    echo "Non ci sono news";
    }

  4. #4

    re

    ciao Filippo

    ecco il codice della funzione paging, anche se io ero propenso a toglierla del tutto in quanto in questo caso non ho necessità di fare paginazione in quanto dovrebbe apparire una sola news:



    <?php


    /**
    * Funzione per la paginazione automatica delle query, con propagazione delle querystring
    *
    *
    * @version 1.1 (11/11/2005)
    * @param string $query La query sql con cui intendiamo estrarre i nostri dati
    * @param integer $x_pag Il numero di record che vogliamo visualizzare in una singola pagina (default: 10)
    * @param integer $num_links Il numero di link alle pagine precedenti e successive da stampare nel menu' (default: 5)
    * @return array Il primo valore è il risultato della query, il secondo il menu' stampabile
    */


    function paging($query,$x_pag=4,$num_links=5)
    {

    //conteggio i record presenti
    $resource = mysql_query($query); //grazie a piero.mac per la compatibilità con mysql 5
    if(!$resource) { echo 'Si è verificato un errore con la query inserita.
    L\'errore restituito è: ', mysql_error(),''; exit; }
    $righe = mysql_num_rows($resource);
    if ($righe == 0){ return false; }
    //calcolo il numero di pagine necessarie per visualizzare i dati
    $numpages = ceil($righe/$x_pag);

    //ottengo il numero di pagina, se manca lo imposto ad 1
    $pag = isset($_GET['pag'])? $_GET['pag'] : 1;

    //imposto il primo estremo del limit
    $da = ($pag-1) * $x_pag;

    //appendo il limit alla query originaria
    $query .= " LIMIT $da,$x_pag";

    //gesisco la propagazione della query string
    $querystring = '';
    foreach($_GET as $k => $v)
    {
    if ($k != 'pag')
    {
    $querystring .= "&".$k."=".$v;
    }
    }

    //inizializzo una stringa vuota in cui appenderò l'output del menu'
    $menu = '';

    //serie di condizionali in cascata per costruire il menu'
    if($numpages <= $num_links)
    {
    for ($pagina = 1; $pagina <= $numpages; $pagina++)
    {
    if ($pagina == $pag)
    $menu .= "<span class=\"pag_selected\"> $pagina </span> ";
    else
    $menu .= "<a class=\"pag_link\" href=\"?pag={$pagina}{$querystring}\" title=\"Vai a pagina $pagina\"> $pagina </a> ";
    }
    }

    //se la pag corrente è tra le prime $num_links/2 --> stampo i primi $nun_links link
    else if($pag <= ceil($num_links/2))
    {
    for ($pagina=1; $pagina<=$num_links; $pagina++)
    {
    if ($pagina == $pag)
    $menu .= "<span class=\"pag_selected\"> $pagina </span> ";
    else
    $menu .= "<a class=\"pag_link\" href=\"?pag={$pagina}{$querystring}\" title=\"Vai a pagina $pagina\"> $pagina </a> ";
    }
    $menu .= "<a class=\"pag_link\" href=\"?pag={$numpages}{$querystring}\" title=\"Vai all'ultima pagina\"> >> </a> ";
    }

    //se la pag corrente è tra le ultime $num_links/2 --> stampo gli ultimi $nun_links link
    else if($pag > ($numpages-ceil($num_links/2)))
    {
    $menu .= "<a class=\"pag_link\" href=\"?pag=1{$querystring}\" title=\"Vai alla prima pagina\"> << </a> ";
    for ($pagina=$numpages-$num_links+1; $pagina<=$numpages; $pagina++)
    {
    if ($pagina == $pag)
    $menu .= "<span class=\"pag_selected\"> $pagina </span> ";
    else
    $menu .= "<a class=\"pag_link\" href=\"?pag={$pagina}{$querystring}\" title=\"Vai a pagina $pagina\"> $pagina </a> ";
    }
    }

    //Altrimenti la pagina corrente è una dell centrali --> stampo i $nun_links/2 link prima ed $nun_links/2 link dopo
    else
    {
    $menu .= "<a class=\"pag_link\" href=\"?pag=1{$querystring}\" title=\"Vai alla prima pagina\"> << </a> ";
    for ($pagina = $pag-ceil($num_links/2-1); $pagina <= $pag+ceil($num_links/2-1); $pagina++)
    {
    if ($pagina == $pag)
    $menu .= "<span class=\"pag_selected\"> $pagina </span> ";
    else
    $menu .= "<a class=\"pag_link\" href=\"?pag={$pagina}{$querystring}\" title=\"Vai a pagina $pagina\"> $pagina </a> ";
    }
    $menu .= "<a class=\"pag_link\" href=\"?pag={$pagina}{$querystring}\" title=\"Vai all'ultima pagina\"> >> </a> ";
    }

    //restituisco il risultato della query, e l'output del menu'
    return array(mysql_query($query),$menu);
    }


    ################################################## #################
    # esempio d'uso #
    ################################################## #################
    /*
    mysql_connect('localhost','','');
    mysql_select_db('databas');

    $res = paging('SELECT * FROM boh');

    if (!$res[0]) { echo "non ci sono dati";}
    else
    {
    while($dati = mysql_fetch_array($res[0]))
    {
    echo "
    ".$dati['campo'];
    }
    }
    echo "
    ".$res[1];

    */

    ?>

  5. #5
    Studiati il comportamento di paging(). Questa funzione restituisce il risultato di un nuova query creata a partire dalla precedente, ma aggiungendovi in coda altro (es. $query .= " LIMIT $da,$x_pag". In questo modo la query fallisce.

  6. #6

    re

    capisci filippo,...e se io invece volessi togliere tale funzione che tanto come ti accennavo in questo script non mi serve, come posso fare esattamente?

    garzie ancora

  7. #7

  8. #8

    Re

    ho appena provato come ha indicato hac
    ma mi da questo messaggio di errore:


    Parse error: parse error, unexpected '}' in /test/www/hosts/miosito.org/httpdocs/index.php on line 346

  9. #9

  10. #10

    re

    certo che no :-)))
    adesso sto ricontrollando attentamente

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.