Il y a actuellement 75 visiteurs
Lundi 02 Août 2021
accueilactualitésdossierscomparer les prixtélécharger gratuitement vos logicielsoffres d'emploiforum informatique
Connexion
Créer un compte

problème PHP Mysql [RESOLU]

Besoin d'aide pour configurer un serveur ? Vous souhaitez obtenir des conseils pour référencer votre site ? Un petit souci pour accéder à votre FTP ? Des soucis de programmation en PHP / ASP / HTML / XHTML / XML / XSLT / CSS / ReactJS / AngularJS / VueJS / CGI / PERL / C / MySQL / PostgreSQL ??? Nous avons peut-être la solution dans ce forum ...

problème PHP Mysql [RESOLU]

Message le 17 Fév 2009 11:33

Bonjour à tous et toutes !

Voila je mets un message pour un petit problèmes de PHP et Mysql.

je vous mets l'erreur que j'ai :
Code: Tout sélectionner
Notice: Undefined index: note in C:Program FilesEasyPHP 2.0b1wwwSITEajout_appreciation.php on line 95

Notice: Undefined index: message in C:Program FilesEasyPHP 2.0b1wwwSITEajout_appreciation.php on line 95
Erreur de syntaxe près de ')' à la ligne 1


Voici mon code :
Code: Tout sélectionner
<?php
         mysql_connect('localhost',$_SESSION['login'],$_SESSION['pass']);
         mysql_select_db('site');
         
         if ($_POST['matière']='ALSI'){
            $nom='Langa';
         }
         
         $requete='INSERT INTO appreciation VALUES ('.$nom.','.$_POST['matière'].','.$_POST['note'].','.$_POST['message'].')';
         
         mysql_query($requete) or exit(mysql_error());
   

?>

Voici la base concerné :

Code: Tout sélectionner
num mediumint(9)   Non  auto_increment               
  nom varchar(15) latin1_swedish_ci  Non                 
  matiere varchar(10) latin1_swedish_ci  Non                 
  note int(2)   Non                 
  message text latin1_swedish_ci  Non 


Je ne sais pas du tout quoi faire !!!

Merci
@+++Tard
Avatar de l'utilisateur
Titom79
Expert(e)
Expert(e)
 
Messages: 977
Inscription: 06 Aoû 2007 17:44
 


Message le 17 Fév 2009 11:50

...commence peut-être par enlever les "è" à "matière" (=> matiere)
Libérez-vous : http://www.debian.org
Nobody knows what sysadmin does... until he stops doing it
Avatar de l'utilisateur
CaSa
PC-Infopraticien
PC-Infopraticien
 
Messages: 8978
Inscription: 13 Mai 2003 16:32
Localisation: Sisteron... et jamais loin d'une Debian
 

Message le 17 Fév 2009 11:55

C'est fait !

Mais j'ai toujours les même problèmes.

Merci en tout cas c'est toujours ça
Avatar de l'utilisateur
Titom79
Expert(e)
Expert(e)
 
Messages: 977
Inscription: 06 Aoû 2007 17:44
 

Message le 17 Fév 2009 11:58

première chose que je vois :

Code: Tout sélectionner
if ($_POST['matière']='ALSI'){
            $nom='Langa';
         }


Il faut mettre "==" pour tester une égalité en PHP, avec ton "=", tu donnes la valeur 'ALSI' à $_POST['matière'].

Pour éviter les "Notice: Undefined index", je te conseille de tester l'existence de toutes les variables POST avec une ligne de ce genre en début de fichier :

$note = (isset($_POST['note'])) ? $_POST['note'] : "";

ensuite tu utilise la variable $note au lieu de $_POST['note'] dans le reste du fichier.
Par conséquent "if ($_POST['matiere']='ALSI'..." deviendra "if ($matiere=='ALSI'...", etc...

Enfin pour la dernière erreur, remplace le premier et le dernier apostrophe par des guillemets dans la ligne :
Code: Tout sélectionner
$requete='INSERT INTO appreciation VALUES ('.$nom.','.$_POST['matière'].','.$_POST['note'].','.$_POST['message'].')';


ce qui donne :

Code: Tout sélectionner
$requete="INSERT INTO appreciation VALUES ('.$nom.','.$_POST['matière'].','.$_POST['note'].','.$_POST['message'].')";
“It has to start somewhere, it has to start sometime, what better place than here, what better time than now?”
Avatar de l'utilisateur
gael49
Expert(e)
Expert(e)
 
Messages: 1932
Inscription: 07 Sep 2004 20:11
Localisation: Les Mauges
 

Message le 17 Fév 2009 12:10

J'ai commencer par le mettre le == et sa donne ça :
Code: Tout sélectionner
Notice: Undefined index: matiere in C:Program FilesEasyPHP 2.0b1wwwSITEajout_appreciation.php on line 91

Notice: Undefined variable: nom in C:Program FilesEasyPHP 2.0b1wwwSITEajout_appreciation.php on line 95

Notice: Undefined index: matiere in C:Program FilesEasyPHP 2.0b1wwwSITEajout_appreciation.php on line 95

Notice: Undefined index: note in C:Program FilesEasyPHP 2.0b1wwwSITEajout_appreciation.php on line 95

Notice: Undefined index: message in C:Program FilesEasyPHP 2.0b1wwwSITEajout_appreciation.php on line 95
Erreur de syntaxe près de ',,)' à la ligne 1


Et si je mets des guillemets à la place de la premiere et dernière simple cote ('), J'ai ça :
Code: Tout sélectionner
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:Program FilesEasyPHP 2.0b1wwwSITEajout_appreciation.php on line 95


Désolé pour toute ces questions, mais je débute le PHP.

Merci
Avatar de l'utilisateur
Titom79
Expert(e)
Expert(e)
 
Messages: 977
Inscription: 06 Aoû 2007 17:44
 

Message le 17 Fév 2009 12:43

Je pense qu'il faut que j'explique un peu plus la base de données (enfin la table concerné).

Les lignes de la table appréciation sont constitué d'un num (clé primaire qui s'auto-incrémante), nom, matiere, note, message.

Et donc pour le code j'ai fait un insert to et dans les values j'ai pa mis de num car je savais pas s'il fallait le mettre vue qu'il y avait une auto-incrémentation.

Vous en pensez quoi ?
Avatar de l'utilisateur
Titom79
Expert(e)
Expert(e)
 
Messages: 977
Inscription: 06 Aoû 2007 17:44
 

Message le 17 Fév 2009 13:06

Titom79 a écrit:J'ai commencer par le mettre le == et sa donne ça :
Code: Tout sélectionner
Notice: Undefined index: matiere in C:Program FilesEasyPHP 2.0b1wwwSITEajout_appreciation.php on line 91

Notice: Undefined variable: nom in C:Program FilesEasyPHP 2.0b1wwwSITEajout_appreciation.php on line 95

Notice: Undefined index: matiere in C:Program FilesEasyPHP 2.0b1wwwSITEajout_appreciation.php on line 95

Notice: Undefined index: note in C:Program FilesEasyPHP 2.0b1wwwSITEajout_appreciation.php on line 95

Notice: Undefined index: message in C:Program FilesEasyPHP 2.0b1wwwSITEajout_appreciation.php on line 95
Erreur de syntaxe près de ',,)' à la ligne 1




Tous ces messages devraient disparaitre si tu met 1 ligne par variable POST, comme ceci :

Code: Tout sélectionner
$matiere= (isset($_POST['matiere'])) ? $_POST['matiere'] : "";
$nom = (isset($_POST['nom'])) ? $_POST['nom'] : "";
$note = (isset($_POST['note'])) ? $_POST['note'] : "";
$message= (isset($_POST['message'])) ? $_POST['message'] : "";


Et ensuite tu n'utilise plus de $_POST mais seulement les variables, $matiere, $note,$nom,$message.

Titom79 a écrit:Et si je mets des guillemets à la place de la premiere et dernière simple cote ('), J'ai ça :
Code: Tout sélectionner
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:Program FilesEasyPHP 2.0b1wwwSITEajout_appreciation.php on line 95



Désolé, en fait il fallait mettre (avec la modif de la requete en +) :

Code: Tout sélectionner
$requete="INSERT INTO appreciation (nom,matiere,note,message) VALUES ('$nom','$matiere','$note','$message')";



Et sinon pour le ==, je confirme qu'il faut le mettre, les messages d'erreur n'ont rien à voir.
“It has to start somewhere, it has to start sometime, what better place than here, what better time than now?”
Avatar de l'utilisateur
gael49
Expert(e)
Expert(e)
 
Messages: 1932
Inscription: 07 Sep 2004 20:11
Localisation: Les Mauges
 

Message le 17 Fév 2009 13:06

Je n'ai plus qu'une erreur.
J'ai ajouter cette ligne enfaite avant de lancé la requête :
Code: Tout sélectionner
if ((isset ($_POST['matiere'])) and (isset ($_POST['note'])) and (isset ($_POST['message'])))


Mais j'ai toujours ce problèmes :
Code: Tout sélectionner
Notice: Undefined index: matiere in C:Program FilesEasyPHP 2.0b1wwwSITEajout_appreciation.php on line 91


Les lignes concernés sont içi :
Code: Tout sélectionner
<?php
         mysql_connect('localhost',$_SESSION['login'],$_SESSION['pass']);
         mysql_select_db('site');
         
         if ($_POST['matiere']=="ALSI"){
            $nom='Langa';
         }


Meci
@+++Tard
Avatar de l'utilisateur
Titom79
Expert(e)
Expert(e)
 
Messages: 977
Inscription: 06 Aoû 2007 17:44
 

Message le 17 Fév 2009 13:10

Titom79 a écrit:Je n'ai plus qu'une erreur.
J'ai ajouter cette ligne enfaite avant de lancé la requête :
Code: Tout sélectionner
if ((isset ($_POST['matiere'])) and (isset ($_POST['note'])) and (isset ($_POST['message'])))




Nos réponses se sont croisées, ce if ne sera pas nécessaire si tu fais ce que j'explique dans mon message précédent.


PS : Sinon il y a un truc pour ne plus afficher les erreurs "NOTICE", mais je le déconseille car tu oublieras de tester les variables POST ou GET si ces messages ne le rappellent pas...

Code: Tout sélectionner
error_reporting(E_ALL ^ E_NOTICE);
“It has to start somewhere, it has to start sometime, what better place than here, what better time than now?”
Avatar de l'utilisateur
gael49
Expert(e)
Expert(e)
 
Messages: 1932
Inscription: 07 Sep 2004 20:11
Localisation: Les Mauges
 

Message le 17 Fév 2009 13:26

Oui c'est vrai que ça revenai au même j'ai juste préférer mettre une ligne que je comprennais car je l'avai déja vue en TP, et vue que je débute et que je n'ai pas fini de lire "PHP et Mysql pour les nuls", je me contente de ce que je connais.

C'est bon j'ai réglé les problèmes, j'ai remplacer le if par un switch vue que de toute façon plus tard il fallait que je le remplace.

L'autre problèmes que j'ai mainantenant c'est que malgré le bon fonctionnement tout sa, rien ne s'ajoute à la base de données !

Je pense qu'il manque l'ajout du numéro dans la table (num en clé primaire dans la base de données), mais je ne sais pas comment faire vu que c'est une auto-incrémentation ?
Avatar de l'utilisateur
Titom79
Expert(e)
Expert(e)
 
Messages: 977
Inscription: 06 Aoû 2007 17:44
 

Message le 17 Fév 2009 16:54

Titom79 a écrit:L'autre problèmes que j'ai mainantenant c'est que malgré le bon fonctionnement tout sa, rien ne s'ajoute à la base de données !

Je pense qu'il manque l'ajout du numéro dans la table (num en clé primaire dans la base de données), mais je ne sais pas comment faire vu que c'est une auto-incrémentation ?


Non, s'il est en auto-incrémentation, pas besoin de l'indiquer évidemment, est-ce que tu as bien mis un mysql_query pour lancer la requête ?

Exemple :

Code: Tout sélectionner
if(!mysql_query($requete)) {
 echo "Erreur dans la requete 'requete' : <br/>". mysql_error()."<br/>".$requete;
}
“It has to start somewhere, it has to start sometime, what better place than here, what better time than now?”
Avatar de l'utilisateur
gael49
Expert(e)
Expert(e)
 
Messages: 1932
Inscription: 07 Sep 2004 20:11
Localisation: Les Mauges
 

Message le 17 Fév 2009 17:43

Voila ma requête d'ajout :
Code: Tout sélectionner
mysql_connect('localhost',$_SESSION['login'],$_SESSION['pass']);
         mysql_select_db('site');
         
         if ((isset ($_POST['matiere'])) and (isset ($_POST['note'])) and (isset ($_POST['message']))){
            
            switch ($_POST['matiere'])
         { case "ALSI" :
               $nom="Langa";
         }
         
         $requete='INSERT INTO appreciation VALUES ('.$nom.','.$_POST['matiere'].','.$_POST['note'].','.$_POST['message'].')';
         
         mysql_query($requete) or exit(mysql_error());
         }
Avatar de l'utilisateur
Titom79
Expert(e)
Expert(e)
 
Messages: 977
Inscription: 06 Aoû 2007 17:44
 

Message le 17 Fév 2009 19:02

Essaye une requête simple, ça ne fonctionne pas c'est sans doute la connexion qui ne se fait pas, sinon c'est l'auto-incrément qui ne se fait pas.

Code: Tout sélectionner
$requete="INSERT INTO appreciation VALUES ('99','Gael49','Informatique','20','Hello !')";


Tu peux aussi faire un "echo $requete", ensuite tu copie la requête qui s'est affichée, et tu la lances directement dans phpmyadmin, pour voir si tu as une erreur ou si ça passe.
“It has to start somewhere, it has to start sometime, what better place than here, what better time than now?”
Avatar de l'utilisateur
gael49
Expert(e)
Expert(e)
 
Messages: 1932
Inscription: 07 Sep 2004 20:11
Localisation: Les Mauges
 

Message le 17 Fév 2009 19:34

La requête marche très bien dans php my admin.

Et ça marche aussi si je fait directement avec des valeurs comme tu m'a dit!

Mais il faut que je le fasse par des variable comment faire ?

Le problème doit venir de VALUES pour la clé primaire num qui est en auto-incrémentation.
Avatar de l'utilisateur
Titom79
Expert(e)
Expert(e)
 
Messages: 977
Inscription: 06 Aoû 2007 17:44
 

Message le 17 Fév 2009 20:59

Est-ce que tu as testé avec ça ?

Code: Tout sélectionner
$requete='INSERT INTO appreciation (nom,matiere,note,message) VALUES ('.$nom.','.$_POST['matiere'].','.$_POST['note'].','.$_POST['message'].')';
“It has to start somewhere, it has to start sometime, what better place than here, what better time than now?”
Avatar de l'utilisateur
gael49
Expert(e)
Expert(e)
 
Messages: 1932
Inscription: 07 Sep 2004 20:11
Localisation: Les Mauges
 

Suivante


Sujets similaires

Message Problème d'impression avec HP 6525
Bonjour,Je ne pense pas que ça vienne des cartouches , moi j'en ai qui viennent d'un pays lointain et que je peux recharger moi-même.Soucis c'est que l'encre ça tache bien les doigts Chez ma fille c'est qu'elle avait eu auparavant déjà une imprimante HP et qu'au changement de matériel elle n'avai ...
Réponses: 4

Message probleme ecran en veile et ordi qui tourne
jai un probleme avec mon ordi de bureau tout tourne normalement lecran marche bien et quelque jours apres en le ralument lecran reste en veil et lordi tourne bien en le demontent jai toucher un peut la carte graphique jai ralumer lordie et la sa a marcher mais quelques jours apres rebelote ecrant en ...
Réponses: 5

Message probleme age of empires 3 sur steam
Salut tout le monde depuis quelque temps lorsque je joue sur Steam avec age of empire 3 définitive édition pendant le jeu aléatoirement le jeu plante comme si ma carte graphique était soit défaillante, soit le processeur car le jeu est souvent assez lent voici le type de message que j'ai avant que t ...
Réponses: 4

Message [Résolu] Veille disque dur externe / Port usb
Bonjour à tous,A chaque fois que je branche un disque dur externe celui-ci s'éteint automatiquement au bout de quelques minutes de non utilisation et se rallume dès utilisation. Cela le fait sur 2 DD externes différents. Pourtant, la mise en veille des ports usb pour économiser l'énergie est désacti ...
Réponses: 4

Message Problème d’affichage 2e écran et tablette graphique
Bonjour à tous,Le problème est le suivant, j?ai besoin de travailler sur 2 écrans et sur une tablette graphique, le câble de mon 2e écran est en HDMI et ma tablette également. Ne possédant qu?une connectique en HDMI sur ma tour j?ai donc acheté un adaptateur HDMI pour double HDMI histoire de faire f ...
Réponses: 0

Message Lenovo yoga problème écran tactile fausses pressions
Bonjour à tous!Je possède un lenovo yoga qui a commencé à bugger depuis quelques mois... L'écran détecte des pressions de partout alors que j'y touche pas comme dans cette vidéo: https://www.youtube.com/watch?v=NKnI4hhyUqg Même si je redémarre le pc, ça recommence, le pc n'est pas en surchauffe (ça ...
Réponses: 11


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités


.: Nous contacter :: Flux RSS :: Données personnelles :.