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

Discussione: Problema con query

  1. #1

    Problema con query

    Ciao ragazzi, scusate.
    Il codice che ho postato di seguito mi serve ad ottenere il risultato di una query, fissando il risultato a 10 per pagina in modo da non spaccare la grafica:

    <?

    include("../config/config.php");
    if(!$stringa or $stringa=="")
    {
    echo "<font face=\"arial\" size=\"2\">E' necessario specificare la/le parola/parole da cercare
    <a href=\"javascript:history.back()\">indietro</a></font>";
    exit();
    }
    $connessione=mysql_connect($dbserver,$dbuser,$dbpa ss)
    or die ("Non riesco a connettermi con il Server $nome_server
    ");

    $database = mysql_select_db ($dbname, $connessione)
    or die ("Non riesco a selezionare il db $dbname
    ");

    /* Fine istruzioni per la connessione */

    /* Mi calcolo le variabili per la paginazione */

    $queryTot="SELECT COUNT(*) FROM $table";
    // query di tipo count()

    $ris_totale = mysql_query($queryTot);
    $arr_totale = mysql_fetch_row($ris_totale);

    $totale = $arr_totale[0];
    // qui ho il totale dei record

    $pagina = ($_GET["pag"] != "") ? (int)$_GET["pag"] : 1;
    // qui ho la pagina corrente

    $pageSize = 10;
    // quanti records per pagina?

    $begin = ($pagina-1)*$pageSize;
    // da che record iniziare a prendere i valori

    $countPages=ceil($totale/$pageSize);
    // quante pagine?


    $query="SELECT id, titolo, data, DATE_FORMAT(data, '%d.%m.%Y') as data2 FROM $table LIMIT $begin, $pageSize ";
    $risultato=mysql_query($query);

    echo "
    1. \n";
      // creo un elenco numerato per ogni record

      while ($riga = mysql_fetch_assoc($risultato)) {
      $id = $riga["id"];
      echo "
    2. <a href=\"../leggi.php?id_leggi=$id\">".nl2br($riga[titolo])."</a>
      $riga[data2]\n";
      }
      // ciclo sui risultati

      echo "
    ";
    // chiudo l'elenco numerato


    if ($totale > $pageSize && $countPages > $pagina) {
    echo "Pagina successiva --&gt;";
    }
    // se ci fossero altre pagine, vado avanti

    if ($pagina > 1) {
    echo "

    &lt;--- Pagina precedente";
    }
    // Se ci fossero pagine precedenti, vado indietro



    mysql_close($connessione);
    // chiudo la connessione


    ?>


    A parte il normale funzionamento, il risultato mi da in uscita ciò che viene chiesto ad un motore di ricerca e quindi la mia esigenza è questa:
    dovrei poter ordinare il risultato in maniera ascendente e discendente... ordinato per data
    Chi può aiutarmi? Grazie

    P.S. Tra l'altro il codice originale non lo trovo più e non riesco a raccapezzarmi con le modifiche che ho effettuato.
    "La verità sarà sempre una bugia."

  2. #2
    codice:
    $query = "SELECT id, titolo, DATE_FORMAT(data, '%d.%m.%Y') as data2
              FROM $table 
              ORDER by data (ASC | DESC)  // quello che ti serve
              LIMIT $begin, $pageSize ";
    non ti serve estrarre "data" se utilizzi "data2", pero' devi ordinare per "data" e non per "data2" se vuoi sia rispettato l'ordine delle date prescelto.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Ciao, grazie per la risposta.
    Ho apportato la modifica che mi hai segnalato ma in uscita ottengo

    Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /motore/motore.php on line 51

    La riga 51 sarebbe

    codice:
    while ($riga = mysql_fetch_assoc($risultato)) {
    Mi aiuteresti ancora un pò? :master:
    "La verità sarà sempre una bugia."

  4. #4
    posta la query ... chissa' che hai scritto....

    il mio era un esempio.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    So di non essere una cima...

    <?

    include("../config/config.php");
    if(!$stringa or $stringa=="")
    {
    echo "<font face=\"arial\" size=\"2\">E' necessario specificare la/le parola/parole da cercare
    <a href=\"java script:history.back()\">indietro</a></font>";
    exit();
    }
    $connessione=mysql_connect($dbserver,$db
    user,$dbpass)
    or die ("Non riesco a connettermi con il Server $nome_server
    ");

    $database = mysql_select_db ($dbname, $connessione)
    or die ("Non riesco a selezionare il db $dbname
    ");

    /* Fine istruzioni per la connessione */

    /* Mi calcolo le variabili per la paginazione */

    $queryTot="SELECT COUNT(*) FROM $table";
    // query di tipo count()

    $ris_totale = mysql_query($queryTot);
    $arr_totale = mysql_fetch_row($ris_totale);

    $totale = $arr_totale[0];
    // qui ho il totale dei record

    $pagina = ($_GET["pag"] != "") ? (int)$_GET["pag"] : 1;
    // qui ho la pagina corrente

    $pageSize = 10;
    // quanti records per pagina?

    $begin = ($pagina-1)*$pageSize;
    // da che record iniziare a prendere i valori

    $countPages=ceil($totale/$pageSize);
    // quante pagine?


    $query = "SELECT id, titolo, DATE_FORMAT(data, '%d.%m.%Y') as data2
    FROM $table
    ORDER by data (ASC | DESC) // quello che ti serve
    LIMIT $begin, $pageSize ";

    echo "
    1. \n";
      // creo un elenco numerato per ogni record

      while ($riga = mysql_fetch_assoc($risultato)) {
      $id = $riga["id"];
      echo "
    2. <a href=\"../leggi.php?id_leggi=$id\">".nl2br($riga[titolo])."</a>
      $riga[data2]\n";
      }
      // ciclo sui risultati

      echo "
    ";
    // chiudo l'elenco numerato


    if ($totale > $pageSize && $countPages > $pagina) {
    echo "Pagina successiva --&gt;";
    }
    // se ci fossero altre pagine, vado avanti

    if ($pagina > 1) {
    echo "

    &lt;--- Pagina precedente";
    }
    // Se ci fossero pagine precedenti, vado indietro



    mysql_close($connessione);
    // chiudo la connessione


    ?>
    "La verità sarà sempre una bugia."

  6. #6
    ma dai coi santissimi...

    (ASC | DESC) // quello che ti serve

    significa O uno OPPURE l'altro.....

    codice:
    query = "SELECT id, titolo, DATE_FORMAT(data, '%d.%m.%Y') as data2 
    FROM $table 
    ORDER by data DESC
    LIMIT $begin, $pageSize ";
    ASC ordinamento ascendente (da min a max),
    DESC discendente (da max a min)


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Forse non ti avevo fornito tutte le informazioni necessarie perchè ora i risultati giustamente escono in perfetto ordine ma quest'ordine devo poterlo decidere da form...
    Che condizione devo porre al codice precedente?
    ______________________________________
    Il codice del form di richesta è questo

    codice:
      <form action="motore/motore.php" method="post"> 
              <div align="center"> 
                <INPUT name="stringa" TYPE=text class="form" size="35" maxlength=255> 
                <INPUT type=submit VALUE="Cerca" class="button"> 
                <?php nl2br ?> 
                
     
                <select name="ordine" class="form"> 
                  <option value="crescente" selected>per data ascendente</option> 
                  <option value="decrescente">per data decrescente</option> 
                </select> 
              </div> 
            </FORM>
    "La verità sarà sempre una bugia."

  8. #8
    Nessuno può aiutarmi?
    "La verità sarà sempre una bugia."

  9. #9
    controlla $_POST['ordine']
    codice:
    if($_POST['ordine'] == 'decrescente' ) {
     $ord = 'DESC';
     } else {  $ord = 'ASC';   }
    
    poi nella query:
    
    query = "SELECT id, titolo, DATE_FORMAT(data, '%d.%m.%Y') as data2 
             FROM $table 
             ORDER by data $ord
             LIMIT $begin, $pageSize ";

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    GRANDE! Grazie.
    Funziona e ordina in modo perfetto.
    Unica cosa ancora 'scassata'. I risultati vengono divisi per dieci ogni pagina, solo che come sta ora il codice, ottengo SOLO dieci risultati e se clicco su 'pagina seguente' mi riporta alla condizione IF 'E' necessario specificare la/le parola/parole da cercare'
    "La verità sarà sempre una bugia."

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.