IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

probleme ecriture sql


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Octobre 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2007
    Messages : 130
    Par défaut probleme ecriture sql
    bonjour, j'ai un script pour un espace membre, je m'en servais sur un autre site et tout fonctionnais très bien, je suis en train de le réinstaller sur un autre site et j'ai un souci d'écriture sur la bdd, j'ai bien créer ma table, mon fichier config est correct cependant il ne veut pas écrire sur la table lors de l'enregistrement d'un nouveau membre, j'ai donc écrit manuellement un membre sur la table mais quand je rentre les identifiants il ne les reconnais pas, je n'ai pas de message d'erreur.

    table sql :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CREATE TABLE membre (
       id_membre int(10),
       id varchar(20),
       pseudo varchar(20),
       passe varchar(20),
       email varchar(100),
       ville varchar(200)
    );
    formulaire d'inscription :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    <?
     
    require("conf.php");
     
    switch($action) {
    /*-----------------------------------------------------------------*/
    /*	AJOUT DANS MySQL			*/
    /*-----------------------------------------------------------------*/
     
    case "add";
     
    // CONNEXION A LA BASE DE DONNEE
    $db_link = @mysql_connect($sql_serveur,$sql_user,$sql_passwd,$sql_bdd);
    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;}
     
    // TEST SUR LES VALEURS SAISIES
    if($pseudo_membre==""){echo "Vous devez choisir un pseudo<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
    if($passe_membre==""){echo "Vous devez choisir un mot de passe<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
    // CHAMPS SUPLEMENTAIRES, inspirez-vous des lignes suivantes. Pour qu'un champs soit facultatif, omettez la ligne.
    if($email==""){echo "Vous n'avez pas saisi votre email<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
    if($ville==""){echo "Vous n'avez pas saisi la ville<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
     
    // ON VERIFIE SI CE PSEUDO EXISTE DEJA
    $requete=mysql_db_query($sql_bdd,"select * from membre where pseudo=\"$pseudo_membre\"",$db_link) or die(mysql_error());
    $num=mysql_num_rows($requete);
    if($num!=0)
    	{
    	echo "Ce pseudo existe déjà, veuillez en choisir un autre<br><br><a href=\"javascript:window.history.back()\">Retour</a>";
    	}
    else
    	{
    	// CREATION D'UN IDENTIFIANT ALEATOIRE
    	$taille = 20;
    	$lettres = "abcdefghijklmnopqrstuvwxyz0123456789";
    	srand(time());
    	for ($i=0;$i<$taille;$i++)
    		{
    		$id.=substr($lettres,(rand()%(strlen($lettres))),1);
    		}
     
    	// ON RECHERCHE L'ID MAXIMUM DE LA TABLE
    	$requete=mysql_db_query($sql_bdd,"select max(id_membre) from membre",$db_link) or die(mysql_error());
    	$idmax=mysql_result($requete,0,"max(id_membre)");
     
    	// INSERTION DANS LA TABLE 
    	$idnew=$idmax+1;
    	$requete=mysql_db_query($sql_bdd,"INSERT INTO `membre` VALUES ('','".$id."','".$pseudo_membre."','".$passe_membre."','".$email."','".$ville."');",$db_link) or die(mysql_error());
    	// CHAMPS SUPLEMENTAIRES, complétez la requête précédente en ajoutant les variables et en respectant l'ordre des colonnes de la table. Exemple :
    	 //insert into membre values ($idnew,\"$id\",\"$pseudo_membre\",\"$passe_membre\",\"$email\",\"$ville\")
     
    	// REDIRECTION VERS LA PAGE D'ENTREE DE L'ESPACE MEMBRE
    	echo "Merci, vous êtes bien enregistré. Cliquez <a href=\"$zone_membre?id=$id\">ici</a> pour entrer dans votre espace privé.";
    	}
     
    // DECONNEXION MYSQL
    mysql_close($db_link);
     
    break;
     
     
    /*-----------------------------------------------------------------*/
    /*	AFFICHAGE DU FORMULAIRE			*/
    /*-----------------------------------------------------------------*/
     
    default;
    echo "	<h2>Nouveau membre</h2>
    	<form action=\"adduser.php\" method=\"post\">
    	<input type=\"hidden\" name=\"action\" value=\"add\">
    	Chosissez un pseudo<br><input type=\"text\" name=\"pseudo_membre\"><br>
    	Chosissez un mot de passe<br><input type=\"password\" name=\"passe_membre\"><br>
    	<! -- CHAMPS SUPLEMENTAIRES, décommentez les 2 lignes suivantes -->
    	Votre email<br><input type=\"text\" name=\"email\"><br>
    	Ville<br><input type=\"text\" name=\"ville\"><br> 
    	<input type=\"submit\" value=\"Envoyer\">
    	</form>
    	<font face=\"Verdana\" size=\"2\"><a href=\"index.htm\">Se connecter</a></font>";
    break;
    }
    ?>
    merci de votre aide car la je ne voit plus trop.

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    A vue de nez, je dirais que tu viens de changer de version de PHP et surtout que la directive register_global est à Off (comme cela doit-être).

    Donc il va falloir refactoriser ton code pour le rendre compatible avec les nouvelles versions de PHP (plus rapide,plus sécurisé....plus mieux quoi ).

    Dans ton cas, ton erreur se situe dans le case, tu ne peux plus récupérer une valeur directement dans une variable:

    ceci est obsolète :

    cela devient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    switch($_POST['action'])
    Mais tu risque de rencontrer d'autres erreurs du même type.

  3. #3
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Octobre 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2007
    Messages : 130
    Par défaut
    effectivement c'est un vieux code qui tournais en php3, j'ai donc modifié le switch, ça a l'air de démarrer sauf qu au moment ou je remplis le formulaire il m'indique "veuillez choisir un pseudo", aurais-tu un idée ?
    merci de ton aide

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Oui, j'ai aussi la solution

    Fais des correspondances avec ce que je t'ai écrit, c'est le même problème !!!!

  5. #5
    Membre expérimenté Avatar de Retrokiller069
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 217
    Par défaut
    Citation Envoyé par asus02 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?
     
    if($pseudo_membre==""){echo "Vous devez choisir un pseudo<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
    if($passe_membre==""){echo "Vous devez choisir un mot de passe<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
    // CHAMPS SUPLEMENTAIRES, inspirez-vous des lignes suivantes. Pour qu'un champs soit facultatif, omettez la ligne.
    if($email==""){echo "Vous n'avez pas saisi votre email<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
    if($ville==""){echo "Vous n'avez pas saisi la ville<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
     
    ?>
    Bonjour,

    je pense que tu devrais changé la première ligne "<?" par ceci "<?php" à l'avenir car je sais que dans certain cas cela ne fonctionnera pas.
    Pour ton problème cela pourrait venir sur le fait que tu ne testes pas si il existe, "$pseudo_membre", tu regardes directement s'il est vide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(isset($pseudo_membre) && $pseudo_membre==""){...}
    je ne suis pas sur que cela vienne de là mais ne voyant pas où tu l'initialises...

    En espérant t'avoir aidé


    Citation Envoyé par MaitrePylos Voir le message
    Oui, j'ai aussi la solution

    Fais des correspondances avec ce que je t'ai écrit, c'est le même problème !!!!
    Du coup cela devrait plutôt être:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(isset($_POST ['pseudo_membre']) && $_POST ['pseudo_membre']==""){...}

  6. #6
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Octobre 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2007
    Messages : 130
    Par défaut
    j'ai fait comme ca mais il ne voit toujours pas que j'ai rentré le pseudo ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    <html>
    <head>
    <title> Espace membre</title>
    </head>
    <body>
    <font face="Verdana" size="2">
    <center>
    <?php
     
    require("conf.php");
     
    switch($_POST['action']) {
    /*-----------------------------------------------------------------*/
    /*	AJOUT DANS MySQL			*/
    /*-----------------------------------------------------------------*/
     
    case "add";
     
    // CONNEXION A LA BASE DE DONNEE
    // 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;}
    if (isset($_POST['action'])){
    $action = $_POST['action'];
    } else  {
    $action = "";
    }
    // Rendre la base de données p796_5, la base courante
    $db_selected = mysql_select_db('p796_5', $db_link);
     
    // TEST SUR LES VALEURS SAISIES
    if($pseudo_membre==""){echo "Vous devez choisir un pseudo<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
    if($passe_membre==""){echo "Vous devez choisir un mot de passe<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
    // CHAMPS SUPLEMENTAIRES, inspirez-vous des lignes suivantes. Pour qu'un champs soit facultatif, omettez la ligne.
    if($email==""){echo "Vous n'avez pas saisi votre email<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
    if($ville==""){echo "Vous n'avez pas saisi la ville<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
     
    // ON VERIFIE SI CE PSEUDO EXISTE DEJA
    $requete=mysql_db_query($sql_bdd,"select * from membre where pseudo=\"$pseudo_membre\"",$db_link) or die(mysql_error());
    $num=mysql_num_rows($requete);
    if($num!=0)
    	{
    	echo "Ce pseudo existe déjà, veuillez en choisir un autre<br><br><a href=\"javascript:window.history.back()\">Retour</a>";
    	}
    else
    	{
    	// CREATION D'UN IDENTIFIANT ALEATOIRE
    	$taille = 20;
    	$lettres = "abcdefghijklmnopqrstuvwxyz0123456789";
    	srand(time());
    	for ($i=0;$i<$taille;$i++)
    		{
    		$id.=substr($lettres,(rand()%(strlen($lettres))),1);
    		}
     
    	// ON RECHERCHE L'ID MAXIMUM DE LA TABLE
    	$requete=mysql_db_query($sql_bdd,"select max(id_membre) from membre",$db_link) or die(mysql_error());
    	$idmax=mysql_result($requete,0,"max(id_membre)");
     
    	// INSERTION DANS LA TABLE 
    	$idnew=$idmax+1;
    	$requete=mysql_db_query($sql_bdd,"insert into membre values ($idnew,\"$id\",\"$pseudo_membre\",\"$passe_membre\",\"$email\",\"$ville\");",$db_link) or die(mysql_error());
    	// CHAMPS SUPLEMENTAIRES, complétez la requête précédente en ajoutant les variables et en respectant l'ordre des colonnes de la table. Exemple :
    	 //insert into membre values ($idnew,\"$id\",\"$pseudo_membre\",\"$passe_membre\",\"$email\",\"$ville\")
     
    	// REDIRECTION VERS LA PAGE D'ENTREE DE L'ESPACE MEMBRE
    	echo "Merci, vous êtes bien enregistré. Cliquez <a href=\"$zone_membre?id=$id\">ici</a> pour entrer dans votre espace privé.";
    	}
     
     
    mysql_close($db_link);
    $old = umask( 0 );
    mkdir('mb/'.$idnew,0711);
    chmod('mb/'.$idnew, 0711);
    umask($old);
     
     
    break;
     
     
    /*-----------------------------------------------------------------*/
    /*	AFFICHAGE DU FORMULAIRE			*/
    /*-----------------------------------------------------------------*/
     
    default;
    echo "	<h2>Nouveau membre</h2>
    	<form action=\"adduser.php\" method=\"post\">
    	<input type=\"hidden\" name=\"action\" value=\"add\">
    	Chosissez un pseudo<br><input type=\"text\" name=\"pseudo_membre\"><br>
    	Chosissez un mot de passe<br><input type=\"password\" name=\"passe_membre\"><br>
    	<! -- CHAMPS SUPLEMENTAIRES, décommentez les 2 lignes suivantes -->
    	Votre email<br><input type=\"text\" name=\"email\"><br>
    	Ville<br><input type=\"text\" name=\"ville\"><br> 
    	<input type=\"submit\" value=\"Envoyer\">
    	</form>
    	<font face=\"Verdana\" size=\"2\"><a href=\"index.htm\">Se connecter</a></font>";
    break;
    }
    ?>
    </center>
    </font>
    </body>
    </html>
    merci, j'en est pas dormis de la nuit, mais il est vrais que j'utilisais ce code il y a 5/6 ans et maintenant on est en php5, de plus je ne suis pas fort en php, je sais que je doit t'embeter mais si j'abuse encore de ton temps.
    merci

  7. #7
    Membre expérimenté Avatar de Retrokiller069
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 217
    Par défaut
    Citation Envoyé par asus02 Voir le message
    j'ai fait comme ca mais il ne voit toujours pas que j'ai rentré le pseudo ...
    pas de souci, tu as fait ca pour $action mais tu dois le faire pour touts tes inputs.

    En regardant ton code tu as encore $pseudo_membre, tu devrais avoir $_POST['pseudo_membre'] de préférence avec le isset avant ^^

  8. #8
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Octobre 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2007
    Messages : 130
    Par défaut
    ce qui devrais donner ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // TEST SUR LES VALEURS SAISIES
    if (isset($_POST['$pseudo_membre==""']){echo "Vous devez choisir un pseudo<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
    if (isset($_POST['$passe_membre==""']){echo "Vous devez choisir un mot de passe<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
    // CHAMPS SUPLEMENTAIRES, inspirez-vous des lignes suivantes. Pour qu'un champs soit facultatif, omettez la ligne.
    if (isset($_POST['$email==""']){echo "Vous n'avez pas saisi votre email<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
    if (isset($_POST['$ville==""']){echo "Vous n'avez pas saisi la ville<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
    il m'indique une erreur :

    Parse error: syntax error, unexpected '{' in /home/www/nx/adduser.php on line 32

  9. #9
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Il y a longtemps peut-être, mais un peu de cohérence svp.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if ($_POST['pseudo_membre']=="")
    Tu ne peux pas tout faire en un seul coup, il faut être logique.

    Dans un premier temps vérifie seulement que les inputs son vide comme l'exemple que je te donne.

Discussions similaires

  1. Probleme liaison en ecriture SQL-ACCESS
    Par gueguenk dans le forum Développement
    Réponses: 0
    Dernier message: 09/03/2009, 16h50
  2. Probleme ecriture dans la base de registre
    Par Deton@tor dans le forum C++Builder
    Réponses: 8
    Dernier message: 30/04/2008, 15h03
  3. problemes exercices sql
    Par siciliano_messinese dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/09/2005, 16h52
  4. [JDBC]Probleme curseur SQL
    Par Welldone dans le forum JDBC
    Réponses: 13
    Dernier message: 11/07/2005, 16h57
  5. probleme requete sql
    Par Shosho dans le forum Langage SQL
    Réponses: 12
    Dernier message: 03/05/2005, 09h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo