- Home
- Categorie
- Coding e Sistemistica
- PHP
- Come eliminare i doppioni
-
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
-
Ciao provart,
hai provato con GROUP BY?
-
Si grazie, dopo essermi scervellato un po ho risolto proprio con GROUP BY.
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.
-
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]
-
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ù?
-
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
-
[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]