• User Newbie

    Come eliminare i doppioni

    Salve a tutti, ne capisco molto poco di PHP e anche del resto pultroppo, ho un database per l'archiviazioni dei libri con relativa ricerca, ma vorrei che la ricerca del titolo originale non mi stampasse i risultati doppi, dovuti alla stuttura del DB MSQL e dai nostri cari editori che sopratutto un tempo cambiavano il titolo all'edizione originale più volete. Questo è il codice:

    $sql="SELECT * FROM Autori INNER JOIN libri ON Autori.ID = libri.ID_Autori JOIN mese_originale ON libri.ID_mese_originale = mese_originale.ID WHERE autori LIKE
    '%".$_POST['name']."%'";
    //-run the query against the mysql query function
    $result=mysql_query($sql);
    //Guardo quante righe nel DB sono state trovate
    $numRisultati = mysql_num_rows($result);
    if($numRisultati != 0)
    { // se ho trovato almeno un risultato allora faccio partire il loop
    //-create while loop and loop through result set
    echo "TITOLI ORIGINALE:\n";
    while($row=mysql_fetch_array($result))
    {
    $autore=$row['Autori'];
    $originale=$row['Titolo_Originale'];
    $data=$row['Data_Titolo_Originale'];
    $mese_o=$row['Mese_Originale'];
    $trama_o=$row['Link_Titolo_Originale'];
    //-display the result of the array
    if ($originale != "") {
    echo "<ul>\n";
    echo "<li>"."<a href="$trama_o">".$autore." - ".$originale.", ".$mese_o." ".$data."</a></li>\n";
    echo "</ul>";

    Come faccio a controllare che $trama non sia doppio ed evitare che mi stampi più volte il titolo originale, ho già provato SELECT DISTINCT ma non ho ottenuto il risultato sperato 😞


  • ModSenior

    Ciao provart,
    hai provato con GROUP BY?


  • User Newbie

    Si grazie, dopo essermi scervellato un po ho risolto proprio con GROUP BY. :bigsmile:

    Ora mi sto scervellando per risolvere un altro problema, sto cercando di far ricaricare in una pagina due menù a tendina il secondo dipendente dal primo tramite ID senza ricaricare una nuova pagina, e con javascritp document.getElementById('myForm').submit(); lo fa anche se non so se poi funziona. Il primo problema e che quando aggiungo gli elementi prima e dopo queo 2 menù a tendina il javascript non vuole più funzionare- Secondo problema il from indicato nell'esempio trovato è <form id="myForm" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> ora ho letto che non posso nidificare i form, ma io avrei bisogno che al temine della compilazione della pagina tutti i gli $_POST venissero trasferiti alla pagina di inseriment salva.php. Se qualcuno ha qualche consiglio o tutorial da leggermi. Possibilmento non quello relativo a regioni e provincie ne sarei grato.


  • User

    io, un po' di tempo fa, ho forse avuto lo stesso tuo problema e mi sono tenuto questa prova ... vedi se ti è utile ...

    [PHP]
    <html>
    <head>
    <title>titolo</title>
    </head>
    <body>

    <?php
    
    function subform_01()
    {
    echo "<br><br>SUB-FORM 01<br><br>\n";
    echo "<input type=\"text\" name=\"t1a\" size=\"20\"><br>\n";
    echo "<input type=\"reset\" value=\"Cancella\">\n";
    }
    
    function subform_02()
    {
    echo "<br><br>SUB-FORM 02<br><br>\n";
    echo "<input type=\"text\" name=\"t2a\" size=\"20\"><br>\n";
    echo "<input type=\"text\" name=\"t2b\" size=\"20\"><br>\n";
    echo "<input type=\"reset\" value=\"Cancella\">\n";
    }
    
    function subform_03()
    {
    echo "<br><br>SUB-FORM 03<br><br>\n";
    echo "<input type=\"text\" name=\"t3a\" size=\"20\"><br>\n";
    echo "<input type=\"text\" name=\"t3b\" size=\"20\"><br>\n";
    echo "<input type=\"text\" name=\"t3c\" size=\"20\"><br>\n";
    echo "<input type=\"reset\" value=\"Cancella\">\n";
    }
    
    echo "<br><br>FORM<br><br>\n";
    echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\">\n";
    echo "<input type=\"radio\" name=\"r\" value=\"1\"";
    if ($_POST['r']==1) echo "checked=\"checked\"";
    echo ">Opzione 1<br>\n";
    echo "<input type=\"radio\" name=\"r\" value=\"2\"";
    if ($_POST['r']==2) echo "checked=\"checked\"";
    echo ">Opzione 2<br>\n";
    echo "<input type=\"radio\" name=\"r\" value=\"3\"";
    if ($_POST['r']==3) echo "checked=\"checked\"";    
    echo ">Opzione 3<br>\n";
    if(isset($_POST['r']))
      {
      switch($_POST['r'])
            {
            case  1: subform_01();
            break;
            case  2: subform_02();
            break;
            case  3: subform_03();
            break;
            default: echo "<br><br>Error<br><br>";
            break;
            }
      }
    echo "<br><br><input type=\"submit\" value=\" OK \">\n";
    echo "</form>\n";
    
    ?>
    
    </body>
    </html>
    

    [/PHP]


  • User Newbie

    Mha, c'è qualcosa che mi sfugge, ho trovato e adattato un codice che funziona:

    
    <?php
                $conn = mysql_connect("localhost","user","password") or die("Connection Failed");
                $db = mysql_select_db("bdb") or die("Connection Failed");
                $mydb=mysql_set_charset('utf8');
    ?>
    <html>
        <head>
        </head>
        <body>
            <form id="myForm" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
                Editori:
                <select name="ID_Editori" onchange="javascript:document.getElementById('myForm').submit();">
                    <option value="">Seleziona editore</option>
                    <?php
                    // Visualizzo l'elenco degli autori
                    $strSQL = "SELECT * FROM Editori ORDER BY Editori";
                    $result = mysql_query($strSQL, $conn);
                    
                    while( $row = mysql_fetch_assoc($result) ) {
                        echo "\t<option value=\"" . $row['ID'] . "\">" . $row['Editori'] . "</option>\n";
                    }
                    ?>
                </select>
                <br />
                Collane:
                <select name="ID_Collan">
                <option value="">Seleziona collana</option>
                    <?php
                    // Visualizzo gli eventuali articoli disponibili per l'autore selezionato
                    if ( isset($_POST['ID_Editori']) ) {
                        $strSQL = "SELECT * FROM Collane WHERE ID_Editori = '" . $_POST['ID_Editori'] . "' ORDER BY Collane";
                        $result = mysql_query($strSQL, $conn);
                        
                        while( $row = mysql_fetch_assoc($result) ) {
                            echo "\t<option value=\"" . $row['ID'] . "\">" . $row['Collane'] . "</option>\n";
                        }
                    }
                    ?>
                </select>
            </form>
        </body>
    </html> 
    
    

    Questo codice carica il primi elenco dal DB mysql e quando seleziono l'editore mi cariga giustamente le collane di quell'editore, ma resetta il primo, anche se presumo che mantenga comunque il giusto valore dell'ID_Editori. Ora qualcuno mi può spiegare perchè se aggiungo una sola riga di codice prima della chiusura del form tipo: <input type="submit" name="submit" value="Inserisci" style="font-family: Times New Roman; font-size: 14pt"></p> non funziona più?


  • User

    per non resettare il primo valore metti all'interno del ciclo while
    [PHP]
    if ($row['ID']==$_POST['ID_Editori']) $sel='selected="selected"'; else $sel='';
    [/PHP]

    e poi la tua riga di echo
    [PHP]
    echo "\t<option " .$sel. " value="" . $row['ID'] . "">" . $row['Editori'] . "</option>\n";
    [/PHP]

    per quanto riguarda l'aggiunta del pulsante di submit non saprei, devo provare


  • User Newbie

    [LEFT]Ho messo male il codice o c'è un errore?

    <?php
    // Visualizzo l'elenco degli autori
    $strSQL = "SELECT * FROM Editori ORDER BY Editori";
    $result = mysql_query($strSQL, $conn);

                while( $row = mysql_fetch_assoc($result) ) {
               if ($row['ID']==$_POST['ID_Editori'])
               $sel='selected="selected"';
               else
               $sel='';
               echo "\t<option " .$sel. " value=\"" . $row['ID'] . "\">" . $row['Editori'] . "</option>\n";
                }
                ?>
    

    perché provandolo così mi da errore, mi mostra la finestra con errore sopra ogni editore che ho nel database. Comunque a me servirebbe di poter aggiornare il secondo menù a tendina in base alla selezione del primo. Qualsiasi codice funzionante è ben accetto 🙂 e Grazie per l'aiuto[/LEFT]