Ciao ragazzi, sto cercando di implementare uno script in php che sia capace di fornire delle domande (presenti su un db) in maniera intelligente: partendo da un insieme chiuso di domande (6 o 7), vorrei dare la possibilità all'utente di rispondere alle domande in maniera iterativa. Esempio : Prima domanda con 6 tags associati.
A partire da questo punto: vorrei effettuare l'intersezione con l'insieme generico dei tag e quindi eliminare i valori trovati sia in esso (si tratta di un'altra tabella nel db) che nella tabella che contiene le domande e i tag associati. Successivamente vorrei nuovamente trovare la domanda con il maggior numero di tag riferendomi all'insieme dei tag aggiornato.
Quindi l'obiettivo credo sia costruire una matrice che contenga appunto tutte le domande prese in considerazione con i relativi tag associati.
Spero possiate aiutarmi.
Un saluto e grazie a tutti.
Andrea
Qui ci sono delle prove che ho fatto: praticamente esplodo l'array dei tag associati alle domande visto che devo effettuare l'intersezione e per farlo non devo avere spazi bianchi. In questo modo riesco ad ottenere la prima domanda con il maggior numero di tag. Ora vorrei reiterare il tutto prendendo in considerazione gli array dei tag aggiornati (ovvero gli array con i tag cancellati).
Codice PHP:
<?php include('connection.php'); $q=mysql_query("SELECT tag from quizzletag"); $q2=mysql_query("SELECT * from quizzledomande"); if (!$q2) { $message = 'Invalid query: ' . mysql_error() . "\n"; $message .= 'Whole query: ' . $q2; die($message); } if (!$q) { $message = 'Invalid query: ' . mysql_error() . "\n"; $message .= 'Whole query: ' . $q; die($message); } //insieme generico dei tags while($row=mysql_fetch_assoc($q)) { $tagsgenerici[] = $row['tag']; } $massimo=0; //retrieval domande e tags associati while ($row2=mysql_fetch_array($q2)) { $numerodomande= $row2['id']; $arraydomande = $row2['testo']; $arraytag=$row2['tag']; //esplosione array di tags $explode=explode(" ",$arraytag); //conto i campi contenuti nell'array esploso. $conta = array(count($explode)); //cerco il valore massimo per il quale ottengo la domanda con il numero maggiore di tags esplosi. if($massimo < max($conta)) { $massimo = max($conta); $multiarray = array( "id" => $numerodomande, "domande" => array($arraydomande[$i]), "numerotag" => array($massimo), "tag" => $explode); } } foreach($multiarray["tag"] as $t) { $strTags[] .= "".$t; } //prima domanda con il valore massimo di tags. echo "[b]L'id della domanda con il numero maggiore di tags è: [/b]".$multiarray["id"][0]."
"; foreach($multiarray['domande'] as $dom){ echo "[b]La domanda con il numero maggiore di tags è: [/b]".$dom."
"; } echo "[b]Il conteggio dei tag per la prima domanda è: [/b]".$multiarray["numerotag"][0]."
"; echo "[b]I tag associati per la prima domanda sono: [/b]"."
"; print_r ($strTags); echo "
"; //cancello dall'array dei tag generici i tag associati alla domanda. $result = array_intersect($tagsgenerici, $strTags); print "[b]L'intersezione tra i due array selezionati ha dato come risultato: [/b]"; print_r ($result); foreach ($result as $value){ unset($tagsgenerici[array_search($value,$tagsgenerici)]); } print "
"; print "[b]L'array dei tag generici contiene: [/b]"; print_r ($tagsgenerici); echo "
"; echo "
"; //eliminazione tag associati per prima domanda. unset($strTags); print_r ($multiarray); echo "
"; echo "
"; ?>