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

    motore di ricerca php mysql method _GET

    Ciao a tutti,
    stamattina avevo aperto già una discussione simile a questa e ho risolto alcune cose, poi ho inserito un nuovo messaggio ma nessuno lo vede perché si fermano alla scritta RISOLTO.

    Il problema è il seguente:

    eseguire un form in metodo GET per un motore di ricerca in php mysql

    pagina "home.php":
    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?

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ciao, non ho guardato tutto il codice ma dall'inzio ci sono diversi errori.

    1- <input type="submin"... al posto di submit
    2- nella strigna dell'action c'e' un $lim1= fuori dal php(sempre che non ci sia il $ per errore.
    3- in serach.php c'e' un mysql_numrows() che invece dovrebbe essere mysql_num_rows();

    Sistema un po gli errori e riprova

    poi se mai fai un echo della query almeno vedi se viene creata correttamente e puoi provarla a db direttamente



    x e Y solitamente escono quando si usa un input type="image"

  3. #3
    Ciao, in realtà tu hai pienamente ragione... Ma ho sbagliato io a scrivere perché non ho incollato il codice reale ma ho fatto un esempio, adesso posto il codice corretto.

    home.php
    [PHP]<?
    $string=mysql_real_escape_string($_GET['string']);
    ?>
    <form action="home.php?page=search&string=<? echo $string;?>&lim1=<?echo $lim1;?>&lim2=5" method="get">
    <table cellpadding="0" cellspacing="0">
    <tr>
    <td valign="top">
    <input type="text" name="string" id="string" value="<?echo $string;?>" style="height: 34px; width: 400px; font-size: 30px;-webkit-border-top-left-radius: 7px;-webkit-border-bottom-left-radius: 7px;-moz-border-radius-topleft: 7px;-moz-border-radius-bottomleft: 7px;border-top-left-radius: 7px;border-bottom-left-radius: 7px;" autocomplete="on">
    </td>
    <td valign="bottom">
    <input type="image" src="image/src.gif" height="40" width="40" id="cerca" autocomplete="off">
    </td>
    </tr>
    </table>
    </form>
    <?
    if($_GET['page']=="search"){
    echo "Stai cercando ".$string.".";
    include 'search.php';
    }
    ?>/PHP]

    mentre 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_num_rows($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=article&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
    ++;
        }
        if (
    $_GET['lim1']!=0){
    ?>                                                    
            <a href="<?php print("home.php?page=search&string=".$string."&lim1=".($_GET['lim1']-5)."&lim2=5");?>">
                [img]image/pagina-precedente.png[/img]
            </a>
    <?
        
    }
        
    $cerca_altre="SELECT * FROM articolo WHERE titolo LIKE '%$string%' 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&string=".$string."&lim1=".($_GET['lim1']+5)."&lim2=5");?>">
                [img]image/prossima-pagina.png[/img]
            </a>        
    <?php
              
    }
    ?>
        </div>
    <?
    }
    ?>
    Bene, quello che mi succede se digito qualcosa ad esempio "r":

    premo il tasto cerca e in teoria dovrebbe portarmi alla pagina home.php?page=search&string=r&lim1=0&lim2=5

    Invece al momento del click mi porta a home.php?string=r&x=10&y=12

    In pratica salta per prima cosa "page=search" e poi mi mette le coordinate dell' <input type="image" a seconda dove clicco.

    Devo dire però che c'è qualcosa che mi ha stranizzato, in teoria non essendoci nel link "page=search" la pagina search.php non viene inclusa. Ma a me poi mi stampa a video questa parte di codice
    Codice PHP:
    $query="SELECT * FROM articolo WHERE titolo LIKE '%".$string."%' ORDER BY data DESC LIMIT ".$_GET['lim1'].",5";
    $risultati=mysql_query($query);
    $num=mysql_num_rows($risultati);
    if (
    $num==0){ 
        echo 
    'Nessun risultato per: "'
        echo 
    $string;
        echo 
    '".';

    al che mi viene un dubbio!

    Nella mia pagina "home.php" ho uno script che funziona alla stessa maniera di questo ma non tramite campo ricerca ma per "ultime inserite" e utilizzo i nomi delle query uguali in entrambe le pagine, quindi mi sono chiesto "ma può fare conflitto?".

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.