Problème de résolution Notice: Undefined variable en php

Par MBarr, il y a 9 ans


Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

Décrivez ici votre code ou ce que vous cherchez à faire

<div class='col-md-10'> <div class='elementListe' style='".$style."' data-id='".$data_id."' data-idEmetteur='".$data_idEmetteur."' data-idDestinataire = '".$data_idDestinataire."' data-nom='".$data_nom."' data-prenom = '".$data_prenom."'> <div class='affichEmetteur'>".htmlspecialchars($current_Emetteur)." </div> <div class='affichDate'>".$date." </div> <div class='affichObjet'><i>".htmlspecialchars($objet)." </i></div> <div class='affichTexte'> ".$textRaccourci." </div><div class='message' style='display:none;'>".$textFull."</div> </div> </div> </div></a> ";

Ce que je veux

Normalement j'ai la reponse mais je ne comprend pas pourquoi j'ai ces messages d'erreurs

Ce que j'obtiens

Notice: Undefined variable: data_nom in /home/dohconsugo/www/edt/LASTEST/DOHConsultants/Vue/ReceivedMessages.php on line 71

Notice: Undefined variable: data_prenom in /home/dohconsugo/www/edt/LASTEST/DOHConsultants/Vue/ReceivedMessages.php on line 71

Notice: Undefined variable: current_Emetteur in /home/dohconsugo/www/edt/LASTEST/DOHConsultants/Vue/ReceivedMessages.php on line 71

7 réponses

Carouge10, il y a 9 ans

Bonjour,

C'est variable n'existe pas, tout simplement.
Sans plus de code, on ne pourra pas vous aidez d'avantage.

MBarr, il y a 9 ans

Merci beaucoup pour votre réponse avant tout
voici ci-dessous mon code en entier, merci encore d'avance

<style>
.tickbox{
width : 15px;
height : 15px;
border : solid #428BCA 1px;
}
.active .tickbox{
width : 15px;
height : 15px;
border : solid #fff 1px;
}
</style>
<!-- link rel="stylesheet" href="DOHConsultants/Vue/styleAffichageMessages.css" -->
<div id="boiteReception" class="container">
<div class="row">
<div class="col-md-12" id="boutons">
<button id="boutonRepondre" class="btn btn-default">Répondre</button>
<button id="boutonSupprimer" class="btn btn-default">Supprimer</button>
<button id="boutonArchiver" class="btn btn-default">Archiver</button>
</div>
<div class="col-md-12"> </div>

<div id="listeMessages" class="col-md-3">
<div class="list-group">

<?php
    for($i=0 ; $i < sizeof($messages) ; $i++){

        $style="";

        if($messages[$i] -> getVu() == 0){
            $style = "font-weight : bold";
        }

        for($j=0 ; $j < sizeof($tableauMembres) ; $j++){

            if($tableauMembres[$j] -> getId() == $messages[$i] -> getEmetteur()){
                $current_Emetteur = $tableauMembres[$j] -> getNom()." ".$tableauMembres[$j] -> getPrenom() ;
                $data_nom =  $tableauMembres[$j] -> getNom();
                $data_prenom =  $tableauMembres[$j] -> getPrenom();
            }
        }

        $objet = $messages[$i] ->getObjet();
        if($objet == "")
            $objet = "(Aucun objet)";

        $date = date("d/m/Y (H:i)",strtotime($messages[$i] -> getDate()));
        // str_replace(" ","_",htmlentities($current_Emetteur));
         $data_id= $messages[$i] -> getId();
         $data_idEmetteur = $messages[$i] -> getEmetteur();
         $data_idDestinataire= $messages[$i] -> getDestinataire();

         $textFull = htmlspecialchars($messages[$i] ->getTexte());
         $textRaccourci = implode(' ', array_slice(explode(' ', $textFull ), 0, 5));

         if($textRaccourci != $textFull)
            $textRaccourci .= "... ";

         //Représente 1 message dans la liste des messages
        echo "<a href='#' class='list-group-item'>
        <div class='row'>
            <div class='col-md-2' >
                <div class='tickbox' style='display: inline-block; vertical-align: middle; float: none;' ></div>
            </div>
            <div class='col-md-10'>
                <div class='elementListe' style='".$style."' data-id='".$data_id."'  data-idEmetteur='".$data_idEmetteur."' data-idDestinataire = '".$data_idDestinataire."' data-nom='".$data_nom."' data-prenom = '".$data_prenom."'> <div class='affichEmetteur'>".htmlspecialchars($current_Emetteur)."   </div> <div class='affichDate'>".$date." </div> <div class='affichObjet'><i>".htmlspecialchars($objet)."  </i></div>  <div class='affichTexte'> ".$textRaccourci."  </div><div class='message' style='display:none;'>".$textFull."</div> </div>
            </div>
            </div></a>
                ";
    //enlever des data-[...] ?
    }

?>
</div>
</div>

<div id="affichageMessage" class="col-md-7">

<script>
var selectedMessageId="";
var oldSelected="";
var newSelected="";
var selectedElements = [];
var selectedEmetteurs = [];

$('.list-group-item:contains("reçus")').attr("class","list-group-item active");

$('.elementListe').on('click',function(){

$('#listeMessages > .list-group > .list-group-item').each(function(){
    $(this).attr("class",'list-group-item');
});

$(this).parent().parent().parent().attr("class",'list-group-item active');

selectedMessageId = $(this).data('id');

var emetteur = $(this).children(".affichEmetteur").text();
var objet = $(this).children(".affichObjet").text();

var date = $(this).children(".affichDate").text();

var texte = $(this).children(".message").html();

var messageCourant="<div id='entete'><h4>"+objet+"</h4> <div id='expediteurCourant'>Expéditeur : "+emetteur+"</div>  <div id='dateCourante'> Envoyé le : "+date+" </div>   </div><br>  <div id='texteCourant' style='word-wrap: break-word;'>"+texte+"  </div>";
$('#affichageMessage').html(messageCourant);

$(this).css("font-weight","normal");

var idMessage = $(this).data('id');
var data = {idMessage : idMessage};
$.ajax({
    url : "DOHConsultants/Modele/AjaxMessageLu.php",
    type : "POST",
    data : data
    // success : function(data,textStatus,jqXHR){

        // $(".elementListe [data-id='"+idMessage+"']").css("border","solid green 2px");
    // }
});
//
});

$(".tickbox").on("click",function(){
var tmp=$(this).parent().parent().children(".col-md-10").children(".elementListe");
var idCurrentMessage = tmp.data('id');
var idEmetteur = tmp.data('idemetteur');

    if($(this).html()==""){
        $(this).html("<i class='glyphicon glyphicon-ok'></i>");
        //ajout

        selectedElements.push(idCurrentMessage);
        selectedEmetteurs.push(idEmetteur);

    }
    else{
        $(this).html("");
        //On retire l'id du message du tableau
        var removeItem = idCurrentMessage;

        selectedElements = jQuery.grep(selectedElements, function(value) {
          return value != removeItem;
        });
        //On retire l'idDestinataire du tableau
        var removeItem = idEmetteur;

        selectedEmetteurs = jQuery.grep(selectedEmetteurs, function(value) {
          return value != removeItem;
        });

    }
});

$("#boutonRepondre").on("click",function(){
    var data={};
    for(var i=0;i<selectedElements.length;i++){
        data[i]=selectedEmetteurs[i];
    }
Carouge10, il y a 9 ans

Alors les variables peuvent ne pas exister à certains moment car ne son pas défini comme ici :

if($tableauMembres[$j]->getId() == $messages[$i]->getEmetteur()){ $current_Emetteur = $tableauMembres[$j]->getNom()." ".$tableauMembres[$j]->getPrenom() ; $data_nom = $tableauMembres[$j]->getNom(); $data_prenom = $tableauMembres[$j]->getPrenom(); }

Il serait préférable de mettre un "else" afin de les avoir toujours renseigné, même à vide ou encore mieux de les renseigné en debut de code et de les modifier si nécessaire. Exemple :

$data_nom = ''; $data_prenom = ''; for(.....) { if(......) { $data_nom = $mes_donnees; } }
MBarr, il y a 9 ans

Merci beaucoup ça marche, j'arrive à afficher bien mon message.

Carouge10, il y a 9 ans

Plus qu'à mettre le sujet en résolu

MBarr, il y a 9 ans

Comment on met le sujet en résolu?? C'est mon premier sujet sur ce forum.

Carouge10, il y a 9 ans

Il suffit de cliquer sur "ce sujet à résolu mon problème" a droite de chaque post, sur celui qui vous a aider.