the string var ":amsgs" has not value [Réglé]
Myster Membre non connecté
Booster Missile
- Booster Missile
- Voir le profil du membre Myster
- Inscrit le : 04/10/2010
- Groupes :
J'ai fait un module pour coupler mon chat au site, cependant je rencontre un problème j'ai cette erreur:
the string var ":amsgs" has not value
Lorsque je valide l'enregistrement d'un formulaire le champ dans la base de donner s'appelle kicker:amsgs peut-être que ça prend pas à cause des deux points mais je peux pas le changer, donc est-ce ça le problème ?
Voici le code pour la fonction save()
Code PHP :
$channel = $this->channel; $channel->set_kick_amsgs($this->form->get_value('amsgs')); $channel->set_kick_badwords($this->form->get_value('badwords')); $channel->set_kick_bolds($this->form->get_value('bolds')); $channel->set_kick_caps($this->form->get_value('caps')); $channel->set_kick_colors($this->form->get_value('colors')); $channel->set_kick_flood($this->form->get_value('flood')); $channel->set_kick_italics($this->form->get_value('italics')); $channel->set_kick_repeat($this->form->get_value('repeat')); $channel->set_kick_reverses($this->form->get_value('reverses')); $channel->set_kick_underlines($this->form->get_value('underlines')); ChannelService::update_settings_anope($channel);
La fonction update
Code PHP :
public static function update_settings_anope(Channel $channel) { self::$db_querier->update('anope_channelinfo', $channel->get_properties(), 'WHERE id=:id', array('id' => $channel->get_id())); }
Puis les getters et setters
Code PHP :
public function get_kick_amsgs(){return $this->kick_amsgs;} public function get_kick_badwords(){return $this->kick_badwords;} public function get_kick_bolds(){return $this->kick_bolds;} public function get_kick_caps(){return $this->kick_caps;} public function get_kick_colors(){return $this->kick_colors;} public function get_kick_flood(){return $this->kick_flood;} public function get_kick_italics(){return $this->kick_italics;} public function get_kick_repeat(){return $this->kick_repeat;} public function get_kick_reverses(){return $this->kick_reverses;} public function get_kick_underlines(){return $this->kick_underlines;} public function set_kick_amsgs(bool $amsgs){$this->kick_amsgs = $amsgs;} public function set_kick_badwords(bool $badwords){$this->kick_badwords = $badwords;} public function set_kick_bolds(bool $bolds){$this->kick_bolds = $bolds;} public function set_kick_caps(bool $caps){$this->kick_caps = $caps;} public function set_kick_colors(bool $colors){$this->kick_colors = $colors;} public function set_kick_flood(bool $flood){$this->kick_flood = $flood;} public function set_kick_italics(bool $italics){$this->kick_italics = $italics;} public function set_kick_repeat(bool $repeat){$this->kick_repeat = $repeat;} public function set_kick_reverses(bool $reverses){$this->kick_reverses = $reverses;} public function set_kick_underlines(bool $underlines){$this->kick_underlines = $underlines;}
Dans le set_properties j'ai bien mis cette ligne
Code PHP :
$this->kick_amsgs = $properties['kickerdata:amsgs'];
Et dans le get_properties un return array() avec ceci
Code PHP :
'kickerdata:amsgs' => $this->get_kick_amsgs(),
Merci de votre aide
Édité par Myster Le 27/11/2019 à 13h05
Myster Membre non connecté
Booster Missile
- Booster Missile
- Voir le profil du membre Myster
- Inscrit le : 04/10/2010
- Groupes :
Code PHP :
J'ai la même erreur donc je suis sûr que ça viens des deux-points, le soucis c'est comment je peux faire pour éviter ce problème sachant que je ne peux absolument pas modifier le nom de la colonne :Q
Édité par Myster Le 27/11/2019 à 13h47
j1.seth Membre non connecté
- Administrateur
- Voir le profil du membre j1.seth
- Inscrit le : 01/09/2008
- Site internet
- Groupes :
- Chef de Projet
- Equipe Développement
Myster Membre non connecté
Booster Missile
- Booster Missile
- Voir le profil du membre Myster
- Inscrit le : 04/10/2010
- Groupes :
Non ça ne fonctionne pas toujours cette même erreur: the string var ":amsgs" has not value
Myster Membre non connecté
Booster Missile
- Booster Missile
- Voir le profil du membre Myster
- Inscrit le : 04/10/2010
- Groupes :
Code PHP :
PersistenceContext::get_querier()->inject("UPDATE table_chat SET `kickerdata:amsgs` = 1 WHERE id= 1");
Ca fonctionne avec ` ` mais avec l'autre système même avec les caractères précents ça ne fonctionne pas, du tout,
Comment puis-je adapté le code ci-dessus avec la fonction suivante ? Parce que je vois pas comment faire là :/ Après au pire ça sera juste pour cette requête là mais bon si je trouve un moyen pour que ça fonctionne ça sera top
Code PHP :
public static function update_settings_anope(Channel $channel) { self::$db_querier->update('table_chat', $channel->get_properties(), 'WHERE id=:id', array('id' => $channel->get_id())); }
j1.seth Membre non connecté
- Administrateur
- Voir le profil du membre j1.seth
- Inscrit le : 01/09/2008
- Site internet
- Groupes :
- Chef de Projet
- Equipe Développement
Myster Membre non connecté
Booster Missile
- Booster Missile
- Voir le profil du membre Myster
- Inscrit le : 04/10/2010
- Groupes :
j1.seth Membre non connecté
- Administrateur
- Voir le profil du membre j1.seth
- Inscrit le : 01/09/2008
- Site internet
- Groupes :
- Chef de Projet
- Equipe Développement
Code PHP :
public static function update_settings_anope(Channel $channel) { $columns = $channel->get_properties(); $columns_definition = array(); foreach (array_keys($columns) as $column) { $columns_definition[] = $column . '="' . $columns[$column] . '"'; } self::$db_querier->inject("UPDATE table_chat SET " . implode(', ', $columns_definition) . " WHERE id= " . $channel->get_id()); }
Myster Membre non connecté
Booster Missile
- Booster Missile
- Voir le profil du membre Myster
- Inscrit le : 04/10/2010
- Groupes :
Edit, j'ai une erreur à l'enregistrement
Code LOG :
invalid query. (ERRNO 1064) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'officiel du réseau IRChat, founder=Myster, last_topic=Bienvenue sur le salon ' at line 1 query: UPDATE table_chat SET id=1, BS_FANTASY=1, BS_GREET=1, CS_SECURE=1, KEEPTOPIC=1, PEACE=1, SECUREFOUNDER=1, SIGNKICK=1, banexpire=0, bantype=2, description=Salon officiel du réseau IRChat, founder=Myster, last_topic=Bienvenue sur le salon de discussion, last_topic_setter=Myster, last_topic_time=1574768440, last_used=1574898831, memomax=20, name=#plop, time_registered=1573555326, CS_PRIVATE=1, bi=Aphrodite, capsmin=3, capspercent=0, floodlines=0, floodsecs=0, kickerdata:amsgs=1, kickerdata:badwords=1, kickerdata:bolds=1, kickerdata:caps=1, kickerdata:colors=1, kickerdata:flood=1, kickerdata:italics=1, kickerdata:repeat=1, kickerdata:reverses=1, kickerdata:underlines=1, repeattimes=0, ttb=0 0 0 0 15 0 0 0 0 0 , SECUREOPS=1, RESTRICTED=1 WHERE id= 1
Édité par Myster Le 28/11/2019 à 10h43
j1.seth Membre non connecté
- Administrateur
- Voir le profil du membre j1.seth
- Inscrit le : 01/09/2008
- Site internet
- Groupes :
- Chef de Projet
- Equipe Développement
Myster Membre non connecté
Booster Missile
- Booster Missile
- Voir le profil du membre Myster
- Inscrit le : 04/10/2010
- Groupes :
Code LOG :
invalid query. (ERRNO 1064) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ':amsgs="1", kickerdata:badwords="1", kickerdata:bolds="1", kickerdata:caps="1", ' at line 1
Du coup j'ai rajouté les signes bizarres
Code PHP :
public static function update_settings_anope(Channel $channel) { $columns = $channel->get_properties(); $columns_definition = array(); foreach (array_keys($columns) as $column) { $columns_definition[] = '`'.$column.'`' . '=' . '"'.$columns[$column].'"'; } self::$db_querier->inject("UPDATE table_chat SET " . implode(', ', $columns_definition) . " WHERE id= " . $channel->get_id()); }
Et là ça fonctionne, mais tu confirmes que c'est bien ça qu'il fallait faire ? En tout cas merci pour ta précieuse aide, depuis hier matin j'étais en galère dessus :')
Édité par Myster Le 28/11/2019 à 11h08
j1.seth Membre non connecté
- Administrateur
- Voir le profil du membre j1.seth
- Inscrit le : 01/09/2008
- Site internet
- Groupes :
- Chef de Projet
- Equipe Développement
Myster Membre non connecté
Booster Missile
- Booster Missile
- Voir le profil du membre Myster
- Inscrit le : 04/10/2010
- Groupes :
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie