Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Barra di ricerca per titoli film PHP/Mysql

  1. #1

    Barra di ricerca per titoli film PHP/Mysql

    Salve a tutti, sono nuovo nel forum, avevo già aperto questa discussione nella sezione "HTML"
    ma ritengo sia più giusto approfondirla in questa sezione se gentilmente permettete e se riuscite a darmi una mano ve ne sarei infinitamente grato


    Il mio intento è quello di realizzare una barra di ricerca per titoli di film, i risultati dovranno essere linkabili, accompagnati da immagine e breve descrizione.
    Ho iniziato realizzando un database mysql (sono inesperto in materia quindi trattate quello che dico con le pinze) così formato:


    id (Integer 20, primary key, autoincrement)
    titolo (Varchar 100)
    descrizione (Longtext)


    Ma come inserire le immagini nel database?
    E ancora, come interrogare il database da php mostrando i risultati linkabili e visualizzando l'immagine e descrizione?


    Per ora ho fatto alcune prove usando questo "cerca.php" collegato da un form di ricerca in html inserito in una pagina, ma già non funziona...

    Codice PHP:
        $cn = mysql_connect("IPmiomysql", "user", "pass");    @mysql_select_db("miodb", $cn);    $testo = isset($_POST["testo"]) ? htmlspecialchars($_POST["testo"]) : '';?><html><head><title>Risultati della ricerca</title></head><body><p><b>Risultati della ricerca:</b><?    if (!$testo)    {        echo "nessun risultato!";    }    else    {        echo $testo;    }?></p><?    if (!$testo)    {?><p>Specificare un criterio di ricerca.</p><?    }    else    {        $arr_txt explode(" "$testo);        $sql "SELECT * FROM film WHERE ";        for ($i=0$i<count($arr_txt); $i++)        {            if ($i 0)            {                $sql .= " AND ";            }            $sql .= "(titolo LIKE '%" mysql_real_escape_string($arr_txt[$i]) . "%' OR descrizione LIKE '%" mysql_real_escape_string($arr_txt[$i]) . "%')";        }        $sql .= " ORDER BY titolo ASC";        $query mysql_query($sql$cn);        $quanti mysql_num_rows($query);        if ($quanti == 0)        {?><p>Nessun risultato!</p><?        }        else        {            for($x=0$x<$quanti$x++)            {                $rs mysql_fetch_row($query);                $id $rs[0];                $titolo $rs[1];
    ?></body></html>

  2. #2
    ciao!

    1) dovresti formattare meglio il codice perchè così non si capisce nulla
    2) non usare le funzioni mysql_*, sono deporecate; usa PDO o le funzioni mysqli_*
    3) stai facendo troppe domande tutte insieme!

    per caricare le immagini ti conviene:
    - creare una tabella dove salvi il path sul server dell'immagine; in sostanza il path dove carichi l'immagine; io in genere ci metto il path completo di nome dell'immagine
    - questa tabella sarà collegata alla che hai descritto, in modo che così puoi collegare ogni immagine al film corretto; e così puoi caricare anche più immagini per film
    - crea un form per l'upload delle immagini: per ogni immagini che carichi, scrivi il record corrispondente su db; per questo form puoi spulciare su google, ci stanno si o no milioni di esempi

    intanto inizia con questo!

  3. #3
    Prima di tutto ti ringrazio per la tempestiva risposta, chiedo scusa per le troppe domande e per il formato del codice php.
    Per usare PDO questo codice andrebbe bene?

    <?php/*
    blocco dei parametri di connessione
    */
    // nome di host
    $host = "localhost";
    // nome del database
    $db = "mysql";
    // username dell'utente in connessione
    $user = "username";
    // password dell'utente
    $password = "...";

    /*
    blocco try/catch di gestione delle eccezioni
    */
    try {
    // stringa di connessione al DBMS
    $connessione = new PDO("mysql:host=$host;dbname=$db", $user, $password);
    /*
    Avremmo potuto anche omettere dbname in questo modo:
    $connessione = new PDO("mysql:host=$host", $user, $password);
    */
    // notifica in caso di connessione effettuata
    echo "Connessione a MySQL tramite PDO effettuata.";
    // chiusura della connessione
    $connessione = null;
    }
    catch(PDOException $e)
    {
    // notifica in caso di errore nel tentativo di connessione
    echo $e->getMessage();
    } ?>
    Per inserire la path intendi mettere il percorso del file nell'hosting all'interno dello stesso db e stessa tabella? Tipo aggiungendo una colonna "path"?

    P.S. Il codice che avevo messo meglio formattato...

  4. #4
    Non me lo fa mettere..se si può linkare siti esterni ti dico che l'ho preso da qui: www.mrwebmaster.it/php/connessione-mysql-pdo_11868.html

  5. #5
    ciao!

    non ho il tempo di testare il tuo codice.
    fai qualche prova!

    per quanto riguarda il path, intendo la directory dove carichi l'immagine / le immagini sul server.
    hai due soluzioni:
    1. aggiungere una colonna path a quella tabella -> però così puoi avere una sola immagine a film
    2. creare una tabella a parte, in cui tieni il riferimento dell'articolo e il path; in questo modo puoi caricare N immagini riferite ad un articolo; ad esempio con questi campi:
      1. id_articolo (che potresti impostare come FOREIGN KEY) -> articolo di riferimento
      2. path -> path dell'immagine


    io sceglierei la seconda, che è sicuramente più flessibile!

Tag per questa discussione

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 © 2017 vBulletin Solutions, Inc. All rights reserved.