Joomla.it Forum

Non solo Joomla... => Database => : pupi93 27 Feb 2013, 18:27:56

: Update e Delete non funzionano su DB Joomla
: pupi93 27 Feb 2013, 18:27:56
Salve ragazzi! Spero possiate darmi una mano!
E' da un po' che cerco di eseguire delle semplicissime query SQL, ma non funzionano!


La prima dovrebbe aggiornare una riga di una tabella del database, dopo aver preso come chiave WHERE un valore da un form!


Ecco il codice:


:

<?php
$database 
=& JFactory::getDBO();
$stato JRequest::getVar('stat');
$codice JRequest::getVar('cod');


$sql "UPDATE avjos16_chronoforms_data_Gestione SET stato ='$stato' WHERE codice='$codice'";


$database->setQuery$sql );
if (!
$result $database->query()) 
    echo 
$database->stderr();
else
$database->query();
echo
"$sql";
?>


[size=78%]cod_eli sarebbe il name dell'edit text del form.[/size]

[size=78%]Questa invece è la query per l'eliminazione di un record:[/size]


:

<?php
$database 
=& JFactory::getDBO();


$sql "DELETE FROM  avjos16_chronoforms_data_Gestione  WHERE codice='".JRequest::getVar('cod_eli')."'";






$database->setQuery$sql );
if (!
$result $database->query()) 
    echo 
$database->stderr();
else
$database->query();
echo
"$sql";
?>



[size=78%]Sapete dirmi dove sbaglio? Per me sono corrette! Ma non funzionano![/size]
[size=78%]Help![/size]
[size=78%]Grazie[/size]
: Re:Update e Delete non funzionano su DB Joomla
: pupi93 27 Feb 2013, 19:57:47
Nessuno sa aiutarmi! :(
: Re:Update e Delete non funzionano su DB Joomla
: mau_develop 27 Feb 2013, 20:01:15
1) la sintassi della query è sbagliata ... ma non quella joomla... anche quella joomla ... i quotename....

2) se funzionasse ti bucherebbero il sito in 0 secondi

3) che ci fa quell'echo? ... visualizzi ciò che metti nella query non certo il risultato....
: Re:Update e Delete non funzionano su DB Joomla
: pupi93 27 Feb 2013, 20:32:23
Si va be ovvio! la echo l'ho messa lì per vedere se c'erano errori nella query! Non la lascio lì! ;D  Sarei un folle altrimenti!


Sai come posso creare una query funzionante e sicura per i due casi?
Grazie!
: Re:Update e Delete non funzionano su DB Joomla
: mau_develop 27 Feb 2013, 21:04:58
no, non hai capito ..non è l'echo che causa le vulnerabilità ma il mancato casting dei valori passati da un form o dalla get.

l'echo non serve a vedere i risultati te l'ho scritto.

Sai come posso creare una query funzionante e sicura per i due casi?
------------------------------------------------------------------------------------------------
Funzionante basta che guardi l'esatta sintassi
http://docs.joomla.org/Accessing_the_database_using_JDatabase/2.5

sicura basta che leggi quì
http://docs.joomla.org/Retrieving_and_Filtering_GET_and_POST_requests_with_JRequest::getVar
o così nella nuova plattform
http://docs.joomla.org/Retrieving_request_data_using_JInput
: Re:Update e Delete non funzionano su DB Joomla
: pupi93 27 Feb 2013, 21:14:03
Ok grazie! Darò un occhiata! :)
: Re:Update e Delete non funzionano su DB Joomla
: pupi93 27 Feb 2013, 21:35:31
Momentaneamente ho provato l'update con valori statici, senza essere presi dal form, ma non funge comunque




:

<?php
$db 
JFactory::getDbo();
 
$query $db->getQuery(true);


$fields = array(
    
'profile_value=\'Updating custom message for user 1001.\'',
    
'ordering=2');
 
// Conditions for which records should be updated.
$conditions = array(
    
'user_id=42'
    
'profile_key=\'custom.message\'');


$query->update($db->stat('avjos16_chronoforms_data_Gestione'))->set('Riparazione effettuata')->where('1234567');
 
$db->setQuery($query);
 
try {
    
$result $db->query(); // Use $db->execute() for Joomla 3.0.
} catch (Exception $e) {
    
// Catch the error.
}






Ritornando al discorso sicurezza, non andava bene perchè usavo il metodo get per l'acquisizione di variabili?
: Re:Update e Delete non funzionano su DB Joomla
: mau_develop 27 Feb 2013, 22:01:34
..ma dov'è che stai facendo queste query? ... in che file?

no, non hai capito ..non è l'echo che causa le vulnerabilità ma il mancato casting dei valori passati da un form o dalla get.
: Re:Update e Delete non funzionano su DB Joomla
: pupi93 27 Feb 2013, 22:07:18
sto usando il plugin chronoforms. Al suo interno posso inserire del codice php! Non so di preciso in quale file andrà a scrivere!
Penso quindi che andrà a scrivere su appositi file! Quindi penso che siano giusti!


Volevo sapere in oltre cosa è il parametro $db->quoteName
cioè al posto di quoteName cosa devo scrivere?


Sto tentando tutti i modi possibili per fare queste maledette query  >:(
Grazie per la disponibilità comunque :)

: Re:Update e Delete non funzionano su DB Joomla
: mau_develop 27 Feb 2013, 22:24:00
hai guardato nella sezione form dove si parla di chronoform?
: Re:Update e Delete non funzionano su DB Joomla
: pupi93 27 Feb 2013, 22:27:33
No, ma credo sia una questione di codice PHP! In fondo chronoforms mette a disposizione un layout grafico dove scrivere il proprio codice, con l'aiuto della grafica.



: Re:Update e Delete non funzionano su DB Joomla
: mau_develop 28 Feb 2013, 08:21:57
1)da dove vengono? dalla get o dal post?
2) che entità sono? ... numeri, stringhe, booleani.....
-------------------------------------------------------------
$stato = JRequest::getVar('stat');
$codice = JRequest::getVar('cod');

se apri una cartella models e guardi nel file "plurale" trovi l'esempio classico della select, come si fa a chiamare il db e a crearne un istanza; nel tuo caso non serve costruire l'array per poi passarlo, conviene passare i valori direttamente.
Se guardi sotto dove applica i filtri vedi anche come divide i "where" i "from" eccetera.
Io non so come funziona chronoform ma molte query in joomla sono semplificabili usando il CRUD di joomla... in pratica usando, quando si tratta dell'handling di un item, la table. esempio se uno volesse in un controller un record corrispondente ad un id basta il metodo getItem($cid) senza fare nessuna query.