nome del gruppo e user che non si ripetono mai nella tabella: come procedere?

Salve ragazzi, sto cercando una soluzione al mio problema già da parecchi giorni, ma non riesco a trovare il modo per muovermi se non ripetere due volte quasi la stessa query, cosa che non mi andrebbe!

In pratica il problema è questo:

l'utente, una volta loggato ha la possibilità di creare un gruppo; Lo script effettua un controllo:

- Seleziona la tabella Groups, e dovrebbe controllare che in questa tabella l'utente loggato, non abbia già creato un gruppo (cmq esso si chiami)

e, secondo controllo, che non ci sia già un gruppo chiamato in questo modo, anche se creato da un altro utente.

Se non c'è nessun gruppo con questo nome, e l'utente non ha mai creato prima qualche altro gruppo, allora il gruppo potrà essere creato.

Non vorrei fare due query quasi uguali per fare questi due controlli, ma non riesco a trovare un modo per muovermi!

Mi date una mano?

Ho pensato anche ad una query di questo tipo:

                  "Select * FROM groups WHERE name_group = '$name_group'  OR username = '$username' ";

Come la vedete questa query? è possibile l'utilizzo di OR?

e voi come procedereste?

Grazie a tutti da principio per l'aiuto...

Daluti!

inviato 8 anni fa
micdech
X 0 X

Cerca di spiegare meglio il problema, non è molto chiaro :(

:bye:

risposto 8 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

ci provo...

In pratica l'utente può creare un nuovo gruppo solo se non ne ha già creato uno in precedenza, e inoltre il gruppo non può avere un nomegià utilizzato per un altro gruppo...

il controllo ovviamente va fatto sullastessatabella gruppi...

voi come procedereste?

grazie mille....saluti

risposto 8 anni fa
micdech
X 0 X

Credo che le query con l'OR vada benissimo, anche perché leggendo l'eventuale record estratto dalla query puoi con PHP capire se il problema è l'omonimia del gruppo oppure se l'utente ha già registrato il suo gruppo. In questo modo potrai visualizzare un messaggio di avviso esplicativo.

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

bene Gianni Grazie! (ovviamente grazie anche a trashofmaster, che mi stadando una mano pure lui!  ;)  )

la query where e or già l'ho fatta, ma poi nel momento delle verifiche non mi dai risultati sperati.

Voi come fareste la verifica?

oggi vi posto il codicemio, appena accendo il desktop!

Grazie ragazzi, QUESTO FORUM é MITICOOOOOOOOOOOOOOOOO!!!!!!!!!!!!!

risposto 8 anni fa
micdech
X 0 X

Questa è una delle tante varianti che ho provato a fare...

$query_group = "Select * FROM groups WHERE name_group = '$name_group' OR username_admin_group = '$username'";
   $result_group = mysql_query($query_group, $db);
   $num_row = mysql_num_rows($result_group);
   if($num_row !== 0)
      {
      echo "gruppo esistente!";
      }else
      {
      echo "mi preparo a creare il gruppo";
      }*/
   $row = mysql_fetch_array($result_group);
   echo "$row[user_admin_group]";
      if(in_array($username, $row, true))
         {
         echo "Attenzione: hai già creato un gruppo!";
         }else
         {
         echo "mi preparo a creare un nuovo gruppo";
         $add_group = mysql_query("INSERT INTO `groups` ( name_group, id_admin_group, username_admin_group) VALUES ( '$name_group', '$id_user', '$username')");
         if(!$add_group)
            {
            echo "problema nella creazione del nuovo gruppo!";
            }else
            {
            echo "nuovo gruppo creato";
            }
         }

Grazie ancora ragazzi!

risposto 8 anni fa
micdech
X 0 X

Ragazzi nessuno che mi prova a dire come farebbe?

(up) =)  :D

risposto 8 anni fa
micdech
X 0 X

dicci che problemi hai con il codice suddetto  :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

Ops, scusate  :D

Bene, il codice di sopra, ovviamente dava quasi sicuramente più righe nella prima istruzione, perchè giustamente cerca tutto dove il nome del gruppo è $name_group, o lo username_admin_group è uguale a $username. Quindi la ricerca si stende ipoteticamente anche ai campi dove corrispondono solo lo username o solo il nome del gruppo.

La seconda istruzione invece, è fatta tale che se cambio username posso inserire due gruppi con lo stesso nome, e questo non va bene, perchè come detto non ci possono essere due gruppi dal nome uguale...

Cmq ieri notte ho fatto questa soluzione qui:

$query_group = "Select * FROM groups WHERE name_group = '$name_group' OR username_admin_group = '$username'";
   $result_group = mysql_query($query_group, $db);
   $row = mysql_fetch_array($result_group);
      //{
      if      (in_array($username, $row))
         {
         echo "Attenzione: Tu ".$username." hai già creato un gruppo!";
         }
      elseif   (in_array($name_group, $row))
         {
         echo "Attenzione: gruppo ".$name_group." già esistente!";
         }
      else{
         echo "mi preparo a creare un nuovo gruppo <br />";
         $add_group = mysql_query("INSERT INTO `groups` ( name_group, id_admin_group, username_admin_group) VALUES ( '$name_group', '$id_user', '$username')");
         if(!$add_group)
            {
            echo "problema nella creazione del nuovo gruppo!";
            }else
            {
            echo "nuovo gruppo creato";
            }
         }
      //}
   }

Anzitutto, è giusto che io scorra il risultato con while (come avevo fatto inizialmente, perchè altrimenti la ricerca si ferma alla prima riga, o non si deve mettere il while, come sta fatto nell'esempio che vi ho postato?

Seconda cosa, ora il codice è un pò migliorato, ma, cosa strana, se posta lo stesso username, mettendo lo stesso nome per il gruppo, il codice fa l'insert nel DB, quindi salta isa l'if che l'elseif come se non trovasse nel'array ciò che ho specificato.

Probabilmente c'è ancora un bug, nel senso che non sono sicuro che l'elseif sul name_group lo esegue correttamente...

suggerimenti?  ;D

risposto 8 anni fa
micdech
X 0 X

ragazzi nessuno che mi da un'ideuccia?

Grazie e a presto...

risposto 8 anni fa
micdech
X 0 X

Considera il seguente codice solo come spunto:

$query_group = "Select * FROM groups WHERE name_group = '$name_group' OR username_admin_group = '$username'";
$result_group = mysql_query($query_group, $db);
$row = mysql_fetch_array($result_group);
// se abbiamo ottenuto un risultato allora c'è qualcosa che non va
if($row) {
   if($row['username_admin_group'] == $username) {
      echo "Attenzione: Tu ".$username." hai gi&agrave; creato un gruppo!";
      exit;
   }

   if($row['name_group'] == $name_group) {
      echo "Attenzione: gruppo ".$name_group." gi&agrave; esistente!";
      exit;
   }
}

echo "mi preparo a creare un nuovo gruppo <br />";

   
$add_group = mysql_query("INSERT INTO `groups` ( name_group, id_admin_group, username_admin_group) VALUES ( '$name_group', '$id_user', '$username')");

if(!$add_group) {
   echo "problema nella creazione del nuovo gruppo!";
} else {
   echo "nuovo gruppo creato";
}
risposto 8 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda