Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    ricerca e visualizzazione stessa pagina codice e info

    ciao,
    prendendo spunto dal post di JackieEstacado http://forum.html.it/forum/showthrea...hreadid=945147

    vorrei fare alcune modifiche per visualizzare una galleria di immagini che mi permettono di filtrare le immagini sempre nella stessa pagina, per ora mediante il campo titolo (che include più parole es "tiziano ride").
    Premetto che non ne sono capace e cerco di capire e chiedo aiuto affinché queste due pagine funzionino e possano essere d'aiuto ad altri non capaci come me, ma con il desiderio di provarci e infine riuscirci grazie alle persone più esperte.

    primo passo creazione connessione al db

    config.tiz.php

    Codice PHP:
    <?
     
    // parametri del database 
    $db_host "localhost";
     
    $db_user "root"
    $db_password "disegno"
    $db_name "db"
    ?>
    file search_prova.php


    Codice PHP:
    <html>
    <head>
    </head>
    <body>
    <form method="POST" ACTION="search_prova.php" name="ricerca">
    <?

    include("config.tiz.php");

    $db mysql_connect($db_host$db_user$db_password);
    if (
    $db == FALSE)
    die (
    "Errore nella connessione. Verificare i parametri nel file config.tiz.php");
    mysql_select_db($db_name$db)
    or die (
    "Errore nella selezione del database. Verificare i parametri nel file config.tiz.php");



    //stampa della tabella della pagina di ricerca 
    print    ("<TABLE>") . 
        (
    "<tr>") . 
        (
    "<td>[B]Nome[/B]</td>") . 
        (
    "<td><INPUT type=\"text\" name=\"titolo\" VALUE=\"{$_POST[titolo]}\"></td>") . 
        (
    "</tr>"); 
    print    (
    "<tr>") . 
        (
    "<td colspan=\"2\"><input type=\"image\" name=\"ricerca\" src=\"immagini/Ricerca.jpg\" ></td>") . 
        (
    "</tr>") . 
        (
    "</TABLE>"); 
    if ((
    $_POST[ricerca_x])||($_POST[ricerca_y])) 

       include(
    'galleria_prova.php'); 


    mysql_close($db);
    ?> 
    </form>

    </body>
    </html>
    infine il file galleria_prova.php

    tengo a precisare che questo tipo di impaginazione è stato preso dal post di saibal

    http://forum.html.it/forum/showthrea...hreadid=469430

    Codice PHP:
    <?

    include("config.tiz.php");

    $db mysql_connect($db_host$db_user$db_password);
    if (
    $db == FALSE)
    die (
    "Errore nella connessione. Verificare i parametri nel file config.tiz.php");
    mysql_select_db($db_name$db)
    or die (
    "Errore nella selezione del database. Verificare i parametri nel file config.tiz.php");


    $query = @mysql_query("SELECT IDIMG, cronologia2, url_small FROM tblimg ORDER BY IDIMG");
    $num_record mysql_num_rows($query); 

    //adesso dichiaro un po' di variabili utili allo script 

    //colonne è il numero di celle per riga che dovà avere la nostra tabella 
    $colonne 4

    //calcoliamo le righe della tabella che ci dovrebbero venire in base al numero di record 
    /*se ho 6 risultati e ho scelto 3 celle per riga avrò due righe totali*/ 
    $tot_righe $num_record/$colonne

    //dichiaro tre indici che mi serviranno 
    $i_x 0
    $x_x 0
    $k_x 0

    /*questo mi serve per determinare la lunghezza delle celle della tabella. 
    questo valore deve essere variabile ovviamente in base al numero di colonne. 
    mi spiego: se ho due colonne la singola cella dovrà 
    essere lunga il 50%; se metto tre colonne 
    dovrà essere il 33% e così via*/ 
    $cell_width floor(25/$colonne); 


    //adesso scrivo il codice di inizio tabella 
    echo 
    '<table width="80%" border="0" cellspacing="1" cellpadding="3"> 
    <tr>'



    //adesso scorriamo i risultati ottenuti con un ciclo while 
            
    while($array mysql_fetch_array($query)){ 
    $IDIMG $array['IDIMG']; 
    $titolo $array['titolo']; 
    $url_small $array['url_small']; 
    //incremento gli indici perchè mi serviranno dopo 
    $i_x++; 
    $k_x++; 
    $x_x++; 

    //stampo le celle dei risultati 
    echo'<td width="$cell_width%">';
    echo 
    $titolo"
    "
    ;
    echo 
    "<img src=\"".$url_small."\">";
    echo
    '</td>'

    /*ogni volta che l'indice $i_x è uguale al numero 
    di colonne scelto vuol dire che devo chiudere una riga*/ 
    if($i_x == $colonne)
      { 
      echo
    '</tr>'
        if
        (
    $i_x == $colonne && (($x_x/$colonne) != $tot_righe))
          { 
            echo
    '<tr>';
          } 
      
    //riazzero l'indice $i_x per riniziare i calcoli fin quando mi serve 
      
    $i_x 0
      } 
    // fine $i_x == $colonne 

    //fine del ciclo 

    /*a questo punto devo vedere che tipo di tabella mi è venuta fuori. 
    in pratica devo vedere se ci sono delle celle vuote 
    da stampare oppure posso chiudere la tabella. 
    per fare questo faccio due controlli 

    se il numero di celle scelte per riga è superiore ai risultati ottenuti per riga stampo o meno le celle mancanti. 

    questo può succedere perchè magari abbiamo scelto di 
    avere 3 celle per riga ma i risultati ottenuti sono 4 
    e quindi c'è l'inizio di una seconda riga che 
    deve avere per forza tre celle... 
    un po' contorto ma dovreste aver capito*/ 

    if ($colonne <= $x_x){ 

    /*stampo le celle mancanti se la divisione dei risultati per le colonne dà il resto. 
    questo vuol dire appunto che 
    ci sono meno risultati per riga rispetto alle celle scelte*/ 
    if (($k_x%$colonne) != 0){ 

        
    $indice $k_x

    /*inizio un breve ciclo che in pratica fa questo: 
    "per ogni riga, se vedi che i risultati ottenuti 
    sono inferiori alle celle scelte con $colonne, 
    stampami delle celle vuote fino ad arrivare 
    al completamento della riga*/ 
    while (($indice%$colonne) != ){ 

    echo
    '<td>[img]immagine_vuota.gif[/img]</td>'

    //incremento il nuovo indice per ripetere l'operazione fin quando necessario 
    $indice++; 

                 } 
    //fine ciclo while 

    /*se invece la divisione non dà resto vuol dire che 
    il numero di risulati va bene in base alle celle scelte 
    (ad esempio 3 celle per riga con 6 risulati: 6/3 = 2)*/ 

      
    if(($indice%$colonne) == ){ 

    echo
    '</tr>'
             
              } 

            } 
    //fine ($k%$colonne)!= 0 

                    
    /*stessa cosa qui: il numero di risulati va bene in base 
    alle celle scelte e quindi posso chiudere la riga*/ 
    } else{ //fine if $colonne <= $x 

    echo '</tr>'
                     
                     } 

    //adesso posso finalmente chiudere la tabella 
    echo '</table>';

     



    mysql_close($db);
    ?>
    ed ora giungiamo al mio problema... non mi filtra i valori perchè?
    io continuo a sbatterci la testa e se qualcuno volesse darmi una mano... beh più che volentieri.

    un piccolo o una maggiore chiarezza.
    io vorrei inserire un campo per la ricerca fulltext e più campi per una ricerca in determinati campi.Naturalmente dovrò fare delle aggiunte e modifiche, ma in questo modo potrei filtrare i dati sempre meglio giusto?
    Grazie
    Tz

  2. #2
    c'è nessuno che possa aiutarmi?
    tz

  3. #3
    Non ti filtra i valori perchè, nella query manca la condizione WHERE titolo=$_POST['titolo']
    "...non può piovere per sempre..."

  4. #4
    ciao,
    mi sto letteralmente incartando...
    ho inserito il parametro che mi hai inviato stamane nel post, ma dal momento che ho sfruttato come visualizzazione grafica un post diverso ora non sono in grado di far funzionare il tuo script con quell'altro.
    immagino che il vero problema sia localizzato in queste dichiarazione ma non so come sistemarle. o meglio sono tre ora che continuo a modificarle.
    Grazie


    Codice PHP:
    <?

    // inizio prova
    //query di ricerca num record in tabella 

    $Richiesta = @mysql_query("SELECT titolo, cronologia2 FROM tblimg"); 

    //Determino il numero dei risultati ottenuti 
    $num_record2 = @mysql_num_rows($Richiesta);

    if (
    $num_record2 0

    // fine prova

    $query = @mysql_query("SELECT IDIMG, titolo, cronologia2, url_small FROM tblimg WHERE titolo=_POST['titolo']");
    $num_record = @mysql_num_rows($query); 
    ...
    ...
    ...

  5. #5
    Da quello che vedo:
    o scrivi WHERE titolo=$_POST['titolo']"
    oppure molto meglio, prima definisci una variabile $filtro=$_POST['titolo'], poi fai tutti i controlli sul valore accettabile in quella variabile, per esempio escludendo caratteri speciali $new_filtro=html_entities($filtro, ENT_QUOTES), e poi metti nella query WHERE titolo=$newfiltro
    "...non può piovere per sempre..."

  6. #6
    ciao proverò per ora mi restituisce come errore senza definire prima la variabile un errore di questo tipo:

    Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in C:\Programmi\Apache Software Foundation\Apache2.2\htdocs\inklink_php\it\galleri a_prova.PHP on line 15

    quindi farò come mi dici.
    grazie
    Tz

  7. #7
    ciao, ho provato come mi hai detto.

    Codice PHP:
    $filtro=$_POST['titolo'];
    $new_filtro htmlentities($filtroENT_QUOTES);
    //$new_filtro=htmlentities($filtro, ENT_QUOTES);

    $query = @ mysql_query("SELECT IDIMG, titolo, cronologia2, url_small FROM tblimg WHERE titolo=$new_filtro");
    //$num_record = @mysql_num_rows($query); 
    ho controllato htmlentities la dicitura che ho trovato prevede di togliere _ ad ogni modo non cambia.
    il problema è che non arrivo nemmeno alla pubblicazione della scritta non ci sono risultati quindi non capisco dove sia il problema.
    Grazie
    Tz

  8. #8
    http://it.php.net/htmlentities trovi la definizione che prevede ENT_QUOTES.

    Ma la query la esegue? prova a mettere al posto di $new_filtro, un valore specifico 'titolo_cercato' e vedi se mostra dei risultati. Così capisci se l'errore è nella costruzione della query o nella variabile usata come filtro (per es. non è valorizzata correttamente).
    Forse se imposti così:
    Codice PHP:
    $myquery"SELECT IDIMG, titolo, cronologia2, url_small FROM tblimg WHERE titolo=$new_filtro";
    $query = @ mysql_query($myquery); 
    print 
    $myquery//come debug fai stampare la query reale e vedi cosa sta realmente cercando nel db, dopo questa riga la commenti o elimini 
    "...non può piovere per sempre..."

  9. #9
    ciao,
    per prima cosa grazie per il tempo che mi dedichi, secondariamente ho impostato il seguente codice


    Codice PHP:

    $Richiesta 
    = @ mysql_query("SELECT IDIMG, titolo, cronologia2, url_small FROM tblimg ORDER BY idimg ASC"); 
    print 
    $Richiesta;
    //Determino il numero dei risultati ottenuti 
    $num_record = @ mysql_num_rows($Richiesta);

    if (
    $num_record 0

    // fine prova

    $filtro="pippo";
    $new_filtro=htmlentities($filtroENT_QUOTES);

    $query = @ mysql_query("SELECT IDIMG, titolo, cronologia2, url_small FROM tblimg WHERE titolo=$new_filtro");
    //$num_record = @mysql_num_rows($query); 
    print $query
    in qualunque caso sia con un valore inserito,non presente nel campo in questione, sia presente, sia senza valori restituisce come valore

    Resource id #5

    ora dove continuo a sbattere la testa? il muro basta provo con gli spigoli?
    Grazie
    Tz

  10. #10
    Gli spigoli in genere sortiscono effetti migliori :-P

    il print $Richiesta ti restituisce la risorsa risultante dalla query, quindi non è molto indicativa come informazioni.Piuttosto un print $num_record potrebbe farti capire quanti recorda ha trovato.
    "...non può piovere per sempre..."

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.