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

    Database - Il Form Di Ricerca Non Funziona

    Ho iniziato da poco a lavorare con i database relazionali usando PHP 5.2.1 , MYSQL 5.0 , Apache 2.2 .

    Su Google ho trovato alcuni esempi interessanti e devo dire che l'inserimento dei dati nel database tramite pagine .php e il loro recupero va a buon fine SE PERO' CERCO DI USARE UN FORM DI RICERCA RICEVO COME RISULTATO SOLO UNA PAGINA VUOTA ! .

    Purtroppo non posso allegare il file zip con tutti gli esempi .

    Personalmente sto indagando sul file result.php ( visto che gli altri funzionano ) che dopo l'inserimento dei dati nel form collegandosi a view.php dovrebbe far apparire a video i risultati , ma come ho già detto questo non avviene .

    Inserendo all'inizio di result.php :

    mysql_error();
    error_reporting(E_ALL);

    viene notificato il seguente errore : Undefined variable : chiave ... ecc ...

    Ma può essere normale ricevere questo genere di avviso se le variabili non vengono inizializzate prima dell'uso .

    Adesso però mi chiedo non sarà che devo abilitare o decommentare qualcosa per esempio nei file php.ini o httpd.conf per poter utilizzare la funzione di ricerca con un form ?

    Ringrazio anticipatamente per un eventuale risposta


    RESULT.PHP

    <?
    error_reporting(E_ALL);
    include("top_foot.inc.php");
    include("config.inc.php");
    top();
    $db = mysql_connect($db_host, $db_user, $db_password);
    if ($db == FALSE)
    die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
    mysql_select_db($db_name, $db)
    or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
    $keys = explode (",", $chiave);
    $query = "";
    reset ($keys);
    while (list(,$parola) = each ($keys))
    { $parola = trim($parola);
    if ($parola != "")
    $query .= "titolo LIKE '%$parola%' OR testo LIKE '%$parola%' OR autore LIKE '%$parola%' OR";
    }
    $query .= "0";
    $query = "SELECT id, titolo, data FROM news WHERE " . $query;
    $result = mysql_query($query, $db);
    while ($row = mysql_fetch_array($result))
    {
    echo "<a href=\"view.php?id=$row[id]\">" . date("j/n/y", $row[data]) . " - $row[titolo]</a>
    ";
    }
    mysql_close($db);
    foot();
    ?>

    VIEW.PHP

    <?
    include("top_foot.inc.php");
    include("config.inc.php");
    top();
    $db = mysql_connect($db_host, $db_user, $db_password);
    $id=$_GET['id'];
    if ($db == FALSE)
    die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
    mysql_select_db($db_name, $db)
    or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
    $query = "SELECT titolo, testo, data, autore, mail FROM news WHERE id='$id'";
    $result = mysql_query($query, $db);
    $row = mysql_fetch_array($result);
    $data = date("j/n/y", $row[data]);
    echo "$row[titolo]

    ";
    echo "$row[testo]

    ";
    if ($row[mail] != "")
    echo "$data, <a href=mailto:$row[mail]>$row[autore]</a>
    ";
    else
    echo "$data, $row[autore]
    ";
    echo "
    <a href=index.php>Torna alla pagina iniziale</a>
    ";
    echo "<a href=all.php>Visualizza tutti gli articoli</a>
    ";
    mysql_close($db);
    foot();
    ?>




  2. #2
    se passi i dati con un form method = post i dati passati saranno in $_POST

    dovresti pure utilizzare il tag php "normale", cioe' <?php

    il tuo script andava bene quando veniva utilizzata la variabile register_globals in ON.

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

  3. #3
    Salve Piero

    se passi i dati con un form method = post i dati passati saranno in $_POST

    Potresti spiegarti meglio ?


    dovresti pure utilizzare il tag php "normale", cioe' <?php

    Ho aggiunto php soltanto alla prima riga ( <?php ) devo farlo anche in fondo ?


    il tuo script andava bene quando veniva utilizzata la variabile register_globals in ON.

    Ho modificato il file php.ini mettendo la voce indicata su on



    Adesso però mi dà il seguente errore

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Programmi\Apache.......\htdocs\........\result. php on line 22

    Se non sbaglio e questa while ($row = mysql_fetch_array($result))


    Grazie intanto per i suggerimenti

  4. #4
    Visto che non posso allegare un file zip ho pensato di postare tutto il codice :

    top_foot.inc.php

    <? function top() { ?>
    <html>
    <head>
    <meta name=generator content="Script di freephp.it">
    </head>
    <body bgcolor=ffffff text=000000>
    <font face=verdana,tahoma,arial size=-1>
    <h1>FREEPHP.IT</h1>

    <? }

    function foot() { ?>
    </font>
    </body>
    </html>
    <? } ?>

    config.inc.php

    <?
    // parametri del database
    $db_host = "localhost";
    $db_user = "root";
    $db_password = "";
    $db_name = "";
    //password per inserimento articoli
    $password = "";
    ?>

    insert.php

    <?
    include ("config.inc.php");
    include ("top_foot.inc.php");

    //intestazione
    top();
    ?>

    <form method="post" action="save.php">
    Titolo:

    <input type="text" size="40" name="titolo" />



    Data:


    <select name="giorno">
    <?
    for ($i=1; $i<=31; $i++)
    echo "<option value=\"$i\">$i</option>";
    ?>
    </select>

    <select name="mese">
    <option value="1">Gennaio</option>
    <option value="2">Febbraio</option>
    <option value="3">Marzo</option>
    <option value="4">Aprile</option>
    <option value="5">Maggio</option>
    <option value="6">Giugno</option>
    <option value="7">Luglio</option>
    <option value="8">Agosto</option>
    <option value="9">Settembre</option>
    <option value="10">Ottobre</option>
    <option value="11">Novembre</option>
    <option value="12">Dicembre</option>
    </select>

    <select name="anno">
    <option value="2001">2001</option>
    <option value="2002">2002</option>
    <option value="2003">2003</option>
    <option value="2004">2004</option>
    <option value="2005">2005</option>
    <option value="2003">2006</option>
    <option value="2004">2007</option>
    </select>




    Autore:

    <input type="text" size="40" name="autore" />



    E-mail:

    <input type="text" size="40" name="mail" />



    Testo:

    <textarea cols="60" rows="40" name="testo"></textarea>



    Password:

    <input type="password" size="40" name="pass" />



    <input type="submit" value="Invia2" />
    </form>
    <?
    // chiusura pagina
    foot();
    ?>


    search.php

    <?
    mysql_error();
    error_reporting(E_ALL);
    include("top_foot.inc.php");
    include("config.inc.php");
    top();
    ?>
    <form method=post action=result.php>
    <input type=text name=chiave><input type=submit value=cerca>

    </form>
    <?
    foot();
    ?>


    save.php


    <?
    $titolo=$_REQUEST['titolo'];
    $autore=$_REQUEST['autore'];
    $mail=$_REQUEST['mail'];
    $testo=$_REQUEST['testo'];
    $pass=$_REQUEST['pass'];
    $giorno=$_REQUEST['giorno'];
    $mese=$_REQUEST['mese'];
    $anno=$_REQUEST['anno'];
    include("top_foot.inc.php");
    include("config.inc.php");
    top();

    if ($pass != $password): echo "Password errata";
    elseif (trim($titolo) == "" OR trim($testo) == ""):
    echo "I campi Titolo e Testo devono essere riempiti!";
    else :
    $titolo = addslashes(stripslashes($titolo));
    $autore = addslashes(stripslashes($autore));
    $mail = addslashes(stripslashes($mail));
    $testo = addslashes(stripslashes($testo));
    $titolo = str_replace("<", "&lt;", $titolo);
    $titolo = str_replace(">", "&gt;", $titolo);
    $autore = str_replace("<", "&lt;", $autore);
    $autore = str_replace(">", "&gt;", $autore);
    $testo = str_replace("<", "&lt;", $testo);
    $testo = str_replace(">", "&gt;", $testo);
    $testo = nl2br($testo);
    $data = mktime("0", "0", "0", $mese, $giorno, $anno);
    $db = mysql_connect($db_host, $db_user, $db_password);
    if ($db == FALSE)
    die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");

    mysql_select_db($db_name, $db)
    or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
    $query = "INSERT INTO news (titolo, testo, data, autore, mail) VALUES ('$titolo', '$testo', '$data', '$autore', '$mail')";
    if (mysql_query($query, $db))
    echo "L'articolo è stato inserito correttamente";
    else
    echo "Errore durante l'inserimento";

    //endif;
    mysql_close($db);
    endif; // chiude la verifica della presenza dei dati
    foot();
    ?>


    view.php

    <?php
    include("top_foot.inc.php");
    include("config.inc.php");
    top();
    $db = mysql_connect($db_host, $db_user, $db_password);
    $id=$_GET['id'];
    if ($db == FALSE)
    die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
    mysql_select_db($db_name, $db)
    or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
    $query = "SELECT titolo, testo, data, autore, mail FROM news WHERE id='$id'";
    $result = mysql_query($query, $db);
    $row = mysql_fetch_array($result);
    $data = date("j/n/y", $row[data]);
    echo "$row[titolo]

    ";
    echo "$row[testo]

    ";
    if ($row[mail] != "")
    echo "$data, <a href=mailto:$row[mail]>$row[autore]</a>
    ";
    else
    echo "$data, $row[autore]
    ";
    echo "
    <a href=index.php>Torna alla pagina iniziale</a>
    ";
    echo "<a href=all.php>Visualizza tutti gli articoli</a>
    ";
    mysql_close($db);
    foot();
    ?>


    all.php

    <?
    include("top_foot.inc.php");
    include("config.inc.php");
    top();

    $db = mysql_connect($db_host, $db_user, $db_password);
    if ($db == FALSE)
    die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
    mysql_select_db($db_name, $db)
    or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
    if (!isset($start) OR $start<0)
    $start=0;
    $step = 20;
    $query = "SELECT id,data,titolo FROM news ORDER BY data DESC LIMIT $start,$step";
    $result = mysql_query($query, $db);
    while ($row = mysql_fetch_array($result))
    { echo "<a href=\"view.php?id=$row[id]\">" . date("j/n/y", $row[data]) . " - $row[titolo]</a>
    "; }
    ?>



    <table width=90% border=0><tr>
    <td width=20% align=left>
    <?
    if ($start>0)
    { $start_back = $start - $step;
    echo "<a href=all.php?start=$start_back>precedenti</a>";
    }
    ?>
    </td>
    <?
    $query = "SELECT count(*) AS tot FROM news";
    $result = mysql_query($query, $db);
    $row = mysql_fetch_array($result);
    $pages = intval(($row[tot]-1) / $step)+1;
    ?>
    <td width=60% align=center>
    <?
    for ($i=0; $i<$pages AND $i<20; $i++)
    { $start_page = $i * $step;
    echo "<a href=all.php?start=$start_page>" . ($i+1) . "</a> ";
    }
    ?>
    </td>
    <td width=20%>
    <?
    if ($start + $step < $row[tot])
    { $start_next = $start + $step;
    echo "<a href=all.php?start=$start_next>successivi</a>";
    }
    ?>
    </td>
    </tr></table>


    <?
    echo "<a href=search.php>Cerca negli articoli</a>";
    foot();
    ?>


    index.php

    <?
    include("top_foot.inc.php");
    include("config.inc.php");
    top();
    $db = mysql_connect($db_host, $db_user, $db_password);
    if ($db == FALSE)
    die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
    mysql_select_db($db_name, $db)
    or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
    $query = "SELECT id, data, titolo FROM news ORDER BY data DESC LIMIT 0,5";
    $result = mysql_query($query, $db);
    while ($row = mysql_fetch_array($result))
    {
    echo "<a href=\"view.php?id=$row[id]\">" . date("j/n/y", $row[data]) . " - $row[titolo]</a>
    ";
    }
    mysql_close($db);
    foot();
    ?>


    install.php

    <?
    include("config.inc.php");
    $db = mysql_connect($db_host, $db_user, $db_password);
    if ($db == FALSE)
    die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
    mysql_select_db($db_name, $db)
    or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
    $query = "CREATE TABLE news (id INT (5) UNSIGNED not null AUTO_INCREMENT, titolo VARCHAR (255) not null, testo TEXT not null, data INT (11), autore VARCHAR (50), mail VARCHAR (50), PRIMARY KEY (id))";
    if (mysql_query($query, $db))
    echo "L'installazione è stata eseguita correttamente";
    else
    echo "Errore durante l'installazione";
    mysql_close($db);
    ?>


    result.php

    <?php
    error_reporting(E_ALL);
    include("top_foot.inc.php");
    include("config.inc.php");
    top();
    $db = mysql_connect($db_host, $db_user, $db_password);
    if ($db == FALSE)
    die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
    mysql_select_db($db_name, $db)
    or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
    $keys = explode (",", $chiave);
    $query = "";
    reset ($keys);
    while (list(,$parola) = each ($keys))
    { $parola = trim($parola);
    if ($parola != "")
    $query .= "titolo LIKE '%$parola%' OR testo LIKE '%$parola%' OR autore LIKE '%$parola%' OR";
    }
    $query .= "0";
    $query = "SELECT id, titolo, data FROM news WHERE " . $query;
    $result = mysql_query($query, $db);
    while ($row = mysql_fetch_array($result))
    {
    echo "<a href=\"view.php?id=$row[id]\">" . date("j/n/y", $row[data]) . " - $row[titolo]</a>
    ";
    }
    mysql_close($db);
    foot();
    ?>

  5. #5
    21 -> $result = mysql_query($query, $db) or die(mysql_error());

    metti la segnalazione di errore. La query non e' valida.

    Nota: se hai un problema nel file result.php .... posta solo il file result.php. E metti il codice tra tag [ php] o [ code] tanto per agevolare gli uomini di buona volonta' che leggono il tuo post.

    Qui trovi le istruzioni: http://forum.html.it/forum/misc.php?...bbcode#buttons

    grazie.

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

  6. #6
    Ho modificato la linea 21 per come hai suggerito ma non funge !


    Adesso da questo come risultato :

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OR0' at line 1




    :master:

  7. #7
    Dopo la query
    $query .= "titolo LIKE '%$parola%' OR testo LIKE '%$parola%' OR autore LIKE '%$parola%' OR";
    }
    devi aggiungere uno spazio tra l'ultimo OR e lo 0:
    $query .= " 0";
    Ciao.
    Here Comes The Music Ecstasy

  8. #8
    Originariamente inviato da Runcommand
    Ho modificato la linea 21 per come hai suggerito ma non funge !


    Adesso da questo come risultato :

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OR0' at line 1




    :master:
    la modifica non era per far andare quello che non andava, ma per capire qual'e' l'errore che impedisce alla query di andare a buon fine.

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

  9. #9
    Utente di HTML.it L'avatar di brodik
    Registrato dal
    Jan 2009
    Messaggi
    765
    in teoria basta uno spazio in fondo

    Codice PHP:
    $query .= "titolo LIKE '%$parola%' OR testo LIKE '%$parola%' OR autore LIKE '%$parola%' OR "

  10. #10
    I vostri suggerimenti stanno producendo qualcosa , adesso usando il form di ricerca e apparso un risultato !!

    Purtroppo però e accompagnato anche da un messaggio d'errore che riporto :


    Notice: Use of undefined constant data - assumed 'data' in C:\Programmi\Apache Software Foundation\Apache2.2\htdocs\miacartella\result.php on line 25

    7/6/02 - Articolo prova

    Grazie !!

    Avete altri suggerimenti ?

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.