Jump to content
×
×
  • Create New...
  • 0

Quete MySql cherche fonction


Jinzo

Question

Version des fichiers/ Type d'émulateur : Metin 2

Domaine (Base de données, Client, Core...) : Files et Client 2016

Votre niveau (Débutant, Intermédiaire, Avancé..) : Intermédiaire

 

Description du problème : Recherche fonction Mysql_querry sur BDD

Comment reproduire le problème ? :

Recherches et tests effectués : Les meilleurs étant ici , pourquoi allez chercher ailleurs 😃

 

Screenshot du problème concerné :

 

En postant ma demande d'aide, j'affirme avoir lu et accepté le Règlement de Funky-Emulation.

 

Bonjour la communauté,

J'ai un code pour une quête qui fonctionne "bien" si une table existe dans la BDD

Mais ne fonctionne pas si la table n'éxiste pas dans la BDD

Voici mon code partiel :

			elseif s == 4 then
				say_title("Indiquez le nom de votre ami ! .")
				say("")
				local ami = input()
				local u_vid = find_pc_by_name(ami)
				if ami == "" then
					say("Vous devez indique un nom ! .")
					return
				end
				if u_vid==0 then
					say("L'ami indiqué est introuvable ! .")
					
					say_reward(" 1 : Soit il n'est pas connecté, ")
					say_reward(" 2 : Soit il ne ce trouve pas sur la même map")
					say_reward(" 3 : Soit vous avez mal indiqué son nom")
					say("")
					return
				else
					local controle = mysql_query("SELECT * FROM player.teleportation_bloquage WHERE teleportation_bloquage.amis='"..ami.."' AND teleportation_bloquage.pseudo='"..name.."'")
					if controle[1][3] == ami then
						say("Update la table")
						wait()
						if controle[1][4] == 1 then
							say_red(""..ami.." vous as bloqué il ne semble pas accepter")
							say_red("votre demande ! .")
							wait()
						elseif controle[1][4] == 0 then
							local warp = {pc.getx()*100,pc.gety()*100}
							local demande = confirm(u_vid , ""..pc.get_name().." aimerai vous téléportez , acceptez-vous ? ", 30)
							if demande == CONFIRM_OK then
								local accept = mysql_query("UPDATE player.teleportation_bloquage SET statut='0' WHERE pseudo='"..name.."' AND amis='"..ami.."'")
								local old = pc.select(u_vid)
								pc.warp(warp[1],warp[2])
								pc.select(old)
								say_reward("Votre ami(e) arrive .1 ")
							else
								local refus = mysql_query("UPDATE player.teleportation_bloquage SET statut='1' WHERE pseudo='"..name.."' AND amis='"..ami.."'")
								say_title("Erreur")
								say("")
								say_red("Votre ami a refusé ou est inactif. ")
							end
						end
					else
						say("Insert une nouvelle table")
						wait()
						if controle[1][4] == 1 then
							say_red(""..ami.." vous as bloqué il ne semble pas accepter")
							say_red("votre demande ! .")
							wait()
						elseif controle[1][4] == 0 then
							local warp = {pc.getx()*100,pc.gety()*100}
							local demande = confirm(u_vid , ""..pc.get_name().." aimerai vous téléportez , acceptez-vous ? ", 30)
							if demande == CONFIRM_OK then
								local accept = mysql_query("INSERT INTO player.teleportation_bloquage (pseudo, amis, statut) VALUES ('"..name.."', '"..ami.."', '0');")
								local old = pc.select(u_vid)
								pc.warp(warp[1],warp[2])
								pc.select(old)
								say_reward("Votre ami(e) arrive .1 ")
							else
								local refus = mysql_query("UPDATE player.teleportation_bloquage SET statut='1' WHERE pseudo='"..name.."' AND amis='"..ami.."'")
								say_title("Erreur")
								say("")
								say_blue("Votre ami a refusé ou est inactif. ")
							end
						end
					end
				end
			elseif s == 5 then

La partie BDD :

SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `teleportation`
-- ----------------------------
DROP TABLE IF EXISTS `teleportation_bloquage`;
CREATE TABLE `teleportation_bloquage` (
  `num` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `pseudo` varchar(32) NOT NULL DEFAULT '',
  `amis` varchar(32) NOT NULL DEFAULT '',
  `statut` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`num`,`pseudo`,`amis`,`statut`)
) ENGINE=MyISAM AUTO_INCREMENT=43 DEFAULT CHARSET=latin1;

Mon souci est la présence ou non de la table , quelle est la commande Mysql pour exucuter une action si la table est rempli ou faire une autre action si la table est vide ?

il commence ici :

					local controle = mysql_query("SELECT * FROM player.teleportation_bloquage WHERE teleportation_bloquage.amis='"..ami.."' AND teleportation_bloquage.pseudo='"..name.."'")
					if controle[1][3] == ami then

J'ai essayé divers codes , mais sans résultats concluant .

Je vous remercie d'avance pour le temps que vous m'accorderez .

Link to comment

5 answers to this question

Recommended Posts

  • 0
  • Modérateur

La question est : pourquoi ne veux-tu pas créer la table en amont ?

 

Si vraiment tu y tiens tu peux tester si la requête retourne quelque chose avant de faire quoi que ce soit

local controle = mysql_query("SELECT * FROM player.teleportation_bloquage WHERE teleportation_bloquage.amis='"..ami.."' AND teleportation_bloquage.pseudo='"..name.."'")

if controle == nil or controle[1] == nil then
	syschat("La requête MySQL n'a retourné aucun résultat.")
else
	-- le reste de ton code
end

 

  • J'adore 1
Link to comment
  • 0

Merci _Sufhal je teste ca et retourne vers toi pour te donner le retour.

 

édit :

 

Merci _Sufhal le code fonctionne , j'avais testé mais je me suis trompé j'avais mis != ....

PS : La table est déjà créer en amont , mais la fonction que j'avais ne fonctionnai pas car je n'arrivai pas a contrôler l'entrée vide , ce qui avait comme effet de ne rien faire étant donner qui n'avait pas de choix concret a sélectionner.

 

Sujet Résolu , merci

Edited by Jinzo
Link to comment
Guest
This topic is now closed to further replies.


Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.