Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Perdo variabile con i limiti?

    Ciao a tutti,
    stavo lavorando un po con php e mysql e devo far apparire dei record con i limiti per fare l'impaginazione.

    la logica è questa:

    un campo ricerca chiamato appunto "ricerca", dove
    Codice PHP:
    $ricerca=$_POST['ricerca']; 
    che si trova nella pagina "home.php"

    procediamo con la spampa dei record partendo dalla pagina "home.php?page=search&lim1=0&lim2=5"

    Codice PHP:
    <?
    $query
    ="SELECT * FROM articolo WHERE titolo LIKE '%$ricerca%' ORDER BY data DESC LIMIT ".$_GET['lim1'].",5";
    $risultati=mysql_query($query);
    $num=mysql_numrows($risultati);
    if (
    $num==0){ 
        echo 
    'Nessun risultato per: "'
        echo 
    $ricerca
        echo 
    '".';
    }else{
    ?>
        <div align="center">
    <? 
        $i
    =0;
            
    //ciclo di stampa
        
    while ($i<$num){    
            
    $id=mysql_result($risultati,$i,"id");
            
    $t=mysql_result($risultati,$i,"titolo");
            
    $a=mysql_result($risultati,$i,"autore");
            
    $d=mysql_result($risultati,$i,"data");
            
    $w=mysql_result($risultati,$i,"wiev");
            
    $c=mysql_result($risultati,$i,"categoria");
            
    $r=mysql_result($risultati,$i,"difficolta");
            
    $ok=mysql_result($risultati,$i,"certificato");
    ?>
            <a href="home.php?page=articolo&act=wiev&id=<? echo $id?>">
                <table width="100%" bgcolor="#e9e9e9" style="border: 1px solid #c0c0c0;" class="clickgui">
                    <tr>
                        <td align="left" width="33%" valign="middle">
                            <font size="4">
                                <? echo $t?>
                            </font>
                            

                            Visualizzazioni: <? echo $w?>
                            

                            Difficolt&agrave: <? 
                            $stella
    '[img]image/stella.png[/img]';
                            if(
    $r==0){ echo $stella; echo ": Molto facile."; }
                            else if(
    $r==1){ echo $stella,$stella; echo ": Facile."; }
                            else if(
    $r==2){ echo $stella,$stella,$stella; echo ": Medio."; }
                            else if(
    $r==3){ echo $stella,$stella,$stella,$stella; echo ": Difficile."; }
                            else if(
    $r==4){ echo $stella,$stella,$stella,$stella,$stella; echo ": Molto difficile."; }
    ?>
                        </td>
                        <td width="33%" valign="middle">
    <?
                            
    if($ok==1){
    ?>
                                [img]image/certif.png[/img]
    <?
                            
    }
    ?>
                        </td>
                        <td align="right" valign="middle" width="33%">
                            Data: <? echo $d?>
                            

                            Autore: <? echo $a?>
                            

                            Categoria: <? echo $c?>
                        </td>
                    </tr>
                </table>
            </a>
            

    <?
            $i
    ++;
        } 
    //fine ciclo di stampa
        
    if ($_GET['lim1']!=0){// se non sei in prima pagina appare il tasto pagina precedente
    ?>                                                    
            <a href="<?php print("home.php?page=search&lim1=".($_GET['lim1']-5)."&lim2=5");?>">
                [img]image/pagina-precedente.png[/img]
            </a>
    <?
        
    }// controllo se ci sono altri articoli dove nel titolo è presente $ricerca
        
    $cerca_altre="SELECT * FROM articolo WHERE titolo LIKE '%$ricerca%' LIMIT ".($_GET['lim1']+5).",5";
        
    $controllo_successivi=mysql_query($cerca_altre);
        if (
    mysql_fetch_row($controllo_successivi)){ 
    //se ce ne sono altre
    ?>
            <a href="<?php print("home.php?page=search&lim1=".($_GET['lim1']+5)."&lim2=5");?>">
                [img]image/prossima-pagina.png[/img]
            </a>        
    <?php
              
    }
    ?>
        </div>
    <?
    }
    ?>
    A me sembra corretto il codice ma ovviamente ho un problema...
    In pratica quando clicco sul link per visualizzare i record ovvero "home.php?page=search&lim1=0&lim2=5" visualizzo 5 record dove effettivamente è presente ciò che digito nel campo ricerca (e fin quì tutto ok).

    Quando premo sul tasto prossima pagina che quindi mi porterà al link "home.php?page=search&lim1=5&lim2=5" non mi fa vedere gli altri che contengono ricerca ma tutti indipendentemente dalla query "WHERE titolo LIKE $ricerca.

    Il mio pensiero è che perdo la variabile $ricerca, ma ho anche provato a farla diventare variabile si sessione, ma nessun risultato...

    Cosa può essere?

  2. #2

    Re: Perdo variabile con i limiti?

    Il mio pensiero è che perdo la variabile $ricerca, ma ho anche provato a farla diventare variabile si sessione, ma nessun risultato...

    Cosa può essere?
    Sì, le variabili $_POST valgono per un solo invio. Fai prima ad aggiungere anche la stringa da cercare alle variabili $_GET.

    Ad es. per cercare "ciao mamma":

    home.php?page=search&string=ciao+mamma&lim1=0&lim2 =5

    Le funzioni rawurlencode() e rawurldecode() gestiscono i caratteri speciali.

  3. #3
    Ah grazie mille, si ci avevo pensato a passarle in _GET, adesso ci provo e ti faccio sapere... Ah mi consigli di mettere
    $ricerca=mysql_real_escape_string(rawurlencode($_G ET['ricerca']));

    o non c'è bisogno di mysql_real_escape_string?

    e poi encode lo uso per l' inserimento e decode per la lettura?

    EDIT:
    Oh mio Dio che confusione, allora:

    ho modificato la pagina "home" in questo modo:
    Codice PHP:
    <?
    $string
    =mysql_real_escape_string($_GET['string']);
    ?>
    <form method="GET" action="home.php?page=search&string=<? echo $string?>$lim1=<?echo $lim1;?>&lim2=5">
       <input type="text" name="string" value="<? echo $string?>">
       <input type="submin" value="cerca" name="cerca">
    </form>
    <?
    if($_GET['page']=="search"){
       echo 
    "Stai cercando ".$string.".";
       include 
    'search.php';
    }
    ?>
    e la pagina "search.php":
    Codice PHP:
    <?
    $query
    ="SELECT * FROM articolo WHERE titolo LIKE '%$string%' ORDER BY data DESC LIMIT ".$_GET['lim1'].",5";
    $risultati=mysql_query($query);
    $num=mysql_numrows($risultati);
    if (
    $num==0){ 
        echo 
    'Nessun risultato per: "'
        echo 
    $string;
        echo 
    '".';
    }else{
    ?>
        <div align="center">
    <?
        $i
    =0;
        while (
    $i<$num){    
            
    $id=mysql_result($risultati,$i,"id");
            
    $t=mysql_result($risultati,$i,"titolo");
            
    $a=mysql_result($risultati,$i,"autore");
            
    $d=mysql_result($risultati,$i,"data");
            
    $w=mysql_result($risultati,$i,"wiev");
            
    $c=mysql_result($risultati,$i,"categoria");
            
    $r=mysql_result($risultati,$i,"difficolta");
            
    $ok=mysql_result($risultati,$i,"certificato");
    ?>
            <a href="home.php?page=articolo&act=wiev&id=<? echo $id?>">
                <table width="100%" bgcolor="#e9e9e9" style="border: 1px solid #c0c0c0;" class="clickgui">
                    <tr>
                        <td align="left" width="33%" valign="middle">
                            <font size="4">
                                <? echo $t?>
                            </font>
                            

                            Visualizzazioni: <? echo $w?>
                            

                            Difficolt&agrave: <? 
                            $stella
    '[img]image/stella.png[/img]';
                            if(
    $r==0){ echo $stella; echo ": Molto facile."; }
                            else if(
    $r==1){ echo $stella,$stella; echo ": Facile."; }
                            else if(
    $r==2){ echo $stella,$stella,$stella; echo ": Medio."; }
                            else if(
    $r==3){ echo $stella,$stella,$stella,$stella; echo ": Difficile."; }
                            else if(
    $r==4){ echo $stella,$stella,$stella,$stella,$stella; echo ": Molto difficile."; }
    ?>
                        </td>
                        <td width="33%" valign="middle">
    <?
                            
    if($ok==1){
    ?>
                                [img]image/certif.png[/img]
    <?
                            
    }
    ?>
                        </td>
                        <td align="right" valign="middle" width="33%">
                            Data: <? echo $d?>
                            

                            Autore: <? echo $a?>
                            

                            Categoria: <? echo $c?>
                        </td>
                    </tr>
                </table>
            </a>
            

    <?
            $i
    ++;
        }
    //LASCIA PERDERE QUÌ SOTTO
        
    if ($_GET['lim1']!=0){
    ?>                                                    
            <a href="<?php print("home.php?page=search&lim1=".($_GET['lim1']-5)."&lim2=5");?>">
                [img]image/pagina-precedente.png[/img]
            </a>
    <?
        
    }
        
    $cerca_altre="SELECT * FROM guida WHERE titolo LIKE '%$rcs%' LIMIT ".($_GET['lim1']+5).",5";
        
    $controllo_successivi=mysql_query($cerca_altre);
        if (
    mysql_fetch_row($controllo_successivi)){
    ?>
            <a href="<?php print("home.php?page=search&lim1=".($_GET['lim1']+5)."&lim2=5");?>">
                [img]image/prossima-pagina.png[/img]
            </a>        
    <?php
              
    }
    ?>
        </div>
    <?
    }
    ?>
    Così com'è alla pressione del tasto cerca non mi riporta all' indirizzo dell' "action" ovvero home.php?page=search&string=TESTO&lim1=0&lim2=5 ma mi porta in un altro link con le coordinate px del bottone che ho premuto, esempio: home.php?page=search&string=TESTO&cerca.x=10&cerca .y=10

    Perché mi da le coordinate? Oo e non i limiti?
    E un altra cosa, la pagina search.php me la include, ma mi dice sempre Nessun risultato per "".

    Cosa può essere?

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.