Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/07/2006, 09h38   #1
Membre du Club
 
Avatar de PuppeT mAsTer
 
Inscription : juin 2006
Messages : 104
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : juin 2006
Messages : 104
Points : 41
Points : 41
Par défaut [SQL] Pb d'insertion donnée dans table, pb requête SQL

Bonjour à tous je suis entrain d'essayer de réaliser un script de connexion à ma base mysql et pour ne pas que les codes d'accès soit dans le code des php je souhaite les insérer dans une page inc.php avec un include.
La connexion est pour le moment sur un serveur local donc le code de connexion donne cela :
Code :
1
2
3
4
5
6
7
8
9
10
<?php
  define("HOST","localhost");
  define("USER","root");
  define("PASS","");
  $idconnect=mysql_connect(HOST,USER,PASS);
  $idbase=mysql_select_db(hitsport);
  if (!isset($idconnect)) {
      echo "La connexion a échoué " ;
  }
  ?>
Et pour mon test je décide de demander avec une requête le nombre de membres avec ce script.

Code :
1
2
3
4
5
6
<?php
include("connect.inc.php")
$nbremembre = "SELECT `login` FROM `membres`";
$countmembre=mysql_query($nbremembre,$idconnect);
echo "Il y a ".mysql_num_rows($countmembre)." membres.";
?>

Voici le message d'erreur lorsque j'actualise le script de la requête :

Code :
Parse error: parse error, unexpected T_VARIABLE in C:\wamp\www\Hit&Sport\function_connection.php on line 3
Je pense que le pb vient clairement de ma variable $idconnect seulement je en vois pas comment faire mieux ?

Merci de m'aider

PM
PuppeT mAsTer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2006, 10h23   #2
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Manquerait pas le point-virgule avec le include par hasard
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2006, 10h30   #3
Membre du Club
 
Avatar de PuppeT mAsTer
 
Inscription : juin 2006
Messages : 104
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : juin 2006
Messages : 104
Points : 41
Points : 41
Oups je suis un je crois qu'il est préférable de détruire ce post.
Merci en tout cas, ça marche

Par contre j'ai un autre problème avec une requête sql pour mettre à jour la table membres de ma base lorsque quelqu'un s'inscrit. Voici la partie du script qui doit planter et probablement la requête SQL (en gras) Le problème est que rien ne s'inscrit dans les colonnes de ma table lorsque je rentre des données

Je pense que j'ai mal écrit la requête SQL à cause des apostrophes donc pouvez vous m'expliquer si il ya une règle à suivre pour ne pas se tromper avec les guillemets et les apostrophes ?
Code :
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
<?php
if (isset($_POST["pseudo"]) && isset($_POST["email"]) && isset($_POST["password1"]) && isset($_POST["password2"]) && isset($_POST["webnews"]))
{
   $pseudo=$_POST["pseudo"];
   $password=$_POST["password1"];
   $password2=$_POST["password2"];
   $email=$_POST["email"];
   $sexe=$_POST["sexe"];
   $nom=$_POST["nom"];
   $prenom=$_POST["prenom"];
   $datenaissance= $_POST["journaissance"]."/".$_POST["moisnaissance"]."/".$_POST["anneenaissance"] ;
   $rue=$_POST["rue"];
   $codepost=$_POST["codepost"];
   $ville=$_POST["ville"];
   $sportpratique=$_POST["sportpratique"];
   $siteweb=$_POST["siteweb"];
   $webnews=$_POST["webnews"];

 if (!empty($_POST["pseudo"]) && !empty($_POST["email"]) && !empty($_POST["password1"]) && !empty($_POST["password2"]) && !empty($_POST["webnews"]) && $password==$password2)
 {
  $password=$_POST["password1"];
  include ("connect.inc.php");
  $majmembre="INSERT INTO membres VALUES('$pseudo','$password','$email','$sexe','$nom','$prenom','$datenaissance','$rue','$codepost','$ville','$sportpratique','$siteweb','$webnews')";
  $reqmembre=mysql_query($majmembre,$idconnect);
  if ($reqmembre=TRUE) {
    echo "Transfert effectué";
  }
  mysql_close($idconnect);
PuppeT mAsTer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2006, 10h40   #4
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Pour les guillemets / quotes :
http://pbnaigeon.developpez.com/tuto...phe-guillemet/

Mais ça me semble correct comme syntaxe...

Par contre quand on fait un INSERT c'est mieux de nommer les champs.

Code :
INSERT INTO table (champs) VALUES (valeurs)

Code :
$reqmembre=mysql_query($majmembre,$idconnect) or die(mysql_error());
Pour voir ce qui foire.
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2006, 10h56   #5
Membre du Club
 
Avatar de PuppeT mAsTer
 
Inscription : juin 2006
Messages : 104
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : juin 2006
Messages : 104
Points : 41
Points : 41
L'erreur vient bien de la requête sql, j'ai rajouté le misql_error et voici le message d'erreur lorsque je ne nomme pas les champs de la base :

Column count doesn't match value count at row 1

Et lorsque je les nomme ainsi :

Code :
$majmembre="INSERT INTO (pseudo,password) membres VALUES('$pseudo','$password','$email','$sexe','$nom','$prenom','$datenaissance','$rue','$codepost','$ville','$sportpratique','$siteweb','$webnews')";
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 '(pseudo,password) membres VALUES('a','a','a','','','','01/01/1985','','','','auc' at line 1

C'est bien un problème de synthaxe non?
PuppeT mAsTer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2006, 11h00   #6
Rédacteur
 
Avatar de Arnaud F.
 
Homme Arnaud Feltz
Développeur .NET
Inscription : août 2005
Messages : 5 204
Détails du profil
Informations personnelles :
Nom : Homme Arnaud Feltz
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur .NET
Secteur : Transports

Informations forums :
Inscription : août 2005
Messages : 5 204
Points : 6 113
Points : 6 113
Ton $datedenaissance est un format date (ce qui serait plus utile)? Si oui, pense à mettre un to_date('TaDate','TonFormat')
P.S: Tes deux tables ont elles la même structure?

Je me souviens d'une personne qui voulait aussi insérer des valeurs dans deux tables en meme temps, et je sais qu'elle avait aussi rencontré des erreurs
Essai en insérant tes valeurs table par table

@+
__________________
C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

Installation de Code::Blocks sous Debian à partir de Nightly Builds
Arnaud F. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2006, 11h12   #7
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
C'est pas dans le bon ordre (voir post précédent).

Code :
$majmembre="INSERT INTO membres (pseudo,password) VALUES('$pseudo','$password','$email','$sexe','$nom','$prenom','$datenaissance','$rue','$codepost','$ville','$sportpratique','$siteweb','$webnews')";
Mais il faut nommer TOUTES les colonnes sinon c'est pas bon...
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2006, 11h13   #8
Rédacteur
 
Avatar de Arnaud F.
 
Homme Arnaud Feltz
Développeur .NET
Inscription : août 2005
Messages : 5 204
Détails du profil
Informations personnelles :
Nom : Homme Arnaud Feltz
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur .NET
Secteur : Transports

Informations forums :
Inscription : août 2005
Messages : 5 204
Points : 6 113
Points : 6 113
Citation:
Envoyé par JWhite
Oui c'est clair que c'est pas conseillé du tout de faire un INSERT dans deux tables en même temps (est-ce possible d'ailleurs ?) surtout sans nommer les champs c'est un peu aléatoire comme truc...
Si je me souviens bien, il me semble que ça ne fonctionne pas une insertion dans deux tables en meme temps, (faudrait que je recherche, mais trop fainéant ) en fait une fois qu'il avait fait ses insertions en plusieurs fois, cela fonctionnait nickel . On en a donc déduit que c'était impossible

Et puis, vaut mieux nommer les champs dans ce genre de situation, rien à perdre
__________________
C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

Installation de Code::Blocks sous Debian à partir de Nightly Builds
Arnaud F. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2006, 11h23   #9
Membre du Club
 
Avatar de PuppeT mAsTer
 
Inscription : juin 2006
Messages : 104
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : juin 2006
Messages : 104
Points : 41
Points : 41
Mon champs date est sous forme de texte, habitude pris avec Access pour traiter l'âge, mais l'erreur ne doit pas venir d'ici.

Ici je n'insère des infos que dans une table dans tous les cas... et j'ai bien précisé tous les champs, même l'un d'entre eux qu'à l'inscription l'utilisateur ne voit pas et j'ai toujours cette même erreur

Est ce qu'un nom de champ peut être trop long, enfin je ne comprend pas

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 '(pseudo,password,email,sexe,nom,prenom,datenaissance,rue,codpost,ville,sportprat' at line 1

Voici la requête :
Code :
 $majmembre="INSERT INTO (pseudo,password,email,sexe,nom,prenom,datenaissance,rue,codpost,ville,sportpratique,siteweb,webnews,statutmembre) membres VALUES('$pseudo','$password','$email','$sexe','$nom','$prenom','$datenaissance','$rue','$codepost','$ville','$sportpratique','$siteweb','$webnews')";
PuppeT mAsTer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2006, 11h26   #10
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Début de réponse dans mon post précédent
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h33.


 
 
 
 
Partenaires

Hébergement Web