Probléme php Mysql

Fermé
fm825 Messages postés 522 Date d'inscription samedi 3 mai 2008 Statut Membre Dernière intervention 13 septembre 2014 - 8 janv. 2010 à 19:05
fm825 Messages postés 522 Date d'inscription samedi 3 mai 2008 Statut Membre Dernière intervention 13 septembre 2014 - 8 janv. 2010 à 21:45
Bonjour,
J'ai modifier un scripte libre trouvé sur le web mais il ne fonctionne plus et je ne vois pas se qui n'est pas bon.

Voici ma basse de donné qui dois interagir avec le scripte.
CREATE TABLE membre (

   id_membre int(10),

   id_rest int(10),
   id varchar(20),

   pseudo varchar(20),

   passe varchar(20)

);


Puis la page qui bug (page d'identification par pass uniquement.

<?

require("conf.php");


// CONNEXION A LA BASE DE DONNEE

$db_link = @mysql_connect($sql_serveur,$sql_user,$sql_passwd);

if(!$db_link) {echo "Connexion impossible à la base de données <b>$sql_bdd</b> sur le serveur <b>$sql_server</b><br>Vérifiez les paramètres du fichier conf.php"; exit;}


$requete=mysql_db_query($sql_bdd,"select passe from membre where passe=\"$passe_membre\"",$db_link) or die(mysql_error());



if(mysql_num_rows($requete)==0)

	{

	// REDIRECTION VERS LA PAGE ERREUR erreur.htm

	header("Location:$url_erreur");

	}



// SI LE le passe est correcte

else

	{
$id_rest=mysql_db_query($sql_bdd,"SELECT id_rest from membre WHERE passe=\"$passe_membre\"",$db_link) or die(mysql_error());
// pour les membre  ayant -1 on leur donne accés au site sans plus
if ($id_rest == -1) 
{
    	// CREATION D'UN IDENTIFIANT ALEATOIRE

	$taille = 20;

	$lettres = "abcdefghijklmnopqrstuvwxyz0123456789";

	srand(time());

	for ($i=0;$i<$taille;$i++)

		{

		$id.=substr($lettres,(rand()%(strlen($lettres))),1);

		}

		

	// MISE A JOUR DE L'IDENTIFIANT DANS LA TABLE 


	$requete=mysql_db_query($sql_bdd,"update membre set id=\"$id\" where pseudo=\"$pseudo_membre\" and passe=\"$passe_membre\"",$db_link) or die(mysql_error());

	

	// REDIRECTION VERS UNE PAGE PROTEGEE AVEC L'IDENTIFIANT SERVANT DE CLE

	header("Location:zonemembre.php?id=$id");
}
//&#8357;embre
elseif ($id_rest > 0) // SINON SI les utilisateur on un nombre  superieur a 0 on leur soustrait -1 a id_rest
{
	$id_restp = $id_rest - 1;
	// CREATION D'UN IDENTIFIANT ALEATOIRE

	$taille = 20;

	$lettres = "abcdefghijklmnopqrstuvwxyz0123456789";

	srand(time());

	for ($i=0;$i<$taille;$i++)

		{

		$id.=substr($lettres,(rand()%(strlen($lettres))),1);

		}

		

	// MISE A JOUR DE L'IDENTIFIANT DANS LA TABLE 


	$requete=mysql_db_query($sql_bdd,"update membre set id=\"$id\" where pseudo=\"$pseudo_membre\" and id_rest=\"$id_restp\"",$db_link) or die(mysql_error());

	

	// REDIRECTION VERS UNE PAGE PROTEGEE AVEC L'IDENTIFIANT SERVANT DE CLE

	header("Location:zonemembre.php?id=$id");
}

else // SINON le code n'est plus valable...
{
  	

// REDIRECTION VERS index pour new identification

	header("Location:index.html");
}
 

	}	



// DECONNEXION MYSQL

mysql_close($db_link);

?>

Voilà le code pour le moment j'arrive sur la page d'erreur.

Je remercie les personne qui prenne le temps de m'expliquer se qui ne va pas.
A voir également:

4 réponses

avion-f16 Messages postés 19252 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 10 février 2025 4 505
8 janv. 2010 à 19:13
Remplace "<?" par "<?php".
Et précises nous l'erreur.
0
fm825 Messages postés 522 Date d'inscription samedi 3 mai 2008 Statut Membre Dernière intervention 13 septembre 2014 36
8 janv. 2010 à 19:22
Y'a pas d'erreur car sa renvoie directement a la page d'erreur se qui veux dire normalement que le code donné au scripte est éronné alors qu'il est correcte donc il dois avoir un problème a se niveau la :


$db_link = @mysql_connect($sql_serveur,$sql_user,$sql_passwd);

if(!$db_link) {echo "Connexion impossible à la base de données <b>$sql_bdd</b> sur le serveur <b>$sql_server</b><br>Vérifiez les paramètres du fichier conf.php"; exit;}



$requete=mysql_db_query($sql_bdd,"select passe from membre where passe=\"$passe_membre\"",$db_link) or die(mysql_error());



if(mysql_num_rows($requete)==0)

	{

	// REDIRECTION VERS LA PAGE ERREUR erreur.htm

	header("Location:$url_erreur");

	}



La seul partie du scripte qui renvoie vers la page d'erreur et en gras ci-dessus j'ai fait cela pour mieux voir le problème.


Voilà monscripte corrigé et revu

<?php

require("conf.php");





// CONNEXION A LA BASE DE DONNEE

$db_link = @mysql_connect($sql_serveur,$sql_user,$sql_passwd);

if(!$db_link) {echo "Connexion impossible à la base de données <b>$sql_bdd</b> sur le serveur <b>$sql_server</b><br>Vérifiez les paramètres du fichier conf.php"; exit;}



$requete=mysql_db_query($sql_bdd,"select passe from membre where passe=\"$passe_membre\"",$db_link) or die(mysql_error());



if(mysql_num_rows($requete)==0)

	{

	// REDIRECTION VERS LA PAGE ERREUR erreur.htm

	header("Location:$url_erreur");

	}



// SI LE le passe est correcte

else

	{
$id_rest=mysql_db_query($sql_bdd,"SELECT id_rest from membre WHERE passe=\"$passe_membre\"",$db_link) or die(mysql_error());
// pour les membre  ayant -1 on leur donne accés au site sans plus
if ($id_rest == -1) 
{
    	// CREATION D'UN IDENTIFIANT ALEATOIRE

	$taille = 20;

	$lettres = "abcdefghijklmnopqrstuvwxyz0123456789";

	srand(time());

	for ($i=0;$i<$taille;$i++)

		{

		$id.=substr($lettres,(rand()%(strlen($lettres))),1);

		}

		

	// MISE A JOUR DE L'IDENTIFIANT DANS LA TABLE 


	$requete=mysql_db_query($sql_bdd,"update membre set id=\"$id\" where passe=\"$passe_membre\"",$db_link) or die(mysql_error());

	

	// REDIRECTION VERS UNE PAGE PROTEGEE AVEC L'IDENTIFIANT SERVANT DE CLE

	header("Location:zonemembre.php?id=$id");
}
//&#8357;embre
elseif ($id_rest > 0) // SINON SI les utilisateur on un nombre  superieur a 0 on leur soustrait -1 a id_rest
{
	$id_restp = $id_rest - 1;
	// CREATION D'UN IDENTIFIANT ALEATOIRE

	$taille = 20;

	$lettres = "abcdefghijklmnopqrstuvwxyz0123456789";

	srand(time());

	for ($i=0;$i<$taille;$i++)

		{

		$id.=substr($lettres,(rand()%(strlen($lettres))),1);

		}

		

	// MISE A JOUR DE L'IDENTIFIANT DANS LA TABLE 


	$requete=mysql_db_query($sql_bdd,"update membre set id=\"$id\" id_rest=\"$id_restp\" where passe=\"$passe_membre\"",$db_link) or die(mysql_error());

	

	// REDIRECTION VERS UNE PAGE PROTEGEE AVEC L'IDENTIFIANT SERVANT DE CLE

	header("Location:zonemembre.php?id=$id");
}

else // SINON le code n'est plus valable...
{
  	

// REDIRECTION VERS index pour new identification

	header("Location:index.html");
}
 

	}	



// DECONNEXION MYSQL

mysql_close($db_link);

?>


Code revu et donne l'erreur suivante

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 'id_rest="3" where passe="test"' at line 1

Le probléme c'est que sur la bdd id_rest et a 2
0
avion-f16 Messages postés 19252 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 10 février 2025 4 505
8 janv. 2010 à 20:08
La fonction header() ne peut être appelée après l'envoie des entêtes au navigateur, c'est-à-dire quand un caractère (espace compris). Donc il ne doit y avoir aucun caractère avant "<?php" et aucun echo/print avant la fonction header()
0
fm825 Messages postés 522 Date d'inscription samedi 3 mai 2008 Statut Membre Dernière intervention 13 septembre 2014 36
8 janv. 2010 à 21:45
Le hearder a pourtant l'aire de fonctionner...
0