Il y a actuellement 586 visiteurs
Vendredi 22 Novembre 2024
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: 9048
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'].')";
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 [résolu] Appels indésirables
Bonsoir? J'ai besoin d'aide, je n'en peux plus, mon portable est sur liste rouge, j'ai plusieurs appels par jour, d'un cabinet de santé, "santénéa", ils demandent à parler à ma femme, qui est décédée en octobre 2022, je ne comprends pas le lien entre mon numéro de portable et ma femme. ? J ...
Réponses: 27

Message Problème USB 3 sur mini PC (SSD M2 externe)
Bonjour a tous, j'ai un problème sur un mini PC fonctionnant sur un Intel N100. Il y a 2 port usb2 et 2 ports usb3. Mon problème ? Il semble que certains perifériques ne fonctionnent pas correctement (en l'occurence, les boitiers externes pour SSD M2).Si le SSD M2 est connecté sur un USB3 j'obtiens ...
Réponses: 5

Message probleme avec le logiciel nvidia
Bonjour,Oui DDU est très efficace , on s'en sert surtout quand on change de fabricant de carte graphique de AMD vers Nvidia par exemple. Il nettoie tout.Bonne journée.
Réponses: 13

Message [Résolu] Récupération du dual boot
Bonjour,Pourriez-vous m'aider à remettre le dual boot" sur un pc portable HP modèle G7 1235 SF" qui a Windows 10 et Ubuntu 24.04 que j'ai installé dans " l'espace libre" du disque dur mais au démarrage c'est Ubuntu qui est démarre directement, comment faire ?J'aurai voulu garder ...
Réponses: 13

Message [Réglé] probleme windows update recherche sans fin
Salut tout le monde depuis quelques jours lorsque je clique sur Windows update et recherche de mise à jour en cours cela se mets en recherche sans fin voir ma capture écran Rien n'y fait, j'ai beau exécuter l'utilitaire de dépannage Windows update rien n'y fait? Il me détecte en effet un incident, m ...
Réponses: 14

Message [résolu] Inscris à l'insu de mon plein gré
Bonjour J'ai un souci, qui m'énerve vraiment, ma fille m'a réglé une smart TV, pour que le Chromecast intégré fonctionne elle m'a créé un compte sur google. Presque sur chaque site, j'ai ceci :Sur le site TV loisir, je n'ai pas fait exprès, j'ai cliqué sur ok, au lieu de la croix, ça m'a créé un com ...
Réponses: 3


Qui est en ligne

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


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