Joomla.it Forum

Non solo Joomla... => Sviluppo => : chico_ 24 Aug 2014, 11:13:30

: Aggiornare i campi di un form dopo un submit [RISOLTO]
: chico_ 24 Aug 2014, 11:13:30
Buongiorno.
Ho il seguente problema:
ho creato una pagina in cui l'amministratore puo' selezionare un record da una tabella del database (tramite combobox) per poi eliminarlo alla pressione di un tasto "submit". Il record viene correttamente eliminato dal database, ma il record eliminato rimane comunque nella combobox a meno che non si faccia il refresh della pagina.
Ecco il codice che ho usato:
:
<?php


// No direct access
defined'_JEXEC' ) or die( 'Restricted access' );


//recupero dati
$values $_POST['values'];
//--costruisco il form ***********
?>

<form name="names" id="names" action="<?php echo JURI::current(); ?>" method="post" >
<?php
//START Carico dati ********************************************
$db =& JFactory::getDBO();
$query "SELECT id FROM `#__test` order by id";
$db->setQuery($query);
$nomes $db->loadColumn();


echo
'<div style="width:230px;float:left;">Selezionare item da eliminare<>';
echo 
'<select name="values">';
foreach(
$nomes as $value){
echo 
'<option value="'.$value.'">'.$value.'</option>'."\n";
}
echo 
'</select>[br /]';
//END Carico dati ********************************************
?>

<p><input id="submit" name="submit" type="submit" value="Submit " /></p>
</form>
<?php
if ($values!=""){
//START Elimina record ********************
$db JFactory::getDbo(); 
 
$query $db->getQuery(true); 
 
$query->delete($db->quoteName('#__test')) 
       ->
where(array($db->quoteName('id') . '='.$values)); 
 
$db->setQuery($query); 
 
$result $db->execute(); 
} else {
//
}
//END Elimina record ********************
?>




Ho provato anche a togliere l'action dal form, ma il problema rimane.


(PHP 5.5.11, Joomla 3.3.3, il codice è inserito in un articolo con il plugin  Sourcerer)


Qualche idea?


Grazie


Chico_
: Re:Aggiornare i campi di un form dopo un submit
: mmleoni 25 Aug 2014, 12:36:07
sposta la query di selezione dopo quella di rimozione del record, altrimenti continuerai a vedere i records.

ps: stai prendendo un dato dal canale post e lo stai passando così come è al server db: non è una cosa saggia  :-X

ciao,
marco
: Re:Aggiornare i campi di un form dopo un submit
: chico_ 25 Aug 2014, 14:21:11
Grazie mille.
In merito alla tua giusta osservazione in merito alla sicurezza dell $_POST, a tuo avviso è corretto sostituire il codice  con cui passo i dati con:
:
$values =JRequest::getInt('values');


?


Chico
: Re:Aggiornare i campi di un form dopo un submit
: mmleoni 25 Aug 2014, 14:30:18
ok per getInt(), ma con J3 e php5.5 è da usare JInput (http://docs.joomla.org/Retrieving_request_data_using_JInput).

ciao
: Aggiornare i campi di un form dopo un submit
: chico_ 25 Aug 2014, 16:46:17

Grazie mille delle indicazioni, Marco.
Ho aggiustato il codice come da indicazioni, funziona perfettamente (non che ne dubitassi.... ;) )
Nel caso possa servire a qualcuno posto il codice modificato :
:
<?php
// No direct access
defined'_JEXEC' ) or die( 'Restricted access' );


// START recupero dati
$jInput JFactory::getApplication()->input;
$values $jInput->get('values'0'INT');
// END recupero dati


if ($values!=""){
//START Eventuale eliminazione record ********************
$db JFactory::getDbo(); 
$query $db->getQuery(true); 
$query->delete($db->quoteName('#__test')) 
->
where(array($db->quoteName('id') . '='.$values)); 
$db->setQuery($query); 
$result $db->execute(); 
} else {
//
}
//END Eventuale eliminazione record ********************
?>



<!-- START costruzione form ************************************ -->
<form name="names" id="names" action="<?php echo JURI::current(); ?>" method="post" >
<?php
//START Carico dati ********************************************
$db =& JFactory::getDBO();
$query "SELECT id FROM `#__test` order by id";
$db->setQuery($query);
$nomes $db->loadColumn();
echo
'<div style="width:230px;float:left;">Selezionare item da eliminare<>';
echo 
'<select name="values">';
foreach(
$nomes as $value){
echo 
'<option value="'.$value.'">'.$value.'</option>'."\n";
}
echo 
'</select>[br /]';
//END Carico dati ********************************************
?>

<p><input id="submit" name="submit" type="submit" value="Submit " /></p>
</form>
<!-- END costruzione form ************************************ -->


Grazie ancora


Chico_