Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Script php - Trovare la domanda con il numero maggiore di tag associati.

    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 "
    ";  ?>

  2. #2
    Qualcuno ha capito cosa intendo fare?

  3. #3
    Nessuno nessuno?

  4. #4
    non ho capito una mazza.... lo script fa rispondere ad una domanda, che ha associati dei tag, e la domanda successiva non deve avere gli stessi tag di quella precedente? Oppure la risposta dà il "tag" e quindi la domanda successiva dovrà essere una di quelle associate al tag?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    la prima. Si praticamente c'è da fare una differenza insiemistica. Credo siano un paio di funzioni o procedure da implementare.

    In poche parole: cerco l'intersezione massima fra i tag generici e i tag associati alla i-esima domanda (tutto questo mentre scorro l'array delle domande che ha un campo tag con i tag associati alle domande). Memorizzo questo indice contando i tag associati e trovando la domanda con il numero maggiore di tag associati. Poi passo alla differenza insiemistica dove elimino dall'insieme dei tag generici i tag associati alla i-esima domanda e reitero il tutto memorizzando nella seconda posizione la domanda successiva riferendomi all'insieme dei tag aggiornati. E vado avanti così. Tutto questo serve a presentare 6 domande all'utente ordinate seguendo appunto il metodo da me descritto qui sopra. E' chiaro?
    Andre

    Grazie.

  6. #6
    mah si, abbastanza... insomma... quindi ricapitolando:

    tu hai delle domande nella tabella domande

    poi hai dei tag

    poi hai un'associazione molti a molti tra i tag e le domande

    ok? spero di si

    Detto ciò, risposto alla prima domanda, le successive 6 domande devono essere le più attinenti possibili alla risposta data, in base ai tag...

    e vorresti farlo in php? io lo farei nel db questo processo... insomma, dipende dalle conoscenze che hai dell'sql e delle funzioni del db che usi, però potresti fare in modo di ottenere una vista con domanda -> numero dei tag compatibili con quelli che ti servono, e poi prenderti i primi 6.... dovrebbe essere meno oneroso che portare in php tutto il database delle domande e dei tag...
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  7. #7
    Ok... ci provo. Tnx!

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