Problème php mysql

Résolu
mentir Messages postés 359 Statut Membre -  
mentir Messages postés 359 Statut Membre -
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

  1. hharchi9 Messages postés 693 Statut Membre 24
     
    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
    1. mentir Messages postés 359 Statut Membre 29
       
      Merci d'avoir répondu, je vais analysé ce script et le tester, je vous tiens au courant
      0
  2. mentir Messages postés 359 Statut Membre 29
     
    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
  3. blackduck Messages postés 902 Statut Membre 97
     
    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
    1. mentir Messages postés 359 Statut Membre 29
       
      Merci de votre aide, un problème résolu mais il reste les deux autres problèmes qui sont toujours présent.
      0
    2. hharchi9 Messages postés 693 Statut Membre 24
       
      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
  4. blackduck Messages postés 902 Statut Membre 97
     
    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
    1. mentir Messages postés 359 Statut Membre 29
       
      Je vous remercie, j'essaye cela et ensuite je vous tiens au courant
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. mentir Messages postés 359 Statut Membre 29
     
    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
    1. hharchi9 Messages postés 693 Statut Membre 24
       
      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
    2. mentir Messages postés 359 Statut Membre 29
       
      Merci beaucoup, maintenant tout marche et je vous en remercie !
      Bonne continuation
      0