Back to top

Autore Topic: Update e Delete non funzionano su DB Joomla  (Letto 4796 volte)

Offline pupi93

  • Nuovo arrivato
  • *
  • Post: 14
    • Mostra profilo
Update e Delete non funzionano su DB Joomla
« il: 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:


Codice: [Seleziona]

<?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]


Codice: [Seleziona]

<?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]

Offline pupi93

  • Nuovo arrivato
  • *
  • Post: 14
    • Mostra profilo
Re:Update e Delete non funzionano su DB Joomla
« Risposta #1 il: 27 Feb 2013, 19:57:47 »
Nessuno sa aiutarmi! :(

mau_develop

  • Visitatore
Re:Update e Delete non funzionano su DB Joomla
« Risposta #2 il: 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....

Offline pupi93

  • Nuovo arrivato
  • *
  • Post: 14
    • Mostra profilo
Re:Update e Delete non funzionano su DB Joomla
« Risposta #3 il: 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!

mau_develop

  • Visitatore
Re:Update e Delete non funzionano su DB Joomla
« Risposta #4 il: 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

Offline pupi93

  • Nuovo arrivato
  • *
  • Post: 14
    • Mostra profilo
Re:Update e Delete non funzionano su DB Joomla
« Risposta #5 il: 27 Feb 2013, 21:14:03 »
Ok grazie! Darò un occhiata! :)

Offline pupi93

  • Nuovo arrivato
  • *
  • Post: 14
    • Mostra profilo
Re:Update e Delete non funzionano su DB Joomla
« Risposta #6 il: 27 Feb 2013, 21:35:31 »
Momentaneamente ho provato l'update con valori statici, senza essere presi dal form, ma non funge comunque




Codice: [Seleziona]

<?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?

mau_develop

  • Visitatore
Re:Update e Delete non funzionano su DB Joomla
« Risposta #7 il: 27 Feb 2013, 22:01:34 »
..ma dov'è che stai facendo queste query? ... in che file?

Citazione
no, non hai capito ..non è l'echo che causa le vulnerabilità ma il mancato casting dei valori passati da un form o dalla get.
« Ultima modifica: 27 Feb 2013, 22:04:30 da M_W_C »

Offline pupi93

  • Nuovo arrivato
  • *
  • Post: 14
    • Mostra profilo
Re:Update e Delete non funzionano su DB Joomla
« Risposta #8 il: 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 :)


mau_develop

  • Visitatore
Re:Update e Delete non funzionano su DB Joomla
« Risposta #9 il: 27 Feb 2013, 22:24:00 »
hai guardato nella sezione form dove si parla di chronoform?

Offline pupi93

  • Nuovo arrivato
  • *
  • Post: 14
    • Mostra profilo
Re:Update e Delete non funzionano su DB Joomla
« Risposta #10 il: 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.




mau_develop

  • Visitatore
Re:Update e Delete non funzionano su DB Joomla
« Risposta #11 il: 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.
« Ultima modifica: 28 Feb 2013, 08:23:59 da M_W_C »

 



Web Design Bolzano Kreatif