GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Xolokos le 18 Juin 2012, 15:39:50

Titre: Erreur MySQL
Posté par: Xolokos le 18 Juin 2012, 15:39:50
Salutation,
j'ai pris un FS MySQL register pour voir le fonctionnement j'ai donc fait ma base de donnée sur WAMP j'ai mit mon adresse IP (localhost 127.0.0.1) la base de donnée etc...
J'ai mit MySQL.dll dans plugins je les load.
Suite a un bug j'ai du mettre libmySQL.dll dans la racine du serveur.
Et une autre erreur que je n'arrive pas a résoudre :
Voici le screen :
(http://i.imgur.com/grCjA.png)

Et j'ai cherché mais pas trouvé une idée ?
Titre: Re : Erreur MySQL
Posté par: Ssk le 18 Juin 2012, 16:28:23
Télécharge une autre dll, celle ci ne contient pas la fonction mysql_set_character_set
Titre: Re : Erreur MySQL
Posté par: Xolokos le 18 Juin 2012, 17:03:12
Merci ça marche impect' !
Titre: Re : Erreur MySQL
Posté par: Xolokos le 22 Juin 2012, 23:31:13
[UP]

J'ai des error comme quoi la ligne est trop long alors que je veut créer une table si elle n'existe pas :
new Querry[500];
format(Querry, sizeof(Querry), "CREATE TABLE IF NOT EXISTS Comptes(Nom VARCHAR(24),Password VARCHAR(40), Niveau INT(20), Money INT(20), Level INT(20), Agilite INT(20), Endurance INT(20), Force INT(20), Etat INT(20), Rang INT(20), Medikit INT(20), Antidote INT(20), Bidon INT(20), Kitreparation INT(20), Medicament INT(20), Bandage INT(20), Cigarette INT(20), Alcool INT(20), Radio INT(20), PlaqueDeMetal INT(20), Detergent INT(20), Adhesif INT(20), Boi INT(20), Avertissement INT(20), Minute INT(20), Respect INT(20), Px INT(20), Py INT(20), Pz INT(20), ZPs INT(20), Skin INT(20), Faction INT(20), Sex INT(20), IP VARCHAR(15) )");
mysql_connect(SQL_HOST, SQL_USER, SQL_DB, SQL_PASS);
mysql_query(Querry);

Comment résoudre ça ?

C:\Users\Xolokos\Desktop\UPRP\gamemodes\UPRPSQL.pwn(700) : error 075: input line too long (after substitutions)
C:\Users\Xolokos\Desktop\UPRP\gamemodes\UPRPSQL.pwn(701) : error 037: invalid string (possibly non-terminated string)
C:\Users\Xolokos\Desktop\UPRP\gamemodes\UPRPSQL.pwn(701) : error 017: undefined symbol "CREATE"
C:\Users\Xolokos\Desktop\UPRP\gamemodes\UPRPSQL.pwn(701) : error 017: undefined symbol "TABLE"
C:\Users\Xolokos\Desktop\UPRP\gamemodes\UPRPSQL.pwn(701) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


5 Errors.

Merci ?
Titre: Re : Erreur MySQL
Posté par: Ssk le 23 Juin 2012, 12:46:05
Change la ligne de format en ça :

format(Querry, sizeof(Querry), "CREATE TABLE IF NOT EXISTS Comptes(Nom VARCHAR(24),Password VARCHAR(40), Niveau INT(20), " \
"Money INT(20), Level INT(20), Agilite INT(20), Endurance INT(20), Force INT(20), Etat INT(20), Rang INT(20), Medikit INT(20)," \
"Antidote INT(20), Bidon INT(20), Kitreparation INT(20), Medicament INT(20), Bandage INT(20), Cigarette INT(20), Alcool INT(20), " \
"Radio INT(20), PlaqueDeMetal INT(20), Detergent INT(20), Adhesif INT(20), Boi INT(20), Avertissement INT(20), Minute INT(20)," \
"Respect INT(20), Px INT(20), Py INT(20), Pz INT(20), ZPs INT(20), Skin INT(20), Faction INT(20), Sex INT(20), IP VARCHAR(15) )");
Titre: Re : Erreur MySQL
Posté par: Xolokos le 23 Juin 2012, 13:31:23
Toujours les même erreur ?

C:\Users\Xolokos\Desktop\UPRP\gamemodes\UPRPSQL.pwn(771) : error 075: input line too long (after substitutions)
C:\Users\Xolokos\Desktop\UPRP\gamemodes\UPRPSQL.pwn(772) : error 037: invalid string (possibly non-terminated string)
C:\Users\Xolokos\Desktop\UPRP\gamemodes\UPRPSQL.pwn(772) : warning 215: expression has no effect
C:\Users\Xolokos\Desktop\UPRP\gamemodes\UPRPSQL.pwn(772) : error 001: expected token: ";", but found "-identifier-"
C:\Users\Xolokos\Desktop\UPRP\gamemodes\UPRPSQL.pwn(772) : warning 215: expression has no effect
C:\Users\Xolokos\Desktop\UPRP\gamemodes\UPRPSQL.pwn(772) : error 001: expected token: ";", but found "-identifier-"
C:\Users\Xolokos\Desktop\UPRP\gamemodes\UPRPSQL.pwn(772) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase

J'ai fait ça au autre query mais toujours la même chose.
Titre: Re : Erreur MySQL
Posté par: cristab le 23 Juin 2012, 19:26:16
a mon avis ta variable et trop petite change new Querry[500]; en new Querry[1200]; pour voir
Titre: Re : Erreur MySQL
Posté par: Xolokos le 24 Juin 2012, 11:16:27
Toujours les même erreurs.
Titre: Re : Erreur MySQL
Posté par: Ssk le 24 Juin 2012, 11:22:53
Peux tu nous copier la ligne où est produite l'erreur ?
Titre: Re : Erreur MySQL
Posté par: Xolokos le 24 Juin 2012, 18:22:14
new Query[1200];
format(Query, sizeof(Query), "CREATE TABLE IF NOT EXISTS Comptes(Nom VARCHAR(24),Password VARCHAR(40), Niveau INT(20), " \
"Money INT(20), Level INT(20), Agilite INT(20), Endurance INT(20), Force INT(20), Etat INT(20), Rang INT(20), Medikit INT(20)," \
"Antidote INT(20), Bidon INT(20), Kitreparation INT(20), Medicament INT(20), Bandage INT(20), Cigarette INT(20), Alcool INT(20), " \// Error ici ( 734 )
"Radio INT(20), PlaqueDeMetal INT(20), Detergent INT(20), Adhesif INT(20), Boi INT(20), Avertissement INT(20), Minute INT(20)," \// Et la ( 735 )
"Respect INT(20), Px INT(20), Py INT(20), Pz INT(20), ZPs INT(20), Skin INT(20), Faction INT(20), Sex INT(20), IP VARCHAR(15) )");
mysql_connect(SQL_HOST, SQL_USER, SQL_DB, SQL_PASS);

Et les erreurs :

C:\Users\Xolokos\Desktop\UPRP\gamemodes\UPRPSQL.pwn(734) : error 075: input line too long (after substitutions)
C:\Users\Xolokos\Desktop\UPRP\gamemodes\UPRPSQL.pwn(735) : error 037: invalid string (possibly non-terminated string)
C:\Users\Xolokos\Desktop\UPRP\gamemodes\UPRPSQL.pwn(735) : warning 215: expression has no effect
C:\Users\Xolokos\Desktop\UPRP\gamemodes\UPRPSQL.pwn(735) : error 001: expected token: ";", but found "-identifier-"
C:\Users\Xolokos\Desktop\UPRP\gamemodes\UPRPSQL.pwn(735) : warning 215: expression has no effect
C:\Users\Xolokos\Desktop\UPRP\gamemodes\UPRPSQL.pwn(735) : error 001: expected token: ";", but found "-identifier-"
C:\Users\Xolokos\Desktop\UPRP\gamemodes\UPRPSQL.pwn(735) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


5 Errors.
Titre: Re : Erreur MySQL
Posté par: Xartrick le 25 Juin 2012, 16:50:37
Essaye de construire ta requête petit à petit.

new sQuery[640] = "";

format(sQuery, sizeof(sQuery), "CREATE TABLE IF NOT EXISTS Comptes(Nom VARCHAR(24), Password VARCHAR(40), Niveau INT(20), Money");
format(sQuery, sizeof(sQuery), "%s INT(20), Level INT(20), Agilite INT(20), Endurance INT(20), Force INT(20), Etat INT(20),",   sQuery);
format(sQuery, sizeof(sQuery), "%s Rang INT(20), Medikit INT(20), Antidote INT(20), Bidon INT(20), Kitreparation INT(20),",     sQuery);
format(sQuery, sizeof(sQuery), "%s Medicament INT(20), Bandage INT(20), Cigarette INT(20), Alcool INT(20), Radio INT(20),",     sQuery);
format(sQuery, sizeof(sQuery), "%s PlaqueDeMetal INT(20), Detergent INT(20), Adhesif INT(20), Boi INT(20), Avertissement"),     sQuery);
format(sQuery, sizeof(sQuery), "%s INT(20), Minute INT(20), Respect INT(20), Px INT(20), Py INT(20), Pz INT(20), ZPs INT(20),", sQuery);
format(sQuery, sizeof(sQuery), "%s Skin INT(20), Faction INT(20), Sex INT(20), IP VARCHAR(15))",                                sQuery);
Titre: Re : Erreur MySQL
Posté par: Ssk le 25 Juin 2012, 16:58:13
Je trouve que la fonction format n'est pas du tout adapter à ce genre d'utilisation, je préfère utiliser la fonction
strcat (string concat) qui elle est dédiée exclusivement à ce besoin.



// Il faut absolument initialiser avec un nulbyte pour que strcat fonctionne bien
new sQuery[640] = "";

strcat(sQuery, "CREATE TABLE IF NOT EXISTS Comptes(Nom VARCHAR(24), Password VARCHAR(40), Niveau INT(20), Money");
strcat(sQuery, "INT(20), Level INT(20), Agilite INT(20), Endurance INT(20), Force INT(20), Etat INT(20),");
strcat(sQuery, "Rang INT(20), Medikit INT(20), Antidote INT(20), Bidon INT(20), Kitreparation INT(20),");
strcat(sQuery, "Medicament INT(20), Bandage INT(20), Cigarette INT(20), Alcool INT(20), Radio INT(20),");
strcat(sQuery, "PlaqueDeMetal INT(20), Detergent INT(20), Adhesif INT(20), Boi INT(20), Avertissement");
strcat(sQuery, "INT(20), Minute INT(20), Respect INT(20), Px INT(20), Py INT(20), Pz INT(20), ZPs INT(20),");
strcat(sQuery, "Skin INT(20), Faction INT(20), Sex INT(20), IP VARCHAR(15))");


Sinon, je ne comprends pas du tout pourquoi mon code te donne une erreur, il faudrai se documenter sur le pdf officiel du langage.
Titre: Re : Erreur MySQL
Posté par: Xartrick le 27 Juin 2012, 21:15:10
Pas bête, je n'y avait pas pensé, je pense toujours que le Pawn est un langage simple qui n'inclut pas ces fonctions...
Titre: Re : Erreur MySQL
Posté par: Xolokos le 07 Juillet 2012, 21:53:43
Excuser du retard mais cela ne marche toujours pas ça ne créer pas la table et les colonnes.
Je vais réessayer.

J'en profite : Puisque que SAMP a une include HTTP on peut envoyer des requêtes HTTP ?
Titre: Re : Erreur MySQL
Posté par: Xartrick le 07 Juillet 2012, 21:57:02
Le code compile correctement ?
Si oui, il doit y avoir une fonction type
mysql_error pour voir la dernière erreur.
Cela va surement t'aider.
Titre: Re : Re : Erreur MySQL
Posté par: Ssk le 07 Juillet 2012, 22:55:02
Excuser du retard mais cela ne marche toujours pas ça ne créer pas la table et les colonnes.
Je vais réessayer.

J'en profite : Puisque que SAMP a une include HTTP on peut envoyer des requêtes HTTP ?

Oui, on peut faire des requêtes POST ainsi que GET
Titre: Re : Erreur MySQL
Posté par: Xolokos le 08 Juillet 2012, 11:41:08
Citer
POST ainsi que GET
Dommage, je devrais malgrès tout passer en SQL.
PS : Marche toujours pas ca ne créer même plus la table.
Titre: Re : Erreur MySQL
Posté par: Xolokos le 13 Juillet 2012, 18:26:00
J'ai décider d'enregistrer une seul variable en SQL et tout marche ni quel grâce au tutoriels que j'ai lu.
Maintenant il faut que je fasse une page de 'boutique', comment faire en PHP j'ai enregistrer le nom et la variable que je veux augmenter quand un code est valider pour augmenter sa variable.
Il faut donc une case pour mettre le nom et ensuite une page pour faire des code allopass.
Merci pour votre aide !
Titre: Re : Erreur MySQL
Posté par: Xartrick le 13 Juillet 2012, 20:48:16
Tu dois utiliser le script fourni par le système de micro-paiement.

Après, pour un système complet pour la gestion, c'est un gros travail si tu veux quelque-chose de propre, simple et sécurisé, et ça, c'est un autre problème.
Néanmoins, je peux aider.
Titre: Re : Erreur MySQL
Posté par: Xolokos le 13 Juillet 2012, 22:25:38
Donc j'ai déjà le script de micro-paiement.
Donc il faut que je fasse une case pour que le joueur ce log avec son nom (sans mot de passe).
Donc :
<form method = "post" action = "">
Nom:<br><input type = "text" name = "Nom IG"><br>
<input type = "submit" name = "login" value = "Connexion">
</form>
Ensuite j'ai mis les config' de connexion :
<?php
$Connection 
mysql_connect('localhost''root''') or die(mysql_error());
mysql_select_db('comptes'$Connection) or die(mysql_error());
?>
Pour éviter de tout renoter.
Ensuite j'ai fais :
<html>
<title>Comptes Control Panel</title>
<body align = "center">
<font face = "Verdana">
<?php

include('config.php');

session_start();

if(isset(
$_POST['Nom']))
{
echo("Bonjour, " $_POST['Nom'] . ", bienvenue sur la boutique !<br>");
$NomJoueur mysql_real_escape_string($_POST['Nom']);
$Query mysql_query("SELECT * FROM Comptes WHERE Nom = 'Nom'") or die(mysql_error());
}

?>


<form method = "post" action = "">
Nom:<br><input type = "Nom" name = "Nom"><br>
<input type = "submit" name = "Entrer" value = "Login">
</form>
</font>
</body>
</html>

Donc la on si la case est remplie on prend le nom.
On fait une variable pour éviter de tout récrire.
Et la je coince...
Help ?

EDIT : J'ai mis a jour besoin d'aide pour sortir mes 2 varaibles ZPs et VIP.
Merci.

Voilà j'ai réussie mais maintenant Xartrick je ne sais pas comment utiliser la fenêtre de micro-paiement pour incrémenter ma variable.
Le code PHP :

<html>
<title>Comptes Control Panel</title>
<body align = "center">
<font face = "Verdana">
<?php

include('config.php');

session_start();

if(isset(
$_POST['Nom']))
{
echo("Bonjour, " $_POST['Nom'] . ", bienvenue sur la boutique !<br>");
$NomJoueur mysql_real_escape_string($_POST['Nom']);
$Query mysql_query("SELECT * FROM Comptes WHERE Nom = '$NomJoueur'") or die(mysql_error());
$Rows mysql_num_rows($Query);
if($Rows)
{
$Fetch mysql_fetch_assoc($Query);
$ZPs $Fetch['ZPs'];
$VIP $Fetch['VIP'];

$_SESSION['Nom'] = $NomJoueur;

echo "$NomJoueur<br>";
echo "ZP : $ZPs<br>";
echo "VIP$VIP<br>";
}
else
{
echo "Erreur 1.<br>";
echo "$NomJoueur<br>";
}
}

?>


<form method = "post" action = "">
Nom:<br><input type = "Nom" name = "Nom"><br>
<input type = "submit" name = "Entrer" value = "Login">
</form>
</font>
</body>
</html>
Titre: Re : Erreur MySQL
Posté par: Xartrick le 14 Juillet 2012, 14:00:02
Essaye de voir du côté d'IPN (Instant Payment Notification).
Titre: Re : Erreur MySQL
Posté par: Xolokos le 14 Juillet 2012, 18:32:27
Donc la je renvoie le joueur sur une page protégé mais je ne sais pas incrémenter la variable j'ai fait ça :
(Le boutique.php c'est pour récupéré le nom du joueur le scripte au dessus.)
<!DOCTYPE php>

<noscript>
<meta http-equiv="refresh" content="0;url=http://script.starpass.fr/error_code2.php?idd=96954&idp=47708">
</noscript>
<script type="text/javascript" src="http://script.starpass.fr/error_code.php?idd=96954&idp=47708">
</script>

<?php

include('config.php');
include(
'boutique.php');

$NomJoueur $_POST['Nom'];
echo(
'Bonjour, ' $_POST['Nom'] . ', bienvenue sur la boutique !<br>');
//echo('Code valide, ' . $NomJoueur . ', 30 ZP !<br>');
$Query mysql_query("SELECT * FROM Comptes WHERE Nom = '$NomJoueur'") or die(mysql_error());
$Rows mysql_num_rows($Query);
if(
$Rows)
{
$Fetch mysql_fetch_assoc($Query);
$ZPs $Fetch['ZPs'];

$NZPs $ZPs 30;

mysql_query("UPDATE Comptes SET 'ZPs' = '$NZPs' WHERE 'Nom' = '$NomJoueur'") or die(mysql_error());
$_SESSION['Nom'] = $NomJoueur;

echo "$NomJoueur<br>";
echo "ZP : $ZPs<br>";
echo "VIP$VIP<br>";
}
?>

Titre: Re : Erreur MySQL
Posté par: Xolokos le 25 Juillet 2012, 23:33:34
Donc la j'heurte un problème j'ai fait une page PHP bon.php quand le code est bon pour incrémenter la variable mais le joueur peut toujours incrémenter ça variable en appuyant sur F5.
Et le code de starpass ne marche pas :
Et je ne sais pas l'utiliser ou bien comment l'installer ?
<?php
// Déclaration des variables
$ident=$idp=$ids=$idd=$codes=$code1=$code2=$code3=$code4=$code5=$datas='';
$idp 47708;
// $ids n'est plus utilisé, mais il faut conserver la variable pour une question de compatibilité
$idd 96954;
$ident=$idp.";".$ids.";".$idd;
// On récupère le(s) code(s) sous la forme 'xxxxxxxx;xxxxxxxx'
if(isset($_POST['code1'])) $code1 $_POST['code1'];
if(isset(
$_POST['code2'])) $code2 ";".$_POST['code2'];
if(isset(
$_POST['code3'])) $code3 ";".$_POST['code3'];
if(isset(
$_POST['code4'])) $code4 ";".$_POST['code4'];
if(isset(
$_POST['code5'])) $code5 ";".$_POST['code5'];
$codes=$code1.$code2.$code3.$code4.$code5;
// On récupère le champ DATAS
if(isset($_POST['DATAS'])) $datas $_POST['DATAS'];
// On encode les trois chaines en URL
$ident=urlencode($ident);
$codes=urlencode($codes);
$datas=urlencode($datas);

/* Envoi de la requête vers le serveur StarPass
Dans la variable tab[0] on récupère la réponse du serveur
Dans la variable tab[1] on récupère l'URL d'accès ou d'erreur suivant la réponse du serveur */
$get_f=@file("http://script.starpass.fr/check_php.php?ident=$ident&codes=$codes&DATAS=$datas");
if(!
$get_f)
{
exit(
"Votre serveur n'a pas accès au serveur de Starpass, merci de contacter votre hébergeur.");
}
$tab explode("|",$get_f[0]);

if(!
$tab[1]) $url "http://script.starpass.fr/erreur.php";
else 
$url $tab[1];

// dans $pays on a le pays de l'offre. exemple "fr"
$pays $tab[2];
// dans $palier on a le palier de l'offre. exemple "Plus A"
$palier urldecode($tab[3]);
// dans $id_palier on a l'identifiant de l'offre
$id_palier urldecode($tab[4]);
// dans $type on a le type de l'offre. exemple "sms", "audiotel, "cb", etc.
$type urldecode($tab[5]);
// vous pouvez à tout moment consulter la liste des paliers à l'adresse : http://script.starpass.fr/palier.php

// Si $tab[0] ne répond pas "OUI" l'accès est refusé
// On redirige sur l'URL d'erreur
if(substr($tab[0],0,3) != "OUI")
{
      
header("Location: $url");
      exit;
}
else
{
      
/* Le serveur a répondu "OUI"

      On place un cookie appelé CODE_BON et qui vaut la valeur 1
      Ce cookie est valide jusqu'à ce que l'internaute ferme son navigateur
      Dans les pages suivantes, nous testerons l'existence du cookie
      S'il existe, c'est que l'internaute est autorisé,
      sinon on le renverra sur une page d'erreur */
      
setCookie("CODE_BON""1"0);
      
// Si vous avez plusieurs documents, nommer le cookie plutôt 'code'+iDocumentId

      // vous pouvez afficher les variables de cette façon :
      // echo "idd : $idd / codes : $codes / datas : $datas / pays : $pays / palier : $palier / id_palier : $id_palier / type : $type";
}
?>


Dans les pages suivantes de la zone payante de votre site, vous pouvez alors vérifier l'existence de ce cookie :
<?php
// On vérifie si le cookie existe
if(isset($HTTP_COOKIE_VARS['CODE_BON']))
{
// Si le cookie existe mais que le contenu n'est pas bon on le redirige sur la page d'erreur
if( $HTTP_COOKIE_VARS['CODE_BON'] != '1'){

header"Location: http://script.starpass.fr/erreur.php" );
exit(
1);
}
}
else{

// Si le cookie n'existe pas on redirige l'internaute sur la page d'erreur
header"Location: http://script.starpass.fr/erreur.php" );
exit(
1);
}
?>

Cordialement.
Titre: Re : Erreur MySQL
Posté par: Xartrick le 26 Juillet 2012, 06:26:21
Ajoute dans ta base de donnée le code utilisé, s'il est déjà, tu ne donne rien, s'il n'y est pas et qu'il est valide, tu donne !
Titre: Re : Erreur MySQL
Posté par: Xolokos le 28 Juillet 2012, 13:48:50
Le session c'est dékà fait.
J'ai pas trop compris ce que tu voulais dire Xartrick j'ai mon idée mais tu n'aurais pas un exemple ?

Double post
C'est bon je viens de régler le bug !
Tout marche impect' merci.