Récupérer une valeur depuis ajax

Résolu/Fermé
Sadia - Modifié le 13 juin 2021 à 20:40
Sadia_92_27 Messages postés 2 Date d'inscription lundi 14 juin 2021 Statut Membre Dernière intervention 16 juin 2021 - 14 juin 2021 à 11:26
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

yg_be Messages postés 23412 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 décembre 2024 Ambassadeur 1 557
13 juin 2021 à 21:15
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"?
0
jordane45 Messages postés 38358 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 28 décembre 2024 4 719
13 juin 2021 à 22:20
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...


0
Merci pour votre réponse
non, il n'est dans une boucle PHP
0
jordane45 Messages postés 38358 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 28 décembre 2024 4 719
13 juin 2021 à 23:38
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... ?
0
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));
0
jordane45 Messages postés 38358 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 28 décembre 2024 4 719
14 juin 2021 à 00:12
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;


0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Sadia_92_27 Messages postés 2 Date d'inscription lundi 14 juin 2021 Statut Membre Dernière intervention 16 juin 2021
14 juin 2021 à 00:32
ça marche pas, y a une erreur au niveau de
'onclick' => 'annuler_demande_{$info['id_courriers']}()',
0
jordane45 Messages postés 38358 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 28 décembre 2024 4 719
14 juin 2021 à 07:00
'onclick' => 'annuler_demande_' . $info['id_courriers'] . '()',
                   
0
Sadia_92_27 Messages postés 2 Date d'inscription lundi 14 juin 2021 Statut Membre Dernière intervention 16 juin 2021 > jordane45 Messages postés 38358 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 28 décembre 2024
14 juin 2021 à 11:26
Merci bcp ! C'est résolu
0