Aggiungere il valore di un field nella clausola WHERE

2 contenuti / 0 new
Ultimo contenuto
Aggiungere il valore di un field nella clausola WHERE

Ciao a tutti,
ho due tipi di contenuto: CLUB e SOCI. Il tipo di contenuto CLUB ha il campo STATO_CLUB mentre il tipo di contenuto SOCI ha il campo STATO_SOCI. Tutti e due i campi sono del tipo Elenco(Testo) con due valori possibili: ATTIVO - NON ATTIVO

Quando un utente crea il proprio club il campo STATO_CLUB viene impostato di default su NON ATTIVO.

Quando un utente inserisce almeno 10 SOCI, appartenenti al suo CLUB, con il campo STATO_SOCI impostato su ATTIVO in automatico anche il campo STAO_CLUB deve essere impostato su ATTIVO.

Tramite il modulo RULES ho impostato una regola e tra le varie azioni possibili c'è ESECUZIONE DI PHP e con questo codice....

global $user;
$result = db_query("SELECT COUNT(nid) FROM node JOIN users ON node.uid = users.uid WHERE node.status = :status AND users.uid = :uid AND node.type = :type", array(":status"=> 1, ":uid" => $user->uid, ":type" => 'soci'))->fetchField();
if ($result >= 10){
return TRUE;
}
else{
return FALSE;
}

...riesco a contare quanti nodi ha creato un utente del tipo SOCI.

Ma come faccio a impostare che deve contare solo quelli dove il campo STATO_SOCI è uguale a ATTIVO ?

Drupal Version:

Ragazzi sono riuscito a trovare la soluzione. La posto, magari è utile a qualcuno...

All'interno di una regola creata con il modulo RULES, nella sezione CONDIZIONI inserite il seguente codice

global $user;
$result = db_query("SELECT COUNT(nid) FROM node JOIN users ON node.uid = users.uid JOIN field_data_FIELD_MACHINE_NAME ON field_data_FIELD_MACHINE_NAME.entity_id = node.nid WHERE node.status = :status AND users.uid = :uid AND field_data_FIELD_MACHINE_NAME.FIELD_MACHINE_NAME_value = :value AND node.type = :type", array(":status"=> 1, ":uid" => $user->uid, ":value" => 'ACTIVE', ":type" => 'article'))->fetchField();
  if ($result >= 1){
    return TRUE;
  }
  else{
    return FALSE;
  }

Tramite questo codice si riesce a contare il numero di nodi ti tipo ARTICLE dove il FIELD_MACHINE_NAME ha il valore "ACTIVE" che l'utente autenticato ha creato.
Se ha inserito più di un nodo il codice restituisce TRUE e va ad eseguire le ACTION impostate nella sezione AZIONI, altrimenti restituisce FALSE e non esegue nulla.