Forum CMS Made Simple FR
[RESOLU] problème de requête dans UDT - Version imprimable

+- Forum CMS Made Simple FR (https://forum.cmsmadesimple.fr)
+-- Forum : Général (https://forum.cmsmadesimple.fr/forum-3.html)
+--- Forum : Modules, Tags (https://forum.cmsmadesimple.fr/forum-14.html)
+--- Sujet : [RESOLU] problème de requête dans UDT (/thread-2095.html)



[RESOLU] problème de requête dans UDT - snatch1974 - 14/07/2012

Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: #1.10.3
#~ Url du site : www.nextride.eu
#~ Hébergeur / Soft : planethoster
#~ Informations Système :
#~ ----------------------------------------------
#~ Cms Version: 1.10.3
#~ Installed Modules:
#~ CMSMailer: 2.0.2
#~ CMSPrinting: 1.0
#~ FileManager: 1.2.0
#~ MenuManager: 1.7.7
#~ MicroTiny: 1.1.1
#~ ModuleManager: 1.5.3
#~ News: 2.12.3
#~ Search: 1.7
#~ ThemeManager: 1.1.4
#~ CGExtensions: 1.29.1
#~ FrontEndUsers: 1.17.6
#~ SelfRegistration: 1.6.16
#~ CustomContent: 1.8.3
#~ CGSmartImage: 1.9
#~ CGSimpleSmarty: 1.5.1
#~ JQueryTools: 1.0.10
#~ Products: 2.18.2
#~ CGContentUtils: 1.3.2
#~ CGGoogleMaps: 2.3.1
#~ Cron: 0.0.4
#~ CGEcommerceBase: 1.3.11
#~ FormBuilder: 0.7.2
#~ TinyMCE: 2.9.9
#~ Skeleton: 1.8.1
#~ Config Information:
#~ php_memory_limit:
#~ process_whole_template: false
#~ output_compression: false
#~ max_upload_size: 6000000
#~ default_upload_permission: 664
#~ url_rewriting: mod_rewrite
#~ page_extension: .html
#~ query_var: page
#~ image_manipulation_prog: GD
#~ auto_alias_content: true
#~ locale:
#~ default_encoding: utf-8
#~ admin_encoding: utf-8
#~ set_names: true
#~ Php Information:
#~ phpversion: 5.3.13
#~ md5_function: On (Vrai)
#~ gd_version: 2
#~ tempnam_function: On (Vrai)
#~ magic_quotes_runtime: Off (Faux)
#~ E_STRICT: 0
#~ E_DEPRECATED: 0
#~ memory_limit: 256M
#~ max_execution_time: 30
#~ output_buffering: On
#~ safe_mode: Off (Faux)
#~ file_uploads: On (Vrai)
#~ post_max_size: 64M
#~ upload_max_filesize: 128M
#~ session_save_path: /var/lib/sessionsphp (1777)
#~ session_use_cookies: On (Vrai)
#~ xml_function: On (Vrai)
#~ Server Information:
#~ Server Api: litespeed
#~ Server Db Type: MySQL (mysql)
#~ Server Db Version: 5.1.63
#~ ----------------------------------------------
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~


Pour une messagerie interne faite à l'aide d'UDT, j'utilise une requête qui me retourne une erreur incomprehensible pour moi:

Code :
[== PHP ==]
if($_POST['message']){
            
              foreach ($_POST['message'] as $id => $msg_id){

                 $q_verif = "SELECT M.del_user FROM cms_chat_messages AS M WHERE M.message_id = ?";
                 $verif = $db->GetOne($q_verif, array($msg_id));
                  
                 echo '<br> verif = '.$verif;
                
                 if($verif == 0){

                    $q_message_del = "UPDATE cms_chat_messages AS M SET M.del_user = ? WHERE M.message_id = ?";
                    $message_del = $db->Execute($q_message_del, array($user_id,$msg_id));

                       if(!$message_del){echo 'ERROR: '.$db->sql.'<br/>'.$db->ErrorMsg();}

                 }
                 else{

                    $q_messsage_del = " DELETE FROM cms_chat_messages AS M WHERE M.message_id = ?";
                    $message_del = $db->Execute($q_message_del, array($msg_id));

                       if(!$message_del){echo 'ERROR: '.$db->sql.'<br/>'.$db->ErrorMsg();}

                 }

              }

           }

le problème vient du select...

"message_id" étant auto-incrémenté, il est forcément unique.
"del_user" est un chiffre, qui a 0 par défaut et peut prendre l'id d'un utilisateur.

j'ai mis un echo après la reqête pour vérifier la réponse.

lorsque j'execute la requête, le résultat affiché par l' echo est:


verif = 11ERROR: SELECT M.del_user FROM cms_chat_messages AS M WHERE M.message_id = '265' LIMIT 1


1° pourquoi cette erreur?
2° d'où sort ce message puisqu'il n'y a pas de gestion de l'erreur sur le select?


j'avais mis une gestion de l'erreur au préalable que j'ai supprimé pourrais-ce être une histoire de cache, sachant que j'ai vidé le cache de cmsms et de mon navigateur?


[RESOLU] problème de requête dans UDT - snatch1974 - 15/07/2012

Ne trouvant pas d'où pourrait venir le soucis, j'ai changé de sytème avec cette fois l'utilisation de l'array dans la requête et c'est pt'être mieux ... en tout cas, ça fonctione!

Code :
[== PHP ==]
if($_POST['message']){

               $messages = join(" , ", $_POST['message']);

               $count_msg = count($_POST['message']);            

               $q_count_del = "SELECT COUNT(message_id) FROM cms_chat_messages WHERE message_id IN (".$messages.") AND del_user > 0";
               $count_del = $db->GetOne($q_count_del);

               if($count_del > 0){

                  $q_message_del = "DELETE FROM cms_chat_messages WHERE message_id IN (".$messages.") AND del_user > 0";
                     $message_del = $db->Execute($q_message_del);
                        if(!$message_del){echo 'ERROR1: '.$db->sql.'<br/>'.$db->ErrorMsg();}

               }

               if($count_del < $count_msg){

                  $q_message_update = "UPDATE cms_chat_messages SET del_user = ".$user_id." WHERE message_id IN (".$messages.") AND del_user = 0";
                     $message_update = $db->Execute($q_message_update);
                        if(!$message_update){echo 'ERROR2: '.$db->sql.'<br/>'.$db->ErrorMsg();}

               }


           }