Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    118

    query array non funzionante

    Ciao gente,

    la seguente query mi tira fuori tutti i risultati senza fare il filtro...

    Codice PHP:
    if(isset($_POST["invio"])){
        
    $_SESSION['regione']=$_POST["regione"];
        
    $_SESSION['struttura']=$_POST["struttura"];
    }


    $condizioni_query = array();

    if (
    $regione)
        
    $condizioni_query[] = "regione=".$_SESSION['regione']."";

    if (
    $struttura)
        
    $condizioni_query[] = "struttura=".$_SESSION['struttura']."";

    // Costruiamo la clausola WHERE solo se sono stati selezionati i campi di ricerca
    if ($condizioni_query)
        
    $clausola_where 'WHERE 'implode(' AND '$condizioni_query); 
    Codice PHP:
    $page_size 3;

    $sql "SELECT
          CEILING(count(1) / "
    .$page_size.") AS count
          FROM scheda 
    $clausola_where"

  2. #2
    Che cosa restituisce questo codice?

    Codice PHP:
    var_dump($sql);
    var_dump($condizioni_query); 

  3. #3
    stampa la query prima di eseguirla e vedi che cosa interroghi al db
    cosi poi sai dove andare a guardare

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    118
    Originariamente inviato da filippo.toso
    Che cosa restituisce questo codice?

    Codice PHP:
    var_dump($sql);
    var_dump($condizioni_query); 
    Ciao filippo,

    mi da questo


    codice:
    string(32) "SELECT * FROM scheda LIMIT 0, 3" array(0) { }

  5. #5
    Il "problema" è chiaro. $condizioni_query è un array vuoto.

  6. #6
    Come avrai visto non hai la clausola where

    Prova a modificare cosi

    Codice PHP:
    if ($regione!='')
        
    $condizioni_query[] = "regione=".$_SESSION['regione']."";

    if (
    $struttura!='')
        
    $condizioni_query[] = "struttura=".$_SESSION['struttura'].""

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    118
    Originariamente inviato da punkrazio
    Come avrai visto non hai la clausola where

    Prova a modificare cosi

    Codice PHP:
    if ($regione!='')
        
    $condizioni_query[] = "regione=".$_SESSION['regione']."";

    if (
    $struttura!='')
        
    $condizioni_query[] = "struttura=".$_SESSION['struttura'].""
    nulla.... sempre vuoto...

    ho provato a fare una cosa del genere

    Codice PHP:
    if ($_SESSION['regione'])     $condizioni_query[] = "regione=".$_SESSION['regione'].""
    ma ho questo tipo di ritorno

    Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /var/www/script/ricerca/04/search.php on line 43
    string(75) "SELECT * FROM scheda WHERE regione=lombardia AND struttura=hotel LIMIT 0, 3" array(2) { [0]=> string(17) "regione=lombardia" [1]=> string(15) "struttura=hotel" }
    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/script/ricerca/04/search.php on line 72
    Nessun risultato trovato!

  8. #8
    che succede alle righe 43 e 72??

    fa vedere un po di codice
    se no una briciola alla volta non si capisce molto

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    118
    posto tutto lo script... inutile dire che se passo i valori regolarmente, senza array funziona...

    questo è uno script di test, quello completo ha molti campi, tra cui ceckbox

    index.html
    codice:
    <form method="post" action="search.php">
    	<input type="text" id="regione" name="regione" />
    
    	<input type="text" id="struttura" name="struttura" />
    
    	<input type="submit" name="invio"/>
    </form>

    search.php
    Codice PHP:
    <?php

    session_start
    ();

    if(isset(
    $_POST["invio"])){
        
    $_SESSION['regione']=$_POST["regione"];
        
    $_SESSION['struttura']=$_POST["struttura"];
    }

    $condizioni_query = array();

    if (
    $_POST['regione'])
        
    $condizioni_query[] = "regione=".$_SESSION['regione'].""

    if (
    $_POST['struttura'])
        
    $condizioni_query[] = "struttura=".$_SESSION['struttura']."";

        
    // Costruiamo la clausola WHERE solo se sono stati selezionati i campi di ricerca
    if ($condizioni_query)
        
    $clausola_where 'WHERE 'implode(' AND '$condizioni_query);


    //SET THE ROWS FOR EVERY PAGE
    $page_size 3;
       
    //CONNECT TO MYSQL DATABASE
    $con mysql_connect("localhost""root"""
      or die(
    "<p class='error-msg'>Cannot connect to the database. ".mysql_error()."</p>");           

    //SELECT A DATABASE
    mysql_select_db("test2");

    //COMPOSE QUERY
    //FROM scheda WHERE regione='{$_SESSION['regione']}' AND struttura='{$_SESSION['struttura']}'";

    $sql "SELECT
                 CEILING(count(1) / "
    .$page_size.") AS count
                FROM scheda 
    $clausola_where";

    //EXECUTE THE QUERY
    $result mysql_query($sql$con);

    if (
    $row mysql_fetch_assoc($result))
        {
        
    $page_count $row["count"];
        }


    //CHECK IF PAGE VARIABLE IS AVAILABLE AND CALCULATE THE LIMIT
    if (isset($_GET["page"]))   
        {
        
    $page_no $_GET["page"];
        
    $limit =  ($page_no $page_size) - $page_size;
        }
    else
        {
        
    $limit =  0;
        }

    //COMPOSE QUERY
    $sql "SELECT * FROM scheda $clausola_where LIMIT ".$limit .", ".$page_size;


    var_dump($sql); 
    var_dump($condizioni_query);


              
    //EXECUTE THE QUERY
    $result mysql_query($sql$con);

    if (
    mysql_num_rows($result) == 0) { 
           echo 
    "Nessun risultato trovato!"
    } else { 
                while(
    $row mysql_fetch_array($result)) {
            
                
    // Your while loop here
                
    $regione$row['regione'];

                echo 
    "$regione";
                echo 
    "
    "
    ;

                
                }
                
                echo 
    "
    "
    ;

                
    //DISPLAY A LINK TO THE NUMBER OF PAGES
                
    for ($i 1$i $page_count 1$i++)
                    {
                    print 
    "[url='?page=".$i."']".$i."[/url]  ";
                    }
           } 
    ?>

  10. #10
    se al posto di questo -> while($row = mysql_fetch_array($result))

    metti questo -> while($row = mysql_fetch_assoc($result))

    che succede??
    perchè vedo che usi poi $row['regione'] invece che $row[0] o $row[1] etc tec

    prova un po
    e un pezzo alla volta lo si sistema

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.