JeuWeb - Crée ton jeu par navigateur
[Résolu] L'enregistrement dans la base de données ne fonctionne pas - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu] L'enregistrement dans la base de données ne fonctionne pas (/showthread.php?tid=1111)

Pages : 1 2


[Résolu] L'enregistrement dans la base de données ne fonctionne pas - Faelnor - 24-04-2007

Bonjour tout le monde, je me presente, cela fait pas mal de temp que je regarde ce forum et je debute en PHP . la j'ai un petit probleme avec mon script est ce que quelqun pourrait m'aider??? je vous passe la parti de script ou il y a l'erreur.

Code :
else
{
    $sess= mysql_query("SELECT pseudo,email,sexe,race FROM utilisateurs WHERE pseudo=\"$pseudo\"")or die (mysql_error());
    
    while ($session = mysql_fetch_array($sess))
    {
    $_SESSION['pseudo']= $session['pseudo'];
    $_SESSION['email']= $session['email'];
    $_SESSION['sexe']= $session['sexe'];
    $_SESSION['race']= $session['race'];
    }
    $pers= mysql_query("SELECT * FROM perso where pseudo=\"$pseudo\"")or die (mysql_error());
    while ($perso = mysql_fetch_array($pers))
    {
    if ($perso['pseudo'] == "")
    {
    mysql_query("INSERT INTO perso (pseudo) VALUES ($pseudo)") or die (mysql_error());
    
    if ($_SESSION['race']== "humain")
    {
        header("location: village_humain.php");
    }
    
else
    {
        header("location: village_elfe.php");
    }
    }
    
    }
}

voila, le script n'enregistre pas les données voulut dans la base de données et ne redirige pas l'utilisateur sur la page principale.


RE: probleme dans une parti de mon script - Sephi-Chan - 24-04-2007

Je ne comprends pas comment est censé fonctionner le script.

Quelques petites remarques :
  • Utilises les balises PHP du forum plutôt que CODE. Ca permettra d'avoir la coloration syntaxique.
  • Tu n'as pas besoin de faire d'antislash sur : mysql_query("SELECT pseudo,email,sexe,race FROM utilisateurs WHERE pseudo=\"$pseudo\"")or die (mysql_error());, utilise plutôt mysql_query("SELECT pseudo,email,sexe,race FROM utilisateurs WHERE pseudo='$pseudo'")or die (mysql_error());.
  • Pense à indenter ton code.

Décris nous un peu plus ce que tu veux produire, si ça renvoie des erreurs, etc.


Sephi-Chan


RE: probleme dans une parti de mon script - Nessper - 24-04-2007

Déjà indente bien ton code qu'on puisse y voir plus clair. Ensuite essaie while ($session == mysql_fetch_array($sess)). Idem pour while ($perso == mysql_fetch_array($pers))


RE: probleme dans une parti de mon script - Faelnor - 24-04-2007

Code PHP :
<?php 
else
{
$sess= mysql_query("SELECT pseudo,email,sexe,race FROM utilisateurs WHERE pseudo=\"$pseudo\"")or die (mysql_error());

while (
$session = mysql_fetch_array($sess))
{
$_SESSION['pseudo']= $session['pseudo'];
$_SESSION['email']= $session['email'];
$_SESSION['sexe']= $session['sexe'];
$_SESSION['race']= $session['race'];
}
$pers= mysql_query("SELECT * FROM perso where pseudo=\"$pseudo\"")or die (mysql_error());
while (
$perso = mysql_fetch_array($pers))
{
if (
$perso['pseudo'] == "")
{
mysql_query("INSERT INTO perso (pseudo) VALUES ($pseudo)") or die (mysql_error());

if (
$_SESSION['race']== "humain")
{
header("location: village_humain.php");
}

else
{
header("location: village_elfe.php");
}
}

}
}

en fait la parti du code qui me pose probleme c'est a partir de ma variable $pers, normalement a ce moment la du script il doit verifier si le pseudo et deja dans la base et l'enregistré si il n'y est pas ce qui me permet de créer les informations du perso.mais il n'inscrit rien dans la table et ensuite les redirection ne marche pas.


RE: probleme dans une parti de mon script - Nessper - 24-04-2007

fais des echos de tes variables pour voir si elles ne sont pas vides


RE: probleme dans une parti de mon script - Sephi-Chan - 24-04-2007

Regare un peu ça, je garantis pas que ça marche car je n'ai pas testé, mais ça peut te donner une piste :

Code PHP :
<?php 
else
{
$sess= mysql_query("SELECT pseudo,email,sexe,race FROM utilisateurs WHERE pseudo='$pseudo'") or die (mysql_error());
while (
$session = mysql_fetch_array($sess))
{
$_SESSION['pseudo']= $session['pseudo'];
$_SESSION['email']= $session['email'];
$_SESSION['sexe']= $session['sexe'];
$_SESSION['race']= $session['race'];
}
if(!
mysql_affected_rows())
{
mysql_query("INSERT INTO perso (pseudo) VALUES ('$pseudo')") or die (mysql_error());
}

else {
if (
$_SESSION['race']== "humain")
{
header("location: village_humain.php");
}

else
{
header("location: village_elfe.php");
}
}
}
Documentation de mysql_affected_rows().


Sephi-Chan


RE: probleme dans une parti de mon script - Faelnor - 24-04-2007

sa ne marche pas non plus, ton code fait marcher la redirection mais il n'insert toujour pas les données dans la table.

en essayant autrement, Champ 'diablo846' inconnu dans field list s'affiche a l'ecran. voila le code que j'ai mis:

Code PHP :
<?php 
else
{
    $sess= mysql_query("SELECT pseudo,email,sexe,race FROM utilisateurs WHERE pseudo='$pseudo'") or die (mysql_error());
    while ($session = mysql_fetch_array($sess))
    {
        $_SESSION['pseudo']= $session['pseudo'];
        $_SESSION['email']= $session['email'];
        $_SESSION['sexe']= $session['sexe'];
        $_SESSION['race']= $session['race'];
    }
// l'erreur vient a partir de la.
$pers= mysql_query("SELECT * FROM perso")or die (mysql_error());
$perso = mysql_fetch_array($pers);

    if($perso['pseudo'] == 0)// je pense que le probleme est sur cette ligne, j'ai pas un probeme de syntaxe ici??
    {
        mysql_query("INSERT INTO perso (pseudo) VALUES ($pseudo)") or die (mysql_error());
    }
    
    else
{    
        if
($_SESSION['race']== "humain")
        {
            header("location: village_humain.php");
        }
        
        else
        
{
            header("location: village_elfe.php");
        }        
    
}
}



RE: probleme dans une parti de mon script - Plume - 24-04-2007

Ta table c'est perso ou utilisateurs ?


RE: probleme dans une parti de mon script - Faelnor - 24-04-2007

j'ai les deux, la table utilisateurs gere le joueur et la table perso gere son perso.

je veut en fait inscrire le pseudo du joueur comme nom de perso afin de pouvoir les gerer differement dans l'interface d'administration.

si j'aurai créer la meme table pour les deux supprimer le perso reviendrer a supprimer le joueur et je ne le veut pas.


RE: probleme dans une parti de mon script - Nessper - 24-04-2007

et si tu mets mysql_query("INSERT INTO perso (pseudo) VALUES ('$pseudo')") or die (mysql_error());

J'ai rajouté les cotes autour de $pseudo

Est-ce que ta requete marche quand tu la tape dirctement dans phpmyAdmin?