Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2016
    residenza
    Italy
    Messaggi
    139

    Estrazione dati da db con php

    Ciao a tutti.

    Sto realizzando un sito, mediante cui estrarre delle notizie sportive che sono memorizzare in un database.
    Praticamente nella mia index.php estraggo le notizie di tutti gli sport e sono ordinate in base all'ultima inserita nel database e mostro solo le prime 8 notizie più recenti.
    Sempre nella index.php ho messo un form con cui filtrare mediante checkbox le notizie a seconda dello sport che ci interessa.
    Il form usa il metodo 'get'.

    La mia domanda è questo, come posso passare alla pagina news.php che riceve i dati dal form, i valori delle checkbox così da potermi costruire la query per la ricerca in base ai valori selezionati dall'utente?

    Vi posto anche il codice della mia index.php per essere più chiaro su quello che ho fatto:

    codice:
    <html>
       <head>
          <title>News in tempo reale</title>
          <link rel="stylesheet" type="text/css" href="FS.php">
       </head>
       <body>
          
          <h1>News in tempo reale</h1>
          
          <?php
             
             include "..\www.SportnewsIT.it\connetti.php";
             
             echo "<h3>Tutte le news sportive sempre aggiornate</h3>";
             
             
             $query="SELECT * FROM notizie ORDER BY data DESC LIMIT 0,8";
             $results=mysql_query($query);
             
             
             //mostro le 8 news più recenti, ovvero le ultime 8, partendo dall'ultima e tornando indietro.
             
                echo "<table>";
                while($value=mysql_fetch_array($results))
                {
                   echo "<tr><td>".$value["Sport"]."</td>";
                   echo "<td>".$value["data"]."</td>";
                   echo "<td>".$value["news"]."</td></tr>";
                }
                echo "</table>";
    
    
          ?>
          
          <!-- Adesso voglio realizzare una input box, dove selezionando la voce opportuna, ci riporta alle notizie
          che riguardano quella specifica categoria selezionata, inviando le richieste con un metodo GET -->
          
          <?php
                echo "<form action=\"News.php\" method=\"get\">";
                echo "<fieldset>";
                echo "<legend>Filtra per sport</legend><br>";
                echo "<input type=\"checkbox\" name=\"Formula1\" value=\"Formula1\"/> Sport1";
                echo "<br />"; 
                echo "<input type=\"checkbox\" name=\"Tennis\" value=\"Tennis\"/> Sport2";
                echo "<br />";
                echo "<input type=\"checkbox\" name=\"Ippica\" value=\"Ippica\"/> Sport3";
                echo "<br />";
                echo "</fieldset>";
                echo "<input type=\"submit\" value=\"Filtra\" name=\"search\">";
                echo "</form>";
          
          ?>
          
       </body>
    </html>
    Grazie a tutti per l'aiuto!!

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    1) Non è necessario usare gli echo per generare il form, puoi usare direttamente l'HTML fuori dai tag <?php e ?> così come fai per <html>, <body>, <h1> ... ecc.

    2) Non devi fare niente, gà così glieli passa, ma solo se sono selezionati, i checkbox non selezionati non vengono inviati, quindi lato PHP ti basta vedere se isset($_GET['Tennis']) è true (selezionato) o false (non selezionato) e così per tutti gli altri.

    3) Il consiglio è di inviare i dati di un form sempre col metodo post.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2016
    residenza
    Italy
    Messaggi
    139
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    1) Non è necessario usare gli echo per generare il form, puoi usare direttamente l'HTML fuori dai tag <?php e ?> così come fai per <html>, <body>, <h1> ... ecc.

    2) Non devi fare niente, gà così glieli passa, ma solo se sono selezionati, i checkbox non selezionati non vengono inviati, quindi lato PHP ti basta vedere se isset($_GET['Tennis']) è true (selezionato) o false (non selezionato) e così per tutti gli altri.

    3) Il consiglio è di inviare i dati di un form sempre col metodo post.
    Ciao Alhazred, per ciò che concerne i tuoi consigli 1) e 3) hai ragione, diciamo che ho messo il form nel php perchè avevo in mente una cosa non opportuna infatti l'ho subito tolta, per ciò che riguarda il tuo consiglio 3 il post non l'ho usato solo perché in questo caso so per certo che la richiesta rientra nella lunghezza dell'URL e soprattutto non invio dati sensibili.

    Per ciò che riguarda il punto 2 che mi hai espresso, puoi spiegarmi meglio credo di non aver ben capito cosa fare.

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Quando fai il submit di un form contenente checkbox, i dati riguardanti i checkbox, quindi nel tuo caso &Formula1='Formula1'&Tennis='Tennis' ecc vengono aggiunti alla query string, solo se sono stati selezionati, nel caso in cui non siano selezionati, non verranno aggiunti.
    Detto questo, se per esempio non selezioni il checkbox Tennis e lato PHP fai $_GET['Tennis'], PHP ti dirà che l'indice non è valido, perché nella query string non c'è nessun campo Tennis

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2016
    residenza
    Italy
    Messaggi
    139
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Quando fai il submit di un form contenente checkbox, i dati riguardanti i checkbox, quindi nel tuo caso &Formula1='Formula1'&Tennis='Tennis' ecc vengono aggiunti alla query string, solo se sono stati selezionati, nel caso in cui non siano selezionati, non verranno aggiunti.
    Detto questo, se per esempio non selezioni il checkbox Tennis e lato PHP fai $_GET['Tennis'], PHP ti dirà che l'indice non è valido, perché nella query string non c'è nessun campo Tennis
    Ciao Alhazred,

    forse mi sono spiegato male, ho capito quanto mi hai detto sulla selezione dei checkbox.
    Adesso non riesco a capire come passare alla mia query il valore dei campi selezionati, mi spiego meglio:

    Selezionando nel form per esempio i checkbox riguardnati Formula 1 e Tennis, come posso creare la quey:
    codice:
    $query="SELECT * FROM notizie WHERE sport='Formula 1' AND sport='Tennis' ";
    So che mi sto perdendo su una cosa banale, non riesco a venirne a capo.

    Grazie ancora per l'aiuto!!

  6. #6
    Come sai, alle CHECKBOX attribuisci una NAME; se lo accompagni con le quadre [] , PHP ti collezioner� un Array anzich� un singolo. Un Array coi VALUE delle sole selezionate.
    codice:
    <form method="post">
    <input type="checkbox" name="disciplina[]" value="Atletica">
    <input type="checkbox" name="disciplina[]" value="Tennis">
    <input type="checkbox" name="disciplina[]" value="Formula 1">
    <input type="checkbox" name="disciplina[]" value="Ronfare">
    <input type="checkbox" name="disciplina[]" value="Mangiare">
    Lato PHP recuperi cos�, tanto per cominciare a fare:
    codice:
    <?php
    $sport = $_POST['disciplina'];
    if(empty($sport)) 
    {
    echo("Nessuna checkbox � stata selezionata");
    } 
    else
    {
    $quante = count($sport);
    echo("Sono state selezionate queste $quante discipline: ");
    for($i=0; $i < $quante; $i++)
    {
    echo("<br> " . $sport[$i]);
    }
    }
    ?>

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2016
    residenza
    Italy
    Messaggi
    139
    Quote Originariamente inviata da Enzo SIMONELLI Visualizza il messaggio
    Come sai, alle CHECKBOX attribuisci una NAME; se lo accompagni con le quadre [] , PHP ti collezioner� un Array anzich� un singolo. Un Array coi VALUE delle sole selezionate.
    codice:
    <form method="post">
    <input type="checkbox" name="disciplina[]" value="Atletica">
    <input type="checkbox" name="disciplina[]" value="Tennis">
    <input type="checkbox" name="disciplina[]" value="Formula 1">
    <input type="checkbox" name="disciplina[]" value="Ronfare">
    <input type="checkbox" name="disciplina[]" value="Mangiare">
    Lato PHP recuperi cos�, tanto per cominciare a fare:
    codice:
    <?php
    $sport = $_POST['disciplina'];
    if(empty($sport)) 
    {
    echo("Nessuna checkbox � stata selezionata");
    } 
    else
    {
    $quante = count($sport);
    echo("Sono state selezionate queste $quante discipline: ");
    for($i=0; $i < $quante; $i++)
    {
    echo("<br> " . $sport[$i]);
    }
    }
    ?>
    Ciao Enzo,

    grazie per l'esempio, era proprio quello che cercavo, ho modificato il mio codice, ma ho ancora due problemi:

    -1:Notice: Undefined variable: select in C:\xampp\htdocs\www.SportnewsIT.it\News.php on line 31
    -2:Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\www.SportnewsIT.it\News.php on line 46

    Non riesco a capirne il motivo, dato che il codice scritto mi sembra corretto, ed anche perché stampando la query, supponendo di selezionare come sport: Nuoto e Tennis, ed andando a stampare $query, ottengo in modo corretto: "SELECT * FROM notizie ORDER BY data DESC WHERE Sport=Nuoto AND Sport=Tennis" quale richiesta al database.

    Questo è il codice che ho scritto:
    [CODE]
    <html>
    <head>
    <title>News in tempo reale</title>
    <link rel="stylesheet" type="text/css" href="FS.php">
    </head>
    <body>

    <h1>News in tempo reale</h1>

    <?php

    include "..\www.SportnewsIT.it\connetti.php";

    echo "<h3>Tutte le news sportive sempre aggiornate</h3>";

    $sport = $_GET['disciplina'];
    if(empty($sport))
    {
    echo("Nessuna checkbox è stata selezionata");
    }
    else
    {
    $selected = count($sport);
    echo("Sono state selezionate queste $selected discipline: ");
    for($i=0; $i < $selected; $i++)
    {
    //questa parte di codice serve a realizzare la parte di query di selezione degli sport
    // che poi concateno alla variabile $query
    if($i==0)
    {
    $select=$select.("Sport=".$sport[$i]);
    }else
    {
    $select=$select.(" AND Sport=".$sport[$i]);
    }
    }

    echo "Sport: ".$select;
    }

    $query=("SELECT * FROM notizie ORDER BY data DESC WHERE ".$select);
    $res=mysql_query($query);
    //mostro le news ordinete in base alla data, dalla più recente e solo quelle degli sport selezionati dall'utente

    echo "<table>";
    while($value=mysql_fetch_array($res))
    {
    echo "<tr><td>".$value["Sport"]."</td>";
    echo "<td>".$value["data"]."</td>";
    echo "<td>".$value["news"]."</td></tr>";
    }
    echo "</table>";


    ?>

    </body>
    </html>
    [\CODE]

  8. #8
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    il primo errore è una variabile non definita prima di usarla

    Codice PHP:
    if($i==0)
    {
    $select=$select.("Sport=".$sport[$i]);
    }else
    {
    $select=$select.(" AND Sport=".$sport[$i]);
    }
    }

    echo 
    "Sport: ".$select
    il secondo errore dipende dal primo

    Codice PHP:
    $query=("SELECT * FROM notizie ORDER BY data DESC WHERE ".$select); 

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2016
    residenza
    Italy
    Messaggi
    139
    il primo errore è una variabile non definita prima di usarla

    Codice PHP:
    if($i==0)
    {
    $select=$select.("Sport=".$sport[$i]);
    }else
    {
    $select=$select.(" AND Sport=".$sport[$i]);
    }
    }

    echo
    "Sport: ".$select;


    il secondo errore dipende dal primo

    Codice PHP:
    $query=("SELECT * FROM notizie ORDER BY data DESC WHERE ".$select);
    ciao clasku,

    cavolo ho fatto una gran svista nel non notare la variabile non definita, , ho corretto il codice definendo la variabile, infatti ho risolto il primo problema, ma continua a restarmi il secondo problema quando vado a fare mysql_fetch_array, cosa potrebbe essere??

    Non riesco a capirlo, dato che nell'estrazione sulla mia pagina index.php funziona alla perfezione e copie la medesima operazione il codice, ma senza effettuare la WHERE sulla query.

  10. #10

    print_r()

    codice:
    $query=("SELECT * FROM notizie ORDER BY data DESC WHERE ".$select);
             $res=mysql_query($query);
    
    echo print_r($res);
    cosa ti stampa ?

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