warning: Invalid argument supplied for foreach() - Problema sviluppo codice form in tabella

4 contenuti / 0 new
Ultimo contenuto
warning: Invalid argument supplied for foreach() - Problema sviluppo codice form in tabella

warning: Invalid argument supplied for foreach() in D:\SERVERWEB\www\Siti_PHP\drupal-6.18ARCA24\modules\candidati\candidati.module on line 3228.

Sapreste dirmi dove sbaglio nello sviluppo di questo codice?

  ................hook theme impostato
  ................hook menu impostato
function candidati_show_candidativisible_admin() {
  $form['#submit'][] = 'candidati_show_candidativisible_admin_submit';
  $result = db_query("SELECT uid, username, cognome, nome, visible FROM {candidati}");
  //$query = "SELECT uid, username, cognome, nome, visible FROM {candidati}";
  //$result = pager_query($query, 50);
  while ($row = db_fetch_object($result)){
    $data = array($row->uid, $row->username, $row->cognome, $row->nome);
    $form['rows'][$row->uid]['data'] = array('#type' => 'value', '#value' => $data);
    $form['rows'][$row->uid]['visible-'.$row->uid] = array(
      '#type' => 'checkbox',
      '#default_value' => $row->visible,
    );
  }
  $form['submit']=array(
    '#type'=>'submit',
    '#value'=>t('Salva cambiamenti'),
  );
  $form['#theme'] = 'candidati_visible_admin_drawform';
  return $form;
}
function theme_candidati_visible_admin_drawform($form) {
  foreach($form['rows'] as $uid => $row){                          // <<<<-------------------------- riga 3228
    if (intval($uid)){
      $this_row = $row['data']['#value'];
      $this_row[] = drupal_render($form['rows'][$uid]['visible-'.$uid]);
      $table_rows[] = array('data'=>$this_row, 'class'=>'draggable');
    }
  }
  $header = array("ID", "Username", "Cognome", "Nome", "Visibile");
  $output .= theme('table', $header, $table_rows, array('id'=>'candidativisible-table'));
  //$output .= theme('pager', NULL, 50, 0);
  $output .= drupal_render($form);
  return $output;
}
function candidati_show_candidativisible_admin_submit($form, &$form_state) {
  foreach($form_state['values'] as $key => $data){
      $uid = str_replace('visible-', '', $key);
      db_query("UPDATE {candidati} SET visible=%d WHERE uid=%d", $data, $uid);
  }
}

Ciao,
nel mio caso di solito questo problema si propone quando l'array è vuoto, quindi io controllerei tramite phpmyadmin che le query che stai facendo sono corrette (Molte volte mi scordo delle virgole etc etc).
Seconda cosa farei un watchdog("debug",print_r( {array nelle funzioni} ,true),array(),WATCHDOG_NOTICE) e guarderei se gli array sono vuoti o meno.
Spero di esserti stato utile.

Ciao,
Aran

--
Il saggio non è colui che sa tutto, ma colui che sa dove trovare le risposte

Grazie per la risposta ma ora funziona cambiando la riga:

$table_rows[] = array('data'=>$this_row, 'class'=>'draggable');

con

$table_rows[] = array('data'=>$this_row);

Ciao

Meglio così :-)

--
Il saggio non è colui che sa tutto, ma colui che sa dove trovare le risposte