Undefined variable
Résoluj'ai dans page php une partie "message du nombre d'enregistrement dans la BD"
j'ai initialisé les compteurs comme ça
$nb_insert=0;
$nb_update=0;
$nb_delete=0;
après j'ai faisais la partie d'insertion , Update et suppression
et puis
j'ai mis cette portion de code
$msg_enr_modifs='<font color="green">';
if($$nb_insert>0) $msg_enr_modifs.=$nb_insert." ajout de lignes de valeurs<br />";
if($nb_update>0) $msg_enr_modifs.=$nb_update." lignes de valeurs modifiées<br />";
if($nb_delete>0) $msg_enr_modifs.=$nb_delete." lignes de valeurs suprimées<br />";
$msg_enr_modifs.='</font>';
il m'affiche comme erreur
que les 3 compteurs sont Undefined variables
et après je utiliser l'id user pour chercher des enregistrements
alors j'ai pensé à la récupération de l'id
la ligne est :
$Id_user=$_SESSION['Id_user'];
de même il m'afficher "Undefined variables, Id_user" quelqu'un peux voir ou se trouve l'erreur svp , merci
29 réponses
Des compteurs d'insertion, de modification et de suppression affichent une erreur Undefined variable, tandis que la récupération de l'identifiant utilisateur via la session est également signalée comme indéfinie. Les solutions discutées incluent l'utilisation de variables globales ou l'accès via $GLOBALS pour rendre ces compteurs visibles dans toutes les portions du script, et vérifier la présence des valeurs avant utilisation. D'autres répondent que les compteurs ne sont initialisés que dans une condition postée, ce qui les rend indisponibles ailleurs, et préconisent de les déclarer ou de les initialiser dès le début. Concernant l'identifiant Id_user, une mise en garde rappelle d'assurer la présence de la valeur dans la session et d'éviter des accès hors contexte afin d'éviter d'autres Undefined variables.
-
d'accord je te remercie infiniment et bonne journée
-
merci infiniment , c'est bon j'ai éliminé l'd_valeur et c'est bon il enregistre le valeurs par contre il me reste un petit souci dans mes 2 table (scenario et valeurs ) comme dans chaqu'une de table j'ai la clé primaire de même table et l'id primaire de l'autre
mon problème c'est que l'incrémentation automatique ça marche normale pour chaque table mais pour le 2 clés étrangères toujours 0:
exp : dans la table secario j'ai , id_scenario (l'incrémentation automatique ça marche) et pour l'id_valeur dans la table scenario comme clé étrangée toujours à 0, j'ai fais quoi pour que l'incrémentation ça marche pour toutes les clés ? -
aucune erreur
même qd je faisais echo $sql; il m'a affciher dans la page web ça:
insert into valeurs_a_saisir(id_valeur,cof_eau_du_sol, niv_de_debordement, taux_concentration, pour_etanchite, niv_depart, sal_sol, but, choix_sortie, origine_iragation, sal_eau_entre, condition_climatique, annee, id_scenario) values ("5.16932", "100", "5546", "6565", "10", "1", "1", "1", "Fleuve", "failbe", "moyenne", "", "0"), je comprend pas pourquoi il ne l'enregistre pas dans la BD -
c'est bon pour l'erreur merci , par contre comme tu as vu j'ai 2 insert
une dans la table secnario et pour la table valeurs à saisir ,
qd j'ai rempli le tableau de valeur et après j'ai regardé ma base de donnée j'ai remarqué que pour la table scenario les champs sont pleins par contre l'autre table elle est toujours vide j'ai essayé de faire echo il m'a affiché dans la page web les valeurs que j'ai déjà inséré je sais pas d'ou vient l'erreur ??
voilà la 2 emme insert
//recup de l'ID
$id_scenario= mysql_insert_id();
$sql='insert into valeurs_a_saisir(id_valeur,cof_eau_du_sol, niv_de_debordement, taux_concentration, pour_etanchite, niv_depart, sal_sol, but, choix_sortie, origine_iragation, sal_eau_entre, condition_climatique, annee, id_scenario) values ("'.$cof_eau_du_sol.'", "'.$niv_de_debordement.'", "'.$taux_concentration.'", "'.$pour_etanchite.'", "'.$niv_depart.'", "'.$sal_sol.'", "'.$but.'", "'.$choix_sortie.'", "'.$origine_iragation.'", "'.$sal_eau_entre.'", "'.$condition_climatique.'", "'.$annee.'", "'.$id_scenario.'")';
echo $sql;
$requete = $db->query($sql) ; -
Contributeur
$sql_1="INSERT INTO scenario (id_scenario,Id_user,titre,commentaire) VALUES('','".$_SESSION['Id_user']."','".$titre."','".$commentaire."')";
Même problème que tout à l'heure : soit tu as oublié le session_start() ; soit ta session n'existe pas, ce en cas il faut gérer le cas.
$userId = (isset($_SESSION['Id_user'])) ? $_SESSION['Id_user'] : ""; $sql_1="INSERT INTO scenario (id_scenario,Id_user,titre,commentaire) VALUES('','".$userId."','".$titre."','".$commentaire."')"; -
non il commence pas par virgule
-
est qu' il y a quelqu'un pour m'aider de corriger mon code svp
-
oui il y a pas de problème de majuscule et de minuscule dans les tables et la partie php
-
de plus il prends pas les autres inserts juste de la 1 ère :
$sql_1="INSERT INTO scenario (id_scenario,Id_user,titre,commentaire) VALUES('','".$_SESSION['Id_user']."','".$titre."','".$commentaire."')";
et l'enregistre pas dans la BD -
je te donne le code de la 2 émme page :
<?php
require_once('dbconnect.php');
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="styles.css" rel="stylesheet" type="text/css">
</head>
<body>
<p align="center" class="titre"><strong>- : : : Veuillez remplir ce tableau : : : -</strong></p>
<?php
//On verifie que le formulaire a été envoye
if(isset($_POST['enregistrer']))
{
// on récupère les valeurs qui ont poster
$cof_eau_du_sol = $_POST['cof_eau_du_sol'];
$niv_de_debordement = $_POST['niv_de_debordement'];
$taux_concentration = $_POST['taux_concentration'];
$pour_etanchite = $_POST['pour_etanchite'];
$niv_depart = $_POST['niv_depart'];
$sal_sol = $_POST['sal_sol'];
$but = $_POST['but'];
$choix_sortie = $_POST['choix_sortie'];
$origine_iragation = $_POST['origine_iragation'];
$sal_eau_entre = $_POST['sal_eau_entre'];
$condition_climatique = $_POST['condition_climatique'];
$annee = $_POST['annee'];
//$arrayMois = $_POST['Mois'];
$titre=$_POST['titre'];
$commentaire=$_POST['commentaire'];
//on enregistre d'abord dans la table scenario
$sql_1="INSERT INTO scenario (id_scenario,Id_user,titre,commentaire) VALUES('','".$_SESSION['Id_user']."','".$titre."','".$commentaire."')";
echo $sql_1; // ici je faisais echo pour voir quoi il m'affiche
$requete1 = $db->query($sql_1) ;
//recup de l'ID
$id_scenario= mysql_insert_id();
$sql='insert into valeurs_a_saisir(id_valeur,cof_eau_du_sol, niv_de_debordement, taux_concentration, pour_etanchite, niv_depart, sal_sol, but, choix_sortie, origine_iragation, sal_eau_entre, condition_climatique, annee, id_scenario) values ("'.$cof_eau_du_sol.'", "'.$niv_de_debordement.'", "'.$taux_concentration.'", "'.$pour_etanchite.'", "'.$niv_depart.'", "'.$sal_sol.'", "'.$but.'", "'.$choix_sortie.'", "'.$origine_iragation.'", "'.$sal_eau_entre.'", "'.$condition_climatique.'", "'.$annee.'", "'.$id_scenario.'")';
$requete = $db->query($sql) ;//or die( mysql_error() );
}
?> -
merci Mihawk c'est bon il m'affiche plus l'erreur de Undfined index il m'a afficher le tableau de valeur normal et qd j'ai inséré mes valeurs et j'ai cliqué sur enregistré il m'a afficher un autre erreur "Notice: Undefined index: Id_user in C:"
et cet erreur vient de cette ligne de code dans ma deuxièmme page .
//on enregistre d'abord dans la table scenario
$sql_1="INSERT INTO scenario (id_scenario,Id_user,titre,commentaire) VALUES('','".$_SESSION['user']."','".$titre."','".$commentaire."')";
echo $sql_1;
pouratnt dans mes 2 table ( User et scenario) sql j'en ai l'id_user -
en fait pour la page head il juste session_start();
et j'ai la page accueil dans la quelle si un user est connecté j'affiche tous les pages que lui concerne du coup j'ai utilisé
<?php
// si l'utilisateur est connecté comme simple utilisateur ...
if($_SESSION['privilege'] == "user") { // Affichage conditionnel : si et seulement si l'utilisateur est connecté avec le privilege utilisateur simple ?>
<strong><u>En tant qu'utilisateur simple vous ne pouvez pas effectuer d'actions</u></strong>
<?php } -
ContributeurIl faut gérer le cas où tu n'as pas de Id_User :
///// --------------------- ////----- Partie recherche des scenari pour cet utilisateur -------- $Id_user = (isset($_SESSION['Id_user'])) ? $_SESSION['Id_user'] : null; //recup du choix eventuel dans la liste déroulante scénario if ($Id_user != null){ if(isset($_POST['liste_scenario'])){ $scenario=$_POST['liste_scenario']; } else { $scenario=""; } $sql="SELECT * FROM scenario WHERE Id_user='".$Id_user."' "; //echo "<br />".$sql; $requete = $db->query($sql); //comptage du nb de scénario trouvé pour cet utilisateur $row_cnt = mysqli_num_rows($requete); if($row_cnt>0){
-
Mihawk: il m'affiche Undefined index:
ThEBiShOp : pour la sussion_start() j'ai inclue une page head dans la quelle il y la sussion_start() -
Merci Mihawk, merci ThEBiShOp je faisais comme tu m'as dit Mihawk là c'est bon pour les compteurs mais pour l'id_user tjrs il es undifined
//recup id_utilisateur dans la variable de session
$Id_user=$_SESSION['Id_user'];// ici l'erreur -
j'ai éliminé la partie if (isset($_POST['enr_modifs']))
il m'a afficher que tous mes variables son Undifined non seulement les 3 compteurs -
ContributeurDéplace l'initialisation des compteurs au début du code :
<?php $msg_enr_modifs=""; //init compteurs $nb_insert=0; $nb_update=0; $nb_delete=0;
-
alors j'élimine la if (isset($_POST['enr_modifs'])) ????
-
voilà le code sans Global
<?php
require_once('dbconnect.php');
?>
<?php
$msg_enr_modifs="";
//// -- partie enregistrement des modifs scénario ----
if(isset($_POST['enr_modifs'])){
//le bouton enr modifs a été cliqué
$cof_eau_du_sol = $_POST['cof_eau_du_sol'];
$niv_de_debordement = $_POST['niv_de_debordement'];
$taux_concentration = $_POST['taux_concentration'];
$pour_etanchite = $_POST['pour_etanchite'];
$niv_depart = $_POST['niv_depart'];
$sal_sol = $_POST['sal_sol'];
$but = $_POST['but'];
$choix_sortie = $_POST['choix_sortie'];
$origine_iragation = $_POST['origine_iragation'];
$sal_eau_entre = $_POST['sal_eau_entre'];
$condition_climatique = $_POST['condition_climatique'];
$annee = $_POST['annee'];
//$Mois = $_POST['Mois'];
$titre=$_POST['titre'];
$commentaire=$_POST['commentaire'];
//on UPDATE d'abord dans la table scenario les modifs éventuelles de titre et commentaire
$sql_1="UPDATE scenario SET titre='".$titre."',commentaire='".$commentaire."' WHERE id_scenario='".$id_scenario."'";
$requete1 = $db->query($sql_1) ;
//puis Update ou insert ou Delete dans table valeurs
//init compteurs
$nb_insert=0;
$nb_update=0;
$nb_delete=0;
// 3 cas: ajout, modif, supression
if(empty($cof_eau_du_sol) && empty($niv_de_debordement) && empty($taux_concentration)&& empty($pour_etanchite)&& empty($niv_depart)
&& empty($sal_sol)&& empty($but)&& empty($choix_sortie)&& empty($origine_iragation)&& empty($sal_eau_entre)&& empty($condition_climatique)){
//les champs ne sont pas vides mais étaient vides avant, c'est un ajout donc INSERT
$sql='insert into valeurs_a_saisir(Id_valeur,cof_eau_du_sol, niv_de_debordement, taux_concentration, pour_etanchite, niv_depart, sal_sol, but, choix_sortie, origine_iragation, sal_eau_entre, condition_climatique, annee, Mois,id_scenario) values ("'.$cof_eau_du_sol.'", "'.$niv_de_debordement.'", "'.$taux_concentration.'", "'.$pour_etanchite.'", "'.$niv_depart.'", "'.$sal_sol.'", "'.$arraybut[$mois].'", "'.$choix_sortie.'", "'.$origine_iragation.'", "'.$sal_eau_entre.'", "'.$condition_climatique.'", "'.$annee.'", "'.$Mois.'","'.$id_scenario.'")';
$requete = $db->query($sql) ;//or die( mysql_error() );
}
echo "<br />".$sql;
$requete = $db->query($sql) ;
$nb_insert++;
//}
//un ou les champs ont eté modifiés, donc UPDATE
$sql="UPDATE valeurs SET cof_eau_du_sol='".$cof_eau_du_sol."', niv_de_debordement='".$niv_de_debordement."' taux_concentration='".$taux_concentration."'pour_etanchite='".$pour_etanchite."'niv_depart='".$niv_depart."'sal_sol='".$sal_sol."'but='".$arraybut[$mois]."'choix_sortie='".$choix_sortie."'origine_iragation='".$origine_iragation."'sal_eau_entre='".$sal_eau_entre."'condition_climatique='".$condition_climatique."'annee='".$annee."' WHERE id_scenario ='".$id_scenario."' AND mois='".$mois."'";
echo "<br />".$sql;
$requete = $db->query($sql) ;
$nb_update++;
if(empty($cof_eau_du_sol) && empty($niv_de_debordement) && empty($taux_concentration)&& empty($pour_etanchite)&& empty($niv_depart)
&& empty($sal_sol)&& empty($but)&& empty($choix_sortie)&& empty($origine_iragation)&& empty($sal_eau_entre)&& empty($condition_climatique)){
//les champs sont vides mais n'étaient pas vides avant, c'est une suppression de valeurs donc DELETE
$sql="DELETE FROM valeurs_a_saisir WHERE id_scenario ='".$id_scenario."'";
echo "<br />".$sql;
$requete = $db->query($sql) ;
$nb_delete++;
}
}
//message du nombre d'enr dans la BDD
$msg_enr_modifs='<font color="green">';
if($nb_insert>0) $msg_enr_modifs.=$nb_insert." ajout de lignes de valeurs<br />";
if($nb_update>0) $msg_enr_modifs.=$nb_update." lignes de valeurs modifiées<br />";
if($nb_delete>0) $msg_enr_modifs.=$nb_delete." lignes de valeurs suprimées<br />";
$msg_enr_modifs.='</font>';
// c'est ici qu'il m'affiche l'erreur
///// ---------------------
////----- Partie recherche des scenari pour cet utilisateur --------
//recup id_utilisateur dans la variable de session
$Id_user=$_SESSION['Id_user'];// ici même erreur
//recup du choix eventuel dans la liste déroulante scénario
if(isset($_POST['liste_scenario'])){
$scenario=$_POST['liste_scenario'];
}else{
$scenario="";
}
$sql="SELECT * FROM scenario WHERE Id_user='".$Id_user."' ";
//echo "<br />".$sql;
$requete = $db->query($sql);
//comptage du nb de scénario trouvé pour cet utilisateur
$row_cnt = mysqli_num_rows($requete);
if($row_cnt>0){
//si il y un ou des scénario, on affiche la page avec la liste déroulante
?> -
dans le 2 cas avec ou bien sans global il m'affiche toujours le même erreur , vous savez pas d'ou vient cet erreur :((((((
- 1
- 2