Pagina 1 di 6 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 60
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    86

    LIMIT, Problema con una query

    Salve a tutti ho un problema con una query...

    ho creato un pannello di visualizzazione di un database mysql con varie funzioni alle quali ho aggiunto un semplice form nel quale scegliere il min e max delle righe da visualizzare;

    il problema è che aggiungendo LIMIT alle mie query ottengo un errore che nn capisco a cosa sia dovuto..

    vi posto il codice:

    Codice PHP:
    <?php

    // Setto le variabili per la connessione
    $db_username 'miousername';
    $db_password 'miapassword';
    $db_host 'localhost';

    // Mi connetto all'host e poi al database (db_foto) che devo interrogare
    $link mysql_connect("$db_host""$db_username""$db_password") or die("Errore connessione: "mysql_error());
    mysql_select_db('my_database') or die("Errore apertura database: " mysql_error());

    //recupero i valori dal form per la visualizzazione
    $max=$_POST['max'];
    $min=$_POST['min'];

    // Se il Form è stato inviato faccio la query con ORDER BY scegliendo le colonne da leggere, la inserico in una variabile e la passo con la seconda riga alla funziome mysql_query
    if ($_POST['ordina']) {

    $colonna_ord=$_POST['campotabella'];
    $tipo_ord=$_POST['ordinamento'];

    $strsql "SELECT ID,NOME,COGNOME,EMAIL,USERID,PASSWORD,REGOLAMENTO,PREFERITO,CONTINUA,DATAISC FROM utenti_dati_personali ORDER BY $colonna_ord $tipo_ord LIMIT $min,$max";
    $rs = @mysql_query("$strsql",$link) or die("Errore query database: " mysql_error());

    require (
    'body.php');
    }


    //Se non si proviene dal form ordina vuol dire che accedo alla pagina la prima volta;
    //Faccio la Query scegliendo le colonne da leggere, la inserico in una variabile e la passo con la seconda riga alla funziome mysql_query
    else {


    $strsql "SELECT ID,NOME,COGNOME,EMAIL,USERID,PASSWORD,REGOLAMENTO,PREFERITO,CONTINUA,DATAISC FROM utenti_dati_personali LIMIT $min,$max ";
    $rs = @mysql_query("$strsql",$link) or die("Errore query database: " mysql_error());

    require (
    'body.php');
    }

    ?>
    il form è molto semplice:

    codice HTML:
    <form action="visualizza.php" method="POST">
    <div align="center">
    <input type="submit" name="Mostra" value="Mostra: ">
    <input name="max" type="text" id="max" size="5" value="<?php echo $_POST['max']; ?>">
     righe a partire da <input name="min" type="text" id="min" size="5" value="<?php echo $_POST['max']; ?>">
    </div>
    </form>
    l'errore è la riga con la query:

    Codice PHP:
    ID,NOME,COGNOME,EMAIL,USERID,PASSWORD,REGOLAMENTO,PREFERITO,CONTINUA,DATAISC FROM utenti_dati_personali LIMIT $min,$max "; 
    se tolgo

    Codice PHP:
    LIMIT $min,$max 
    tutto torna a posto..

    Qualche idea?

  2. #2
    se come dici ...la seconda query avviene quando la richiesta non proviene da form .... allora cosa potrebbe esserci dentro $min, $max ????

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    86
    Cavolo sono davvero fuso... sarà il carico di lavoro di sti giorni..

    cmq ho modificato in questo modo:

    Codice PHP:
    <?php

    // Setto le variabili per la connessione
    $db_username 'userid';
    $db_password 'password';
    $db_host 'localhost';

    // Mi connetto all'host e poi al database (db_foto) che devo interrogare
    $link mysql_connect("$db_host""$db_username""$db_password") or die("Errore connessione: "mysql_error());
    mysql_select_db('my_DB') or die("Errore apertura database: " mysql_error());

    $max=$_POST['max'];
    $min=$_POST['min'];

    // Se il Form è stato inviato faccio la query con ORDER BY scegliendo le colonne da leggere, la inserico in una variabile e la passo con la seconda riga alla funziome mysql_query
    if ($_POST['ordina']) {

          
    $colonna_ord=$_POST['campotabella'];
          
    $tipo_ord=$_POST['ordinamento'];
          
    $strsql "SELECT ID,NOME,COGNOME,EMAIL,USERID,PASSWORD,REGOLAMENTO,PREFERITO,CONTINUA,DATAISC FROM utenti_dati_personali ORDER BY $colonna_ord $tipo_ord";
          
    $rs = @mysql_query("$strsql",$link) or die("Errore query database: " mysql_error());

          require (
    'body.php');
          }



    //Se non si proviene dal form ordina vuol dire che accedo alla pagina la prima volta;
    //Faccio la Query scegliendo le colonne da leggere, la inserico in una variabile e la passo con la seconda riga alla funziome mysql_query
    else {

    if (
    $_POST['Mostra']) {

          
    $strsql "SELECT ID,NOME,COGNOME,EMAIL,USERID,PASSWORD,REGOLAMENTO,PREFERITO,CONTINUA,DATAISC FROM utenti_dati_personali LIMIT $min,$max";
          
    $rs = @mysql_query("$strsql",$link) or die("Errore query database: " mysql_error());

          require (
    'body.php');
          }

          else {
          
    $strsql "SELECT ID,NOME,COGNOME,EMAIL,USERID,PASSWORD,REGOLAMENTO,PREFERITO,CONTINUA,DATAISC FROM utenti_dati_personali";
          
    $rs = @mysql_query("$strsql",$link) or die("Errore query database: " mysql_error());

          require (
    'body.php');
          }
    }


    ?>
    a questo punto come si vede dal codice funziona limit che limita i records mostrati a video, il problema ora è che se faccio successivamente un order, così come è ora, la query mi riordina TUTTI i records e non solo quelli visualizzati in precedenza con il LIMIT..

    hai qualche consiglio su come potrei ordinare solo i records visualizzati dopo il limit?

    il problema è che i valori per ORDER e LIMIT sono passati da due form differenti, quindi o clicco su ordina e passo le variabili per l'ordinamento dei records o clicco su Mostra e passo le variabili per il LIMIT..

    Non c'è un modo di far agire l'order solo sui records visualizzati con l'ultima operazione fatta?

    spero di essermi spiegato...

  4. #4
    Utente di HTML.it L'avatar di echoweb
    Registrato dal
    Sep 2008
    Messaggi
    419
    prova a fare un echo delle variabili $min e $max, così capisci se sono inizializzare oppure no...

    EDIT: sono arrivato tardi, hai già risolto

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    86
    qualche idea di come far agire ORDER solo sui record visualizzati con il LIMIT?

    una cosa tipo:

    clicco su "MOSTRA" il primo form passa le due variabili min e max e la query con il LIMIT mi mostra 5 righe soltanto;

    ora a video ho le 5 righe che però voglio ordinare;

    a questo punto se clicco su ORDINA, un ALTRO form passa le variabili necessarie per la query ma dovrei anche trovare un modo per poter recuperare anche le variabili inviate in precedenza con l'altro form (quello del LIMIT)..

    così facendo potrei teoricamente far agire ORDER BY solo nell'intervallo di records visualizzato..

    qualche idea?

  6. #6
    Originariamente inviato da robysdc
    qualche idea di come far agire ORDER solo sui record visualizzati con il LIMIT?

    una cosa tipo:

    clicco su "MOSTRA" il primo form passa le due variabili min e max e la query con il LIMIT mi mostra 5 righe soltanto;

    ora a video ho le 5 righe che però voglio ordinare;

    a questo punto se clicco su ORDINA, un ALTRO form passa le variabili necessarie per la query ma dovrei anche trovare un modo per poter recuperare anche le variabili inviate in precedenza con l'altro form (quello del LIMIT)..

    così facendo potrei teoricamente far agire ORDER BY solo nell'intervallo di records visualizzato..

    qualche idea?
    se utilizzi un paginatore per mostrare a video 10 record la prima query sara':

    limit 0, 10
    poi:
    limit 10, 10
    limit 20, 10

    in modo da "saltare i record gia' visualizzati. Devi passare in poche parole il valore espresso in limit alla query successiva.

    c'e' un esempio di script utile allo scopo tra le pillole.

    http://forum.html.it/forum/showthrea...=&pagenumber=1

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

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    86
    grazie per il link, gli darò un'occhiata sicuramente!

  8. #8
    Utente di HTML.it L'avatar di echoweb
    Registrato dal
    Sep 2008
    Messaggi
    419
    Originariamente inviato da robysdc
    a questo punto se clicco su ORDINA, un ALTRO form passa le variabili necessarie per la query ma dovrei anche trovare un modo per poter recuperare anche le variabili inviate in precedenza con l'altro form (quello del LIMIT)..
    potresti mettere il contenuto che vuoi recuperare, in un campo hidden, che ti porti dietro tramite post o get

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    86
    Ci sto provando da un pò, ma sto impazzendoci sopra..

    a sto punto posto il codice nel caso qualcuno mi indicasse la strada..

    questo è il codice PRIMA delle prove fatte con post get ec..

    ora come ora se clicco su Mostra, la query limit mi mostra correttamente solo i record chiesti
    ma quando clicco su Ordina in un altro form mi riordina tutti i records..

    sapreste indicarmi le modifiche da apportare per far si che si ordinino soltanto i records selezionati in precedenza?

    Codice PHP:
    <?php

    // Setto le variabili per la connessione
    $db_username 'username';
    $db_password 'password';
    $db_host 'localhost';

    // Mi connetto all'host e poi al database (db_foto) che devo interrogare
    $link mysql_connect("$db_host""$db_username""$db_password") or die("Errore connessione: "mysql_error());
    mysql_select_db('my_DB') or die("Errore apertura database: " mysql_error());

    $max=$_POST['max'];
    $min=$_POST['min'];


    // Se il Form è stato inviato faccio la query con ORDER BY scegliendo le colonne da leggere, la inserico in una variabile e la passo con la seconda riga alla funziome mysql_query
    if ($_POST['ordina']) {


          
    $colonna_ord=$_POST['campotabella'];
          
    $tipo_ord=$_POST['ordinamento'];
          
    $strsql "SELECT ID,NOME,COGNOME,EMAIL,USERID,PASSWORD,REGOLAMENTO,PREFERITO,CONTINUA,DATAISC FROM utenti_dati_personali ORDER BY $colonna_ord $tipo_ord LIMIT 0,10";
          
    $rs = @mysql_query("$strsql",$link) or die("Errore query database: " mysql_error());

          require (
    'body.php');
          }



    //Se non si proviene dal form ordina vuol dire che accedo alla pagina la prima volta;
    //Faccio la Query scegliendo le colonne da leggere, la inserico in una variabile e la passo con la seconda riga alla funziome mysql_query
    //Poi verifico se si è scelto di visualizzare solo determinate righe del database cliccado su "Mostra"
    else {

    if (
    $_POST['Mostra']) {

          
    $strsql "SELECT ID,NOME,COGNOME,EMAIL,USERID,PASSWORD,REGOLAMENTO,PREFERITO,CONTINUA,DATAISC FROM utenti_dati_personali LIMIT $min,$max";
          
    $rs = @mysql_query("$strsql",$link) or die("Errore query database: " mysql_error());

          require (
    'body.php');
          }

          else {
          
    $strsql "SELECT ID,NOME,COGNOME,EMAIL,USERID,PASSWORD,REGOLAMENTO,PREFERITO,CONTINUA,DATAISC FROM utenti_dati_personali LIMIT 0,10";
          
    $rs = @mysql_query("$strsql",$link) or die("Errore query database: " mysql_error());

          require (
    'body.php');
          }
    }


    ?>
    body.php
    ------------
    Codice PHP:
    <?php
    require ('top.inc');
    ?>

    <style type="text/css">
    <!--
    body {background-color: #000000;}
    .Stile3 {font-size: 12px;  color: #5500ff; }
    .Stile4 {color: #000000}
    -->

    </style>


    <form action="visualizza.php" method="POST">
    <div align="center">
    Ordina i dati della tabella in base al campo:
     
    <select name="campotabella" value="<?php echo $_POST['campotabella']; ?>">
    <option value="id" <?php if($_POST['campotabella']=='id'){echo ' selected ';}?>>ID</option> 
    <option value="nome" <?php if($_POST['campotabella']=='nome'){echo ' selected ';}?>>NOME</option>
    <option value="cognome" <?php if($_POST['campotabella']=='cognome'){echo ' selected ';}?>>COGNOME</option>
    <option value="email" <?php if($_POST['campotabella']=='email'){echo ' selected ';}?>>EMAIL</option> 
    <option value="userid"<?php if($_POST['campotabella']=='userid'){echo ' selected ';}?>>USERID</option>
    <option value="password"<?php if($_POST['campotabella']=='password'){echo ' selected ';}?>>PASSWORD</option>
    <option value="regolamento"<?php if($_POST['campotabella']=='regolamento'){echo ' selected ';}?>>REGOLAMENTO</option>
    <option value="preferito"<?php if($_POST['campotabella']=='preferito'){echo ' selected ';}?>>PREFERITO</option>
    <option value="continua"<?php if($_POST['campotabella']=='continua'){echo ' selected ';}?>>CONTINUA</option>
    <option value="dataisc"<?php if($_POST['campotabella']=='dataisc'){echo ' selected ';}?>>DATAISC</option>
    </select>
    <select name="ordinamento" value="<?php echo $_POST['ordinamento']; ?>">
    <option value="ASC"<?php if($_POST['ordinamento']=='ASC'){echo ' selected ';}?>>ASC</option>
    <option value="DESC"<?php if($_POST['ordinamento']=='DESC'){echo ' selected ';}?>>DESC</option>
    <input type="submit" name="ordina" value="Ordina">
    </div>
    </form>


    <table width="750" border="10" align="center" cellpadding="4" cellspacing="0" bordercolor="#000000" bgcolor="#CCCCCC">
      <tr>
        <td bgcolor="#d0dce0"><div align="center" class="Stile3">ID</div></td>
        <td bgcolor="#d0dce0"><div align="center" class="Stile3">NOME</div></td>
        <td bgcolor="#d0dce0"><div align="center" class="Stile3">COGNOME</div></td>
        <td bgcolor="#d0dce0"><div align="center" class="Stile3">EMAIL</div></td>
        <td bgcolor="#d0dce0"><div align="center" class="Stile3">USERID</div></td>
        <td bgcolor="#d0dce0"><div align="center" class="Stile3">PASSWORD</div></td>
        <td bgcolor="#d0dce0"><div align="center" class="Stile3">VER.</div></td>
        <td bgcolor="#d0dce0"><div align="center" class="Stile3">PREFERITO</div></td>
        <td bgcolor="#d0dce0"><div align="center" class="Stile3">CONT</div></td>
        <td bgcolor="#d0dce0"><div align="center" class="Stile3">DATAISC</div></td>
        <td bgcolor="#d0dce0"><div align="center" class="Stile3">MOD</div></td>
        <td bgcolor="#d0dce0"><div align="center" class="Stile3">CANC</div></td>
      </tr>

    <?php

    //Imposto la funzione alternate_color che mi consente di mostrare ciascuna riga con un differente colore;
    //Con global rendete due variabile globali cosi da poter vedere il colore, la parte centrale è quella che si occupa di selezionare il colore desiderato;
    function alternate_color() {
    global 
    $color_id;
    global 
    $color;
     
    $color_id++;
    if (
    $color_id == 0)
    {
    $color "#d5d5d5";
    }
    else
    {
    $color "#e5e5e5";
    }
    }


    // Ciclo while che legge ogni singola riga del database MYSQL e la stampa a video
    while ($riga mysql_fetch_array($rs)) {
    $str_id $riga['ID'];
    $str_nome $riga['NOME'];
    $str_cognome $riga['COGNOME'];
    $str_email $riga['EMAIL'];
    $str_userid $riga['USERID'];
    $str_password $riga['PASSWORD'];
    $str_regolamento $riga['REGOLAMENTO'];
    $str_preferito $riga['PREFERITO'];
    $str_continua $riga['CONTINUA'];
    $str_iscr $riga['DATAISC'];

    //richiamo la funzione alternate_color all'interno del ciclo while per poter dare ad ogni riga un differente colore
    alternate_color();

    //istruzione echo che stampa a video ogni riga del database MySQL e fa ogni riga di un differente colore grazie alla variabile $color della funzione alternate_color
    echo "<tr bgcolor=\"$color\" onmouseover=\"this.style.background='#ccffcc'\" onmouseout=\"this.style.background='$color'\">
            <td><span class=\"Stile4\">
    $str_id</span></td>
            <td><span class=\"Stile4\">
    $str_nome</span></td>
            <td><span class=\"Stile4\">
    $str_cognome</span></td>
            <td><span class=\"Stile4\">
    $str_email</span></td>
            <td><span class=\"Stile4\">
    $str_userid</span></td>
            <td><span class=\"Stile4\">
    $str_password</span></td>
            <td><span class=\"Stile4\"><div align=\"center\">
    $str_regolamento</div></span></td>
            <td><span class=\"Stile4\"><div align=\"center\">
    $str_preferito</div></span></td>
            <td><span class=\"Stile4\"><div align=\"center\">
    $str_continua</div></span></td>
            <td><span class=\"Stile4\">
    $str_iscr</span></td>
            <td><span class=\"Stile4\"><div align=\"center\"><a href=\"admin.php?row=
    $str_id&action=modifica\"><img src=\"images/b_edit.png\" width=\"16\" height=\"16\" border=\"0\" alt=\"modifica\"/></a></div></span></td>
            <td><span class=\"Stile4\"><div align=\"center\"><a href=\"admin.php?row=
    $str_id&action=cancella\"><img src=\"images/b_drop.png\" width=\"16\" height=\"16\" border=\"0\" onClick=\"return confirm('Procedere com l\'eliminazione della riga?')\" alt=\"cancella\"/></a></div></span></td>
         </tr>"
    ;
    }
    ?>
    </table>

    <?php

    $strsql2 
    "SELECT COUNT(*) as totisc FROM utenti_dati_personali";
    $rs2 = @mysql_query("$strsql2",$link) or die("Errore query database: " mysql_error());

    $riga2 mysql_fetch_array($rs2);
    $str_totale_iscritti $riga2['totisc'];
    ?>

    <table width="750" border="0" align="center" cellspacing="0" cellpadding="0">
      <tr>
        <td align="center">Il numero totale di iscritti è: <?php echo $str_totale_iscritti?></td>
      </tr>
    </table>



    <form action="visualizza.php" method="POST">
    <div align="center">
    <input type="submit" name="Mostra" value="Mostra: ">
    <input name="max" type="text" id="max" size="5" value="<?php echo $_POST['max']; ?>">
     righe a partire da <input name="min" type="text" id="min" size="5" value="<?php echo $_POST['min']; ?>">
    </div>
    </form>


    <?php

    require ('bottom.inc');
    ?>
    sò che è un pò lungo da leggere ma magari mi sto perdendo in una cavolata..
    vi ripeto che so che la parte riguardante l'order così non va.. hopostato il codice prima delle mie prove per vedere se qualcuno sa indicarmi come modificarlo..

    grazie mille a chi vorrà perderci qualche minuto..

  10. #10
    Utente di HTML.it L'avatar di echoweb
    Registrato dal
    Sep 2008
    Messaggi
    419
    ho copiato body.php e ho visto che hai due form; nel secondo, riga 125, hai le variabili min e max.

    secondo me, devi mettere tutto quanto in un unico form, in modo postare tutti i dati, altrimenti ti perdi sempre o l'ordinamento o i limiti.

    prova a commentare riga 125

    Codice PHP:
    // <form action="visualizza.php" method="POST">
    <div align="center">
    <input type="submit" name="Mostra" value="Mostra: ">
    <input name="max" type="text" id="max" size="5" value="<?php echo $_POST['max']; ?>">
    righe a partire da <input name="min" type="text" id="min" size="5" value="<?php echo $_POST['min']; ?>">
    </div>
    </form>

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.