Récupérer une valeur depuis ajax [Résolu]

Signaler
-
Messages postés
2
Date d'inscription
lundi 14 juin 2021
Statut
Membre
Dernière intervention
16 juin 2021
-
Bonjour à tous,
j'ai besoin de votre aide SVP ..
J'ai une petite question toute bête mais qui me bloque. ^^
Quand je clique sur le bouton 'annuler..' , il supprime le dernier élément et pas l’élément sélectionner
par exemple
j'ai trois courrier, je veux supprimer le premier avec son propre bouton il supprimer le dernier courrier
Voici mon code,

script 1 :


 $undo_destruction = NULL;
    if (($info['date_dexp'] > "0000-00-00") && ($info['date_dexp'] < "2005-01-01")) {
        $undo_destruction = new Balise();
        $undo_destruction->addComponent(new Balise('span',
                        array('class' => 'label hidden-xs', 'id' => 'change_badge_' . $info['id_courriers'])));
        $undo_destruction->addComponent(new Balise('input',
                        array(
                    'class' => 'hidden',
                    'id' => 'type_' . $info['id_courriers'],
                    'onclick' => 'annuler_demande()',
                    'type' => 'button',
                    'style' => 'margin: 2px 0px 4px 0px;',
                    'value' => la('EC_LISTE_COU_BTN_ANNULER', 'annuler la destruction')
        )));
        $script = <<<SCRIPT
        var i = 20; 
var link = document.getElementById('type_{$info['id_courriers']}');
if(document.getElementById('C_DOS').value == 'corbeille'){
 link.setAttribute('class','btn btn-danger visible');
}



function annuler_demande(event){
 $.cdvPost(
         
  'bpi.php?p=ec_courrier_numerique',
        'ws=annuler_demande_destruction&courrier={$info['id_courriers']}',
         

  function(data){
   $("#type_{$info['id_courriers']}").after(data);
   $("#type_{$info['id_courriers']}").remove();
 });
}
SCRIPT;


script 2 :
voici la fonction annuler _demande_destruction 

function annuler_demande_destruction()
{
  if(isset($_REQUEST['courrier'])){
    $q_courrier =  ' SELECT id_courriers,code,date_exp,date_dexp,date_corbeille,date_destruction,exp_id,type,colis,dossier FROM courriers WHERE id_courriers = :id_courriers AND id_client = :id_client LIMIT 1';
    $t_courrier = $_SERVER['PDO_LINK']->prepare($q_courrier);
    $t_courrier->execute(array(':id_courriers'=>intval($_REQUEST['courrier']),':id_client'=>$_SESSION['id']));
    $courrier = $t_courrier->fetch(PDO::FETCH_ASSOC);
    unset($t_courrier); ......



merci par avance

5 réponses

Messages postés
16448
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 juillet 2021
880
bonjour,
peux-tu donner les noms de tes deux scripts?
peux-tu partager le contenu de bpi.php?
peux-tu montrer le code source HTML de la page contenant le bouton "annuler"?
Messages postés
33137
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 juillet 2021
3 639
Bonjour

Le code que tu nous montres
function annuler_demande(event){
 $.cdvPost(
         
  'bpi.php?p=ec_courrier_numerique',
        'ws=annuler_demande_destruction&courrier={$info['id_courriers']}',
         

ne serait-il pas dans une boucle PHP ?
Car le javascript, il faut le mettre en dehors de ta boucle...
Et lors du clique sur le bouton, récupérer les 10 du courrier à envoyer dans le script JS..

Car la, tu as autant de fois la fonction JavaScript que tu as fait deux tours dans ta boucle... Par conséquent, lorsque tu cliques, ton programme ne sais pas quelle fonction il doit utiliser...


Merci pour votre réponse
non, il n'est dans une boucle PHP
Messages postés
33137
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 juillet 2021
3 639
Tu nous dis avoir trois courriers .... hors, ton code n'en ajoute qu'un seul ...
Comment génères tu les deux autres ?
$info vient d'où ?

Pourrais tu montrer le code COMPLET histoire qu'on se fasse une réelle idée de ce que tu as fait... ?
Ce n'est pas moi qui a développé ce code !!
$info c'est un tableau
le souci : quand je clique sur le bouton annuler il récupère un autre id (le dernier) pas celui que j'ai sectionné

voici le code :
function index_courrier_array_default_style_detail($info, $container = nil, $withThumbnails = false, $withFolder = true) {

    $type_courrier = '';
    $type_icon = '';
    switch ($info['colis']) {
        case 'O':
            $type_courrier = la("EC_LISTE_COU_TYPE_O", 'Colis');
            $type_icon = new Icon('fa fa-cube');
            break;

        case 'N':
            $type_courrier = la("EC_LISTE_COU_TYPE_N", 'Courrier');
            $type_icon = new Icon('fa fa-envelope-o');
            break;

        case 'U':
            $type_courrier = la("EC_LISTE_COU_TYPE_U", 'Numérique');
            $type_icon = new Icon('fa fa-envelope');
            break;

        case 'A':
            $type_courrier = la("EC_LISTE_COU_TYPE_A", 'Archive');
            $type_icon = new Icon('fa fa-briefcase');
            break;

        case 'P':
            $type_courrier = la("EC_LISTE_COU_TYPE_P", 'Palette');
            $type_icon = new Icon('fa fa-cubes');
            break;

        default:
            $type_courrier = la("EC_LISTE_COU_TYPE_AUCUN", 'Aucun');
            $type_icon = new Icon('fa fa-exclamation ');
            break;
    }
    if ($withThumbnails) {
        $tag_wrapper = new Balise('div', array('class' => 'col col-xs-12 col-lg-4'));
    } else {
        $tag_wrapper = new Balise('div', array('class' => 'col col-xs-12 col-lg-6'));
    }

    //--
    //-- Dans la liste des corbelles on ajoute les courriers en destruction physique dont on veut conserver les courriers numériques
    //--
    $undo_destruction = NULL;
    if (($info['date_dexp'] > "0000-00-00") && ($info['date_dexp'] < "2005-01-01")) {
        $undo_destruction = new Balise();
        $undo_destruction->addComponent(new Balise('span',
                        array('class' => 'label hidden-xs', 'id' => 'change_badge_' . $info['id_courriers'])));
        $undo_destruction->addComponent(new Balise('input',
                        array(
                    'class' => 'hidden',
                    'id' => 'type_' . $info['id_courriers'],
                    'onclick' => 'annuler_demande()',
                    'type' => 'button',
                    'style' => 'margin: 2px 0px 4px 0px;',
                    'value' => la('EC_LISTE_COU_BTN_ANNULER', 'annuler la destruction')
        )));}
    $script = <<<SCRIPT
var link = document.getElementById('type_{$info['id_courriers']}');
if(document.getElementById('C_DOS').value == 'corbeille'){
 link.setAttribute('class','btn btn-danger visible');
}
function annuler_demande(event){
 $.cdvPost(
         
  'bpi.php?p=ec_courrier_numerique',
        'ws=annuler_demande_destruction&courrier={$info['id_courriers']}',
         

  function(data){
   $("#type_{$info['id_courriers']}").after(data);
   $("#type_{$info['id_courriers']}").remove();
 });
}
SCRIPT;
        $undo_destruction->addComponent(new Script('script', $script));
Messages postés
33137
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 juillet 2021
3 639
C'est' un peu bordélique comme code...
$info est un tableau.... et visiblement tu le passes en argument d'une fonction..
Cette fonction.. elle est appelée où ? forcément dans une boucle ... mais bon..

On va faire du " qui marche mais pas propre.." ( comme ça on restera dans le style du code actuel )
DOnc :

  $undo_destruction->addComponent(new Balise('input',
                        array(
                    'class' => 'hidden',
                    'id' => 'type_' . $info['id_courriers'],
                    'onclick' => 'annuler_demande_{$info['id_courriers']}()',
                    'type' => 'button',
                    'style' => 'margin: 2px 0px 4px 0px;',
                    'value' => la('EC_LISTE_COU_BTN_ANNULER', 'annuler la destruction')
        )));}
    $script = <<<SCRIPT
var link = document.getElementById('type_{$info['id_courriers']}');
if(document.getElementById('C_DOS').value == 'corbeille'){
 link.setAttribute('class','btn btn-danger visible');
}
function annuler_demande_{$info['id_courriers']}(event){
 $.cdvPost(  
  'bpi.php?p=ec_courrier_numerique',
        'ws=annuler_demande_destruction&courrier={$info['id_courriers']}',

  function(data){
   $("#type_{$info['id_courriers']}").after(data);
   $("#type_{$info['id_courriers']}").remove();
 });
}
SCRIPT;


Messages postés
2
Date d'inscription
lundi 14 juin 2021
Statut
Membre
Dernière intervention
16 juin 2021

ça marche pas, y a une erreur au niveau de
'onclick' => 'annuler_demande_{$info['id_courriers']}()',
Messages postés
33137
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 juillet 2021
3 639
'onclick' => 'annuler_demande_' . $info['id_courriers'] . '()',
                   
Messages postés
2
Date d'inscription
lundi 14 juin 2021
Statut
Membre
Dernière intervention
16 juin 2021
>
Messages postés
33137
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 juillet 2021

Merci bcp ! C'est résolu