Il y a actuellement 443 visiteurs
Samedi 06 Décembre 2025
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)
Avatar de l'utilisateur
CaSa
PC-Infopraticien
PC-Infopraticien
 
Messages: 9069
Inscription: 13 Mai 2003 16:32
Localisation: Sisteron, perle de Provence... 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'].')";
Avatar de l'utilisateur
gael49
Expert(e)
Expert(e)
 
Messages: 1935
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.
Avatar de l'utilisateur
gael49
Expert(e)
Expert(e)
 
Messages: 1935
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);
Avatar de l'utilisateur
gael49
Expert(e)
Expert(e)
 
Messages: 1935
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;
}
Avatar de l'utilisateur
gael49
Expert(e)
Expert(e)
 
Messages: 1935
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.
Avatar de l'utilisateur
gael49
Expert(e)
Expert(e)
 
Messages: 1935
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'].')';
Avatar de l'utilisateur
gael49
Expert(e)
Expert(e)
 
Messages: 1935
Inscription: 07 Sep 2004 20:11
Localisation: Les Mauges
 

Suivante


Sujets similaires

Message Probleme d'affichage : haut de l'écran qui apparait en bas
Bonjour/BonsoirJ'ai un probleme lorsque mes jeux sont lancés (pas tous en meme temps, je rassure)Lorsque j'allume minecraft ou Hogwards Legacy que j'utilise en ce moment, j'ai un bug d'affichage qui est le suivant ... Le haut de mon écran apparait en bas en sautant. Peu importe que je suis en plein ...
Réponses: 1

Message [Réglé] Problème sur écran neuf
Bonjour,j'ai encore un souci suite au sujet de mon écran ICI. Etant donné qu'il est noté réglé, peut-être qu'il n'est plus trop "visible".Mon ancien écran ayant rendu l'âme après 17 ans, j'ai acheté un écran Acer 24 pouces cba242yabir trouvé en solde à 109? chez Leclerc. Je le trouve franc ...
Réponses: 14

Message [Résolu] La sauvegarde de windows ne s'est pas effectuée
Salut tout le monde j'ai essayé de faire une sauvegarde Windows et elle a échoué je pense à cause de deux fichiers de mon téléphone, je ne sais d'ailleurs pas pourquoi elles se trouvent avec? voir captures écran svp pour plus de clarté https://up2sha.re/file?f=VfV04mIhttps://up2sha.re/file?f=kabkYAt ...
Réponses: 5

Message [Résolu] imprimante brother win11
Bonjour,J'ai essayé les conseils lu sur le net pour installer mon imprimante brother dcp2520dw sur mon pc win11, mais "échec".J'ai utilisé un câble comme demandé.Cdt
Réponses: 16

Message [Résolu]probleme Ads by Images+
Depuis quelque jours avec mon moteur de recherche Google sur Firefox, c'est ajouté Ads by Images+merci
Réponses: 16

Message [Résolu]Ads by Images+
Bonjour depuis quelques jours, j'ai Ads by images dans mes recherches Google peut on enlevé ca merci
Réponses: 5


Qui est en ligne

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


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