2011-01-05 6 views
0

Ich muss eine drupal Tabelle mit der Verknüpfung zum Löschen für jeden Datensatz erstellen. Ich habe eine vorhandene Tabelle mit den Bearbeitungslinks. Sie verwenden hook_menu, um die ID für den Datensatz zu übergeben und zum Kontaktformular umzuleiten. Wie kann ich diese Funktionalität erweitern, um die Bearbeitung hinzuzufügen? Code istDrupal Tabelle mit dem Löschen Link

function _MYMODULE_sql_to_table($sql) { 
    $html = "";  
    // execute sql 
    $resource = db_query($sql);  
    // fetch database results in an array 
    $results = array(); 
    while ($row = db_fetch_array($resource)) { 
    $results[] = $row; 
     $id = $row['id']; 
     $email = $row['email']; 
     $comment = $row['comment']; 
//  drupal_set_message('Email: '.$email. ' comment: '.$comment. ' id: '.$id); 
    } 
    // ensure results exist 
    if (!count($results)) { 
    $html .= "Sorry, no results could be found."; 
    return $html;  
    } 

    // create an array to contain all table rows 
    $rows = array(); 
    // get a list of column headers 
    $columnNames = array_keys($results[0]); 

    // loop through results and create table rows 
    foreach ($results as $key => $data) { 
    // create row data 
    $row = array(

     'edit' => l(t('Edit'),"admin/content/test/".$data['id']."/ContactUs", $options=array()), 
     'delete' => l(t('Delete'),"admin/content/".$data['id']."/ContactUs",$options = array()), 
     ); 

    // loop through column names 
    foreach ($columnNames as $c) { 
     $row[] = array(
     'data' => $data[$c], 
     'class' => strtolower(str_replace(' ', '-', $c)), 
    ); 
    } 

    // add row to rows array 
    $rows[] = $row; 

    } 

    // loop through column names and create headers 
    $header = array(); 
    foreach ($columnNames as $c) { 
    $header[] = array(
     'data' => $c, 
     'class' => strtolower(str_replace(' ', '-', $c)), 
    ); 
    } 

    // generate table html 
    $html .= theme('table', $header, $rows); 

    return $html; 

} 

// then you can call it in your code... 
function _MYMODULE_some_page_callback() { 

    $html = ""; 

    $sql = "select * from {contact3}"; 

    $html .= _MYMODULE_sql_to_table($sql); 

    return $html; 
} 

Antwort

0

Ich nehme an, Sie haben bereits ein Formular, um Ihre Daten zu erstellen (was auch immer es ist). Dann können Sie dieses Formular erweitern, um optional eine ID zu erhalten, und wenn es eine gibt, laden Sie die entsprechenden Daten, fügen Sie ein verstecktes (#type value) Formularelement hinzu, das die ID und die relevanten # default_value Einträge zu Ihrem Formular enthält. Dann müssen Sie in Ihrem Submit Callback herausfinden, ob Sie einen neuen Eintrag (keine ID) oder einen bestehenden haben und entsprechend handeln.

PS: Ich nehme an, Sie haben einen Grund, das Knotensystem nicht zu verwenden, dann wäre das schon vorhanden.

PPS: Ihr Code ist vollständig unlesbar, Sie sollten das neu formatieren.