Cancellare record da un database

6 contenuti / 0 new
Ultimo contenuto
Cancellare record da un database

Ho creato una pagina che lista un insieme di record in una tabella. Vorrei mettere vicino ad ogni record un link con scritto cancella che mi cancellasse proprio quel record.
Cercando sul web ho provato a fare una cosa cosi ma che non funge:

<?php
while ($row = db_fetch_array($interrogazionesql))
      {
$stringa.='<tr > <td width="25%"> ';//creo la riga e la prima colonna
      
$stringa.= $row['nome'] . ' </td>';//chiudo la prima colonna
      
$stringa.='<td>';//apro la colonna
      
$stringa.="<a href='?q=prova_risposta_prima/delete/{$row['nome']}'>cancella </a>";
      
$stringa.='</td>';//chiudo la colonna
      //  drupal_set_message(prova_form_crea2($row['nome']));
      
$stringa.='</tr>'; //chiudo la riga
     
}
?>

Prima di tutto ho messo un link vicino all'elemento in questa maniera   $stringa.="<a href='?q=prova_risposta_prima/delete/{$row['nome']}'>cancella </a>";

poi ho provato a creare una pagina prova_risposta_prima/delete/ che avesse come parametro $row['nome'] in questa maniera

<?php
    $items
['prova_risposta_prima/delete/%identificatore'] = array(
   
'title' => t('Delete item'),
   
'page callback' => 'drupal_get_form',
   
'page arguments' => array('item_delete_confirm', 2),
   
'access arguments' => array('access prova_form'),
   
'type' => MENU_CALLBACK,
  );
?>

ma mi dice che la pagina non esiste.
Potreste mica postarmi un esempio di come fare?
Grazie

Ho poi fatto in un altra maniera ma non mi sembra un buon metodo. Se mi fate sapere mi fate un grosso piacere. Vi posto come ho fatto.

<?php
while ($row = db_fetch_array($interrogazionesql))
      {
$stringa.='<tr > <td width="25%"> ';//creo la riga e la prima colonna
      
$stringa.= $row['nome'] . ' </td>';//chiudo la prima colonna
      
$stringa.='<td>';//apro la colonna
      
$stringa.="<a href='?q=delete&nome={$row['nome']}'>cancella </a>";
      
$stringa.='</td>';//chiudo la colonna
      //  drupal_set_message(prova_form_crea2($row['nome']));
      
$stringa.='</tr>'; //chiudo la riga
     
}
?>

poi

<?php
function  prova_form_menu()
 {
  
$items = array();
 
$items['prova_form'] = array(
   
'title' => 'provaform',
   
'page callback' => 'prova_form_prima',
   
'access arguments' => array('access prova_form'),
   
'type' => MENU_CALLBACK
 
);
 
////////////////////AGGIUNTO///////
   
$items['prova_risposta'] = array(
   
'title' => 'prova risposta',
   
'page callback' => 'prova_risposta_prima',
   
'access arguments' => array('access prova_form'),
   
'type' => MENU_CALLBACK
 
);
$items['delete'] = array(
   
'title' => t('Delete item'),
   
'page callback' => 'cancella',
   
'access arguments' => array('access prova_form'),
   
'type' => MENU_CALLBACK,
  );
 
//////////////////////////////////////
 
return $items  ;
 }
function
cancella()
 {
$stringa='delete from prova where nome like  \''.$_REQUEST['nome'].'\'' ;
 
drupal_set_message($stringa);
 
db_query($stringa);
  
drupal_goto('prova_risposta');
 }
?>

Non ho usato le funzioni di drupal :(

Ciao, non ho ben presente perchè ti dia "page not found", ma dopo aver creato l'hook_menu() hai cancellato la cache ? Sembra che non Drupal non sappia della sua esistenza

Inoltre "%identificatore" dice a drupal che l'argomento deve essere trattato tramite identificatore_load().

M.

--
Michel 'ZioBudda' Morelli -- [email protected]
Sviluppo applicazioni CMS DRUPAL e web dinamiche -- Corsi Drupal -- Amministrazione Drupal -- Hosting Drupal

scusa se guardo solo ora ma ho lasciato un pò perdere. Non so se ho capito bene ma ho provato a fare quello che mi suggerivi ma continua a dirmi che la pagina non esiste. Ti posto il codice cosi mi sai dire cosa sbaglio.

<?php
     
// questo è il pezzo di codice dove creo  il link per andare nella nuova pagina
          
$stringa.='<td>';//apro la colonna
      
$stringa.="<a href='?q=prova_risposta_prima/delete/{$row['nome']}'>provoascrivere </a>";
      
$stringa.='</td>';//chiudo la colonna
?>

<?php
//questo è l'ulòtimo pezzo dell'hook menu e la funzione che viene chiamata prova
$items['prova_risposta_prima/delete/%identificatore'] = array(
   
'title' => t('Delete item'),
   
'page callback' => 'prova',
   
'access arguments' => array('access prova_form'),
   
'type' => MENU_CALLBACK,
  );
 
//////////////////////////////////////
 
return $items  ;
 }
 function
prova()
 {
 return
identificatore_load();
 }
?>

cliccando mi esce fuori il link seguente

.......portale/?q=prova_risposta_prima/delete/[email protected]

e mi dice che la pagina non esiste.
Ciao e grazie

Ciao, togli %identificatore dal $items e metti solo %

Prova un po'.

M.

--
Michel 'ZioBudda' Morelli -- [email protected]
Sviluppo applicazioni CMS DRUPAL e web dinamiche -- Corsi Drupal -- Amministrazione Drupal -- Hosting Drupal

Ho visto ora la tua risposta poi domani ci proverò grazie dinuovo