JeuWeb - Crée ton jeu par navigateur
problème de requête - 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 : problème de requête (/showthread.php?tid=1935)

Pages : 1 2 3


RE: problème de requête - Reaven - 30-10-2007

non ça va aller merci beaucoup


RE: problème de requête - Reaven - 30-10-2007

Voilà j'ai testé les 3 requêtes dans phpMyadmin mais ya pas de problème donc je sais pas ce qui se passe.
J'ai toujours que les erreurs qui s'affichent.

Voici le code complet avec la requête ce sera peut-être plus simple.

Code PHP :
<?php


//------------------------------------------------
/*FORMULAIRE D'INSCRIPTION
Envoi des donnés dans la table "comptes_provisoirs" si les conditions sont remplies.
*/
//------------------------------------------------

//variable initialisée à zéro pour tester les conditions.
$nb_faux= 0;

if(isset(
$_POST['nom_empire']) && isset($_POST['nom_seigneur']) && isset($_POST['nom_mage']) && isset($_POST['mot_de_passe']) && isset($_POST['confirm_passe']) && isset($_POST['email'])
&& isset(
$_POST['race']) && isset($_POST['background']))
{
$login= $_POST['nom_seigneur'];
$empire= $_POST['nom_empire'];
$mage= $_POST['nom_mage'];
$mot_de_passe= $_POST['mot_de_passe'];
$confirm_passe= $_POST['confirm_passe'];
$email= $_POST['email'];
$race= $_POST['race'];
$background= $_POST['background'];

$background= stripslashes($_POST['background']);
$background= nl2br($_POST['background']);

//incrémenter la variable $nb_faux si les champs du formulaire sont vides
if(empty($_POST['nom_seigneur']) || empty($_POST['nom_empire']) || empty($_POST['nom_mage']) || empty($_POST['mot_de_passe']) || empty($_POST['confirm_passe']) || empty($_POST['email'])
|| empty(
$_POST['race']) || empty($_POST['background']))
{
$reponse= '<p>Il reste des champs non remplis</p><br/>';
$nb_faux ++;
}

//incrémenter la variable $nb_faux si des caractères ne sont pas autorisés pour le login
if (!preg_match('#^(\w{4,15})$#', $login))
{
$reponse= '<p>Il y a des caractères non autorisés dans le nom de votre seigneur ou celui-ci est trop court</p><br/>';
$nb_faux ++;
}

if (!
preg_match('#^(\w{4,15})$#', $empire))
{
$reponse= '<p>Il y a des caractères non autorisés dans le nom de votre empire ou celui-ci est trop court</p><br/>';
$nb_faux ++;
}

if (!
preg_match('#^(\w{4,15})$#', $mage))
{
$reponse= '<p>Il y a des caractères non autorisés dans le nom de votre mage ou celui-ci est trop court</p><br/>';
$nb_faux ++;
}

//incrémenter la variable $nb_faux si des caractères ne sont pas autorisés pour le mot de passe et sa confirmation
if (!preg_match('#(\w{4,10})$#', $mot_de_passe) or !preg_match('#(\w{4,10})$#', $confirm_passe))
{
$reponse= '<p>Il y a des caractères non autorisés dans votre mot de passe ou celui-ci est trop court</p><br/>';
$nb_faux ++;
}

//incrémenter la variable $nb_faux si le mot de passe et sa confirmation ne sont pas identiques
if($mot_de_passe != $confirm_passe)
{
$reponse= '<p>Vos mot de passe ne sont pas identiques</p><br/>';
$nb_faux ++;
}

//incrémenter la variable $nb_faux si le login existe déjà dans la base de donnée
if($nb_faux >= 0)
{
include(
"config.php");
$connexion= mysql_connect($hote,$utilisateur,$mdp) or die('<br/>Connexion au serveur impossible.<br/> Contactez le Webmaster si l\'erreur n\'est pas résolue.<br/>');
$choix_db= mysql_select_db($data_base) or die('<br/>Selection de la base de donnée echouée.<br/> Contactez le Webmaster si l\'erreur n\'est pas résolue.<br/>');
$requete= "SELECT nom_seigneur FROM $table_cp WHERE nom_seigneur='$login'";
$resultat_login= mysql_numrows(mysql_query($requete)) or die('erreur selection login'.mysql_error());

$requete="SELECT nom_mage FROM $table_cp WHERE nom_mage='$mage'";
$resultat_mage= mysql_numrows(mysql_query($requete)) or die('erreur selection mage'.mysql_error());

$requete="SELECT nom_empire FROM $table_cp WHERE nom_empire='$empire'";
$resultat_empire= mysql_numrows(mysql_query($requete)) or die('erreur selection empire'.mysql_error());

if ((
$resultat_login > 0) && ($resultat_mage > 0) && ($resultat_empire > 0))
{
$reponse ='<p>Tout existe</p>';
$nb_faux ++;
}
else if (
$resultat_login > 0)
{
$reponse ='<p>Seigneur déja existant</p>';
$nb_faux ++;
}
else if (
$resultat_mage > 0)
{
$reponse ='<p>Mage déja existant</p>';
$nb_faux ++;
}
else if (
$resultat_empire > 0)
{
$reponse ='<p>Empire déja existant</p>';
$nb_faux ++;
}
}

//incrémenter la variable $nb_faux si la case à cocher "conditions" est null
if(isset($_POST['conditions'])== null)
{
$reponse= '<p>Vous n\'avez pas accepté les conditions</p><br/>';
$nb_faux ++;
}

//connexion à la base de donnée s'il n'y a pas d'erreurs (champs oubliés, expressions régulières, vérification du mot de passe, vérification du login)
if($nb_faux == 0)
{
include(
"config.php");

$clef= "0123456789";
$clef= rand();

$connexion= mysql_connect($hote,$utilisateur,$mdp) or die('<br/>Connexion au serveur impossible.<br/> Contactez le Webmaster si l\'erreur n\'est pas résolue.<br/>');
$choix_db= mysql_select_db($data_base) or die('<br/>Selection de la base de donnée echouée.<br/> Contactez le Webmaster si l\'erreur n\'est pas résolue.<br/>');
$requete= "INSERT INTO $table_cp VALUES('','$login','$mage','$empire','$mot_de_passe','$email','$race','$background','$clef')";
$resultat= mysql_query($requete) or die('<br/>Exécution de la requête impossible.<br/> Contactez le Webmaster si l\'erreur n\'est pas résolue.<br/>');

mysql_close($connexion);

//envoyer le mail si la requête à fonctionnée
if($resultat == true)
{
$reponse= '<p>Vous allez recevoir d\'ici quelques minutes un mail contenant le lien de validation<br/>
afin de finaliser votre inscription</p><br/>'
;


$mail_destinataire= $_POST['email'];
$sujet= "Endaël, validation de votre inscription";
$message= "Voici un rappel de vos identifiants:<br/>
Seigneur:
$login<br/>
Empire:
$empire<br/>
Mage:
$mage<br/>
Mot de passe:
$mot_de_passe<br/>
<br/>
Vous devez encore valider votre inscription avant de jouer. Cliquez sur le lien de validation ci-dessous:<br/>
http://www.endael.ovh.org?&amp;nom_seigneur=
$login&amp;clef=$clef<br/>
<br/>
Le Webmaster.<br/>
http://www.endael.ovh.org."
;
$head= "Bonjour, $login";
mail($mail_destinataire,$sujet,$message,$head);
}
}
}

//--------------------------------------------------------------------
// VALIDATION DU COMPTE APRES INSCRIPTION
//
// Verification du lien de validation via mail :
// 1 - connexion si la clef et le login existe dans la table "comptes_provisoirs"
// 2 - transfert des données dans la table "comptes_definitifs"
// 3 - suppression des données dans la table "comptes_provisoirs"
//--------------------------------------------------------------------

if(isset($_GET['nom_seigneur']) && isset($_GET['clef']))
{
$login= $_GET['nom_seigneur'];
$clef= $_GET['clef'];

include(
"config.php");

// requete chercher les données lorsque le champs login et le champs clef existent dans la table "comptes_provisoirs"
$connexion= mysql_connect($hote,$utilisateur,$mdp) or die('<br/>Connexion au serveur impossible.<br/> Contactez le Webmaster si l\'erreur n\'est pas résolue.<br/>');
$choix_db= mysql_select_db($data_base) or die('<br/>Selection de la base de donnée echouée.<br/> Contactez le Webmaster si l\'erreur n\'est pas résolue.<br/>');
$requete= "SELECT nom_seigneur, nom_empire, nom_mage, mot_de_passe, email, race, background FROM $table_cp WHERE nom_seigneur='$login' AND clef='$clef'";
$resultat= mysql_query($requete) or die('<br/>Exécution de la requête impossible.<br/> Contactez le Webmaster si l\'erreur n\'est pas résolue.<br/>');

// affecter les infos utilisateurs si la clef et le pseudo existent dans la table "comptes_provisoirs"
if ($donnees = mysql_fetch_array($resultat))
{
$login= $donnees['nom_seigneur'];
$empire= $donnees['nom_empire'];
$mage= $donnees['nom_mage'];
$mot_de_passe= $donnees['mot_de_passe'];
$email= $donnees['email'];
$race= $donnees['race'];
$background= $donnees['background'];

// requette transferer les données de la table "comptes_provisoirs" à la table "comptes_definitifs"
$requete= "INSERT INTO $table_cd VALUES('','$login','$mage','$empire','$mot_de_passe','$email','$race','$background')";
$resultat= mysql_query($requete) or die('<br/>Exécution de la requête impossible.<br/> Contactez le Webmaster si l\'erreur n\'est pas résolue.<br/>');

mysql_close($connexion);

$reponse= '<p>Votre inscription a été validée. Vous pouvez désormais jouer en vous loggant avec<br/>
vos iddentifiants</p><br/>'
;
}
else
{
$reponse= '<p>Votre inscription est déjà validée ou le lien de validation est incorrect</p><br/>';
}
}

?>

Dark Angels


RE: problème de requête - Kheldar - 31-10-2007

l'erreur se trouve dans cette requete :

SELECT nom_mage FROM $table_cp WHERE nom_mage='$mage'

le champ nom_mage a bien l'air d'exister dans ta table. Te retourne t-il une errreur particulière ?

Si il ne te retourne pas d'erreurs :

remplace :

Citation :$requete="SELECT nom_mage FROM $table_cp WHERE nom_mage='$mage'";
$resultat_mage= mysql_numrows(mysql_query($requete)) or die('erreur selection mage'.mysql_error());

par

Citation :$requete="SELECT nom_mage FROM $table_cp WHERE nom_mage='$mage'";
echo 'requete mage : '.$requete;
$query = mysql_query($requete) or die('erreur mage'.mysql_error());
$resultat_mage = mysql_numrows($query)

1/ Ceci devrait te retourner l'erreur SQL généré.
2/ tu verras ta requete s'afficher. Peut-être que le nom du mage contient une '.

Mais sans l'erreur, je vais avoir du mal à te filer un coup de main.


RE: problème de requête - Reaven - 31-10-2007

ok je fais ça tout de suite


RE: problème de requête - Reaven - 31-10-2007

Voila apparement j'ai le même problème avec les 3 requêtes je les ai toutes changées par ton code en modifiant les noms.

Voilà les 3 erreurs:

Code PHP :
<?php 
requete seigneur
: SELECT nom_seigneur FROM comptes_provisoirs WHERE nom_seigneur='hhhh'
requete mage : SELECT nom_mage FROM comptes_provisoirs WHERE nom_mage='jjjj'
requete empire : SELECT nom_empire FROM comptes_provisoirs WHERE nom_empire='llll'

J'espère que c'est ça que tu voulais.

Merci


RE: problème de requête - Kheldar - 31-10-2007

La requete me parait être ok.
Si en plus tes requetes passe sans problème dans phpmyadmin, je commence à mal voir ton soucis.

As-tu bien un champ nom_seigneur et un champ nom_mage et un champ nom_empire dans la table comptes_provisoirs ? (par hazard, ce n'est pas comptes_provisoires ?)

sinon, trois solutions :
- soit tu m'envoyes par mp, la structure de la table comptes_provisoirs par MP et je tente de regarder ton script en local.
- soit tu me contactes ce soir, via msn, et on regarde le souci
- soit tu trouves un site d'hébergement gratos (genre free), tu upload tes scripts et ta base et on regarde ca sur le serveur.


RE: problème de requête - Reaven - 31-10-2007

bon je t'envoi par MP mon adresse msn et la structure de ma bdd comptes_provisoirs.
Les champs existent bel et bien.
je t'envoie aussi le formulaire en html.

Merci