Problème php mysql

Résolu/Fermé
mentir Messages postés 305 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 8 octobre 2019 - Modifié par mentir le 31/05/2015 à 12:07
mentir Messages postés 305 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 8 octobre 2019 - 1 juin 2015 à 21:40
Bonjour,

Sa fait depuis plusieurs heures non stop que je cherche sans relâche à trouver la solution à un problème.
Je vous explique, j'ai créer une page php dans lequel j'ai créer une variable $_POST['steamid'], normalement cette variable depend d'un formulaire mais pour essayer, j'ai déjà attribuer une valeur à cette variable. Je me suis donc connecté avec la fonction mysql_connect dans ma base de donnée et j'ai voulu effectué une recherche pour voir si ce steam id (identifiant steam , ex : STEAM_X:XXXXX) existe déjà ou non. Pour tester cela j'ai créer une ligne dans ma base de donnée avec le même steam id que celui que j'ai inséré dans la variable POST. J'ai fait ceci pour voir si le script php réussit à trouver le même steam id ou non.

J'ai des résultats assez bizarre qui change beaucoup de fois dès que je touche une seule lettre ou que je rajoute quelque chose. Mais je n'ai pas le message comme quoi le steam id existe déjà.

Voici le code :

<?php
session_start();
$_POST['steamid'] = 'STEAM_lol';
mysql_connect("127.0.0.1", "root", "");
mysql_select_db("fk-gaming");
$steamid = $_POST['steamid'];
$req = mysql_query("SELECT * FROM shop WHERE steamid='".$steamid."'") or die(mysql_error());
$req2 = mysql_query("SELECT COUNT(steamid) FROM shop") or die(mysql_error());
$resultat_req2 = mysql_fetch_array($req2);
for(;$id=0; $id<=$resultat_req2[0])
{
$id++;
if ($donnees == $steamid)
{
echo 'steam id existe deja';
}
else
{
$donnees=$req->fetch();
}
}
echo $steamid;
?>
<br>
<?php
echo $id;
?>
<br>
<?php
echo $resultat_req2[0];
?>


Je vous remercie d'avance

5 réponses

hharchi9 Messages postés 567 Date d'inscription mercredi 18 décembre 2013 Statut Membre Dernière intervention 1 juillet 2015 24
31 mai 2015 à 22:35
Bonsoir,

Tout d'abord, sachez que l'extension que vous utilisez pour vous conecter à Mysql est obsolète, préférez utiliser PDO( https://www.php.net/manual/fr/book.pdo.php ).
Ainsi, votre script devient à peu près ceci :

<?php
session_start();
$_POST['steamid'] = 'STEAM_lol';
try
{
	// On se connecte à MySQL
	$bdd = new PDO(sprintf('mysql:host=%s;dbname=%s', $host, $dbname), $user, $pass);
	$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(Exception $e)
{
	// En cas d'erreur, on affiche un message et on arrête tout
	die('Erreur : '.$e->getMessage());
}

//On "neutralise" les caractères spéciaux
$steamid= htmlspecialchars(strip_tags($_GET['steamid'])); 

//Vérification de l'id
$query=$bdd->prepare('SELECT COUNT(*) AS nbr FROM fk-gaming WHERE steamid =:steamid');
$query->bindValue(':steamid',$steamid, PDO::PARAM_STR);
$query->execute();
$steamid_free=($query->fetchColumn()==0)?1:0;
$query->CloseCursor();
if(!$steamid_free)
{
	//on affiche l'id
	echo $steamid;
}
else //Sinon
{
	echo 'Ce Steam id existe deja';
}?>
0
mentir Messages postés 305 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 8 octobre 2019 22
1 juin 2015 à 11:33
Merci d'avoir répondu, je vais analysé ce script et le tester, je vous tiens au courant
0
mentir Messages postés 305 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 8 octobre 2019 22
Modifié par mentir le 1/06/2015 à 11:50
J'ai plusieurs erreurs quand j'ai essayé avec ce script, j'ai bien ajouté les variables host, user, etc. Mais ça ne marche pas, voici les erreurs :

( ! ) Notice: Undefined index: steamid in C:\wamp\www\session-destroy.php on line 22

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-gaming WHERE steamid =''' at line 1' in C:\wamp\www\session-destroy.php on line 27

PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-gaming WHERE steamid =''' at line 1 in C:\wamp\www\session-destroy.php on line 27

Merci d'avance
0
blackduck Messages postés 817 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 24 novembre 2018 96
1 juin 2015 à 12:06
Hello,

Dans ton code à la 3e ligne tu définis
$_POST['steamid'] = 'STEAM_lol';

Mais lorsque tu instancie ta variable $steamid tu utilises $_GET
$steamid= htmlspecialchars(strip_tags($_GET['steamid'])); 

0
mentir Messages postés 305 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 8 octobre 2019 22
1 juin 2015 à 12:11
Merci de votre aide, un problème résolu mais il reste les deux autres problèmes qui sont toujours présent.
0
hharchi9 Messages postés 567 Date d'inscription mercredi 18 décembre 2013 Statut Membre Dernière intervention 1 juillet 2015 24
1 juin 2015 à 12:22
En effet, j'ai repris un code déjà existant en oubliant de changer cette ligne.

Si le sujet est résolu, ne pas oublier de le signaler (en haut du sujet).

Bonne continuation.
0
blackduck Messages postés 817 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 24 novembre 2018 96
1 juin 2015 à 12:20
Re,

Change le nom de table "fk-gaming" car le '-' est interprété comme une soustraction même pour les noms de tables.

https://sqlpro.developpez.com/cours/sqlaz/ddl/?page=partie1#L1
0
mentir Messages postés 305 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 8 octobre 2019 22
1 juin 2015 à 12:44
Je vous remercie, j'essaye cela et ensuite je vous tiens au courant
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mentir Messages postés 305 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 8 octobre 2019 22
Modifié par mentir le 1/06/2015 à 13:08
Merci beaucoup, le problème est quasi-ment résolu. Mais j'ai un message qui m'affiche la valeur de la variable steamid au lieu de m'afficher le steam id existe déjà, pourquoi ainsi ? J'ai pourtant bien mis STEAM_lol dans ma colonne steamid de ma base de donnée.

Cordialement,
0
hharchi9 Messages postés 567 Date d'inscription mercredi 18 décembre 2013 Statut Membre Dernière intervention 1 juillet 2015 24
1 juin 2015 à 13:30
Oui, l'erreur provient de mon script j'ai inversé les deux conditions. Vous pouvez soit intervertir les deux echo où bien enlever le "!" dans le if
0
mentir Messages postés 305 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 8 octobre 2019 22
1 juin 2015 à 21:40
Merci beaucoup, maintenant tout marche et je vous en remercie !
Bonne continuation
0