IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Supprimer totalement ligne d'un array


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 169
    Par défaut Supprimer totalement ligne d'un array
    Bonjour,


    J'ai un souci avec splice.
    Mon array n'est pas ordonné, les key sont personalisés, il y a donc des trous partout.
    J'utilise donc des "for (truc in monarray)"

    Pour supprimer une ligne j'utilise pour le moment splice.
    Mais le reste de l'array, à la suite de la ligne supprimée ne s'affiche plus.
    Je demande l'affichage par un for, je demande cet affichage après la mise à jour de l'array pour l'actualiser.

    Petit exemple au cas où je ne soit pas clair comme une fontaine.

    [12][0] = 'toto'
    [12][1] = 'toto1'
    [12][2] = 'toto2'
    [12][3] = 'toto3'
    [12][3][0] = 'toto4'
    [18][0] = 'titi1'
    [18][1] = 'titi2'
    [18][2][0] = 'titi3'
    [29][0] = 'tutu1'
    [74][0] = 'tata1'

    Si je supprime la ligne [18]
    les lignes 29 et 74 ne s'affichent plus quand je demande d'afficher tout l'array via un for.

    Je le fais depuis une page php/ajax
    echo "array_info.splice(".$id.");";


    Donc c'est moi ou c'est splice le probleme ?

    Bonne journée

  2. #2
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 115
    Par défaut
    Salut, c'est ta façon d'utiliser split qui est mauvaise.

    Il attends au moins deux paramètres : l'index à partir duquel supprimer, et le nombre de lignes à supprimer. Autrement, il enlève tout depuis l'index indiqué.
    Tu peux aussi rajouter une valeur par laquelle remplacer la valeur retirée.

    Dans ton cas, il faut donc écrire : ton_array.splice(id,1);


    Les cours du w3c sont parfaits pour répondre à ce genre de questions

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 169
    Par défaut
    Effectivement, grosse boulette de ma part.
    Merci de m'avoir corrigé.
    Je pensais pourtant avoir bien lu.

    Sauf que maintenant il ne fait rien.
    Je vais chercher pourquoi.

    Merci

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 169
    Par défaut
    une fois que j'ai fais le splice.
    Je relance le "for (truc in monarray)" pour afficher la nouvelle liste.

    Via des alerte qui me donne les N° des id je vois que sa s'arrête à l'endroit qui a été supprimé. Et donc le script ne fonctionne plus.

    Je ne sais pas trop quoi faire.

    Mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	$sql = "DELETE FROM LR_matable WHERE user_id = '".$user_id."' AND id = '".$id."'";
    	$r=mysql_query($sql) or die(mysql_error());
    	echo "array_info.splice(".$id.",1);";
    	echo "restore_view();";
    Le restore_view ne fonctionne plus, quel que soit ce que je demande. Cette fonction liste dans des tables et div l'ensemble du contenu de ma page, et don du contenu de monarray. Je dois recharge ma page pour que ca marche donc c'est lié au splice et pas a ma bdd.

    Info +:
    Si je lui colle une alerte avant de lui demande de liste le contenu. disons :
    alert(array_info[77][1]);

    Après le splice cette alerte me donne la value uniquement le N° supprimé est plus loin dans la liste de l'array. Alors que je ne lui demande pas d'affiche ou de le lire le N° supprimé, juste de pointer sur le N° demandé.

  5. #5
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 115
    Par défaut
    Salut,

    J'ai testé le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    var x;
    var txt="";
    var person=new Array();
    person[12]=new Array();
    person[12][0] = 'toto';
    person[12][1] = 'toto1';
    person[12][2] = 'toto2';
    person[12][3] = 'toto3';
    person[12][3]=new Array();
    person[12][3][0] = 'toto4';
    person[18]=new Array();
    person[18][0] = 'titi1';
    person[18][1] = 'titi2';
    person[18][2]=new Array();
    person[18][2][0] = 'titi3';
    person[29]=new Array();
    person[29][0] = 'tutu1';
    person[74]=new Array();
    person[74][0] = 'tata1';
     
    person.splice(18,1);
     
    for (x in person)
    {
    txt=txt + person[x];
    }
     
    document.getElementById('p1').innerHTML=txt;
    Il fonctionne parfaitement, en m'affichant : "toto,toto1,toto2,toto4tutu1tata1". Je ne peut qu'en déduire que l'erreur vient de tes fonctions personnelles. Lesquelles seront difficile à corriger si l'on ignore totalement à quoi elles ressemblent

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 169
    Par défaut
    Je vais essayer de te filer les bout de codes utiles.
    Pour éviter de saturer le message.
    Mais je me demande si tu va t'en sortir avec mon bordel de codes.

    Toutefois c'est uniquement quand j'active le splice que ca déconne.
    Là je sature et je ferais plus de test demain, dimanche
    Je vais sans doute essayer de mettre mes codes dans ton exemple, peu à peu et attendre que ca déconne.
    Merci.

    Le traitement du splice.
    C'est envoyé via ajax à une page php qui contient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    elseif ($_POST['action'] == 6)
    {
    	$sql = "DELETE FROM LR_arts_event WHERE user_id = '".$user_id."' AND id = '".$id."'";
    	$r=mysql_query($sql) or die(mysql_error());
    	echo "array_info.splice(".$id.",1);";
    	echo "restore_view();";
    }
    La function restore
    Elle dans chargé au chargement de ma page principale. Elle est souvent utilisée. Ajax a une function retour d'active pour utiliser mes function déjà ecrites.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function restore_view()
    {
    	full = list_all_event();
    	document.getElementById('div_all_event').innerHTML = full;
    }

    La function liste_all_event est aussi chargée au chargement de ma page principale. Je te le met entière au cas où.
    Je passe les autre fonction contenue dans celle-ci, mais je te e=les donne si nécessaire. Je ferais d'autres tests Dimanche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    function list_all_event()
    {
     
    action = 'javascript:modif_event(0,"new_event");';
    full = "<div style='width:220px'><a href='"+action+"'><div class='mon_btn btn200'>Ajouter un évenement</div></a></div>";
     
    full += "<table class='Form_fond w590'><tr><td valign='top'>";
     
    for (val in array_info)
    {
     
    // DIV DE L'EVENT EN COURS / une pour chaque event
    full += "<div id='"+array_info[val][0]+"' style='display:block;'>";
     
    // TABLE 2 (TITRE)
    full += "<table class='Table_100 w100p'><tr><td><b>"+array_info[val][1]+"</b></td>";
     
    // AFFICHER MODIFIER SUPPRIMER
    full += "<td valign='top' align='right' width='55'><a href='javascript:show_div("+array_info[val][0]+")'>Afficher</a></td><td valign='top' align='right' width='60'><a href='javascript:modif_event(1,"+array_info[val][0]+");'>Modifier</a></td><td valign='top' align='right' width='80'><a href='javascript:send2ajax(6,0,"+array_info[val][0]+");'>Supprimer</a></td></tr>";
     
    // tr td DIV(2) (INFOS DE L'EVENT + LIEU ET DATE)
    full += "<tr><td colspan='4'><div id='info_"+array_info[val][0]+"' style='display:none;'>";
    // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    // TABLE(3) (EVENT)
    full += "<table class='Table_100 w100p' style='border:solid 1px #aaa'>";
     
    // ====================================
    // TR (IMAGE + INFOS)
    // IMAGE
    full += "<tr><td valign='top' style='max-width:140px'><img src='"+array_info[val][15]+"' border='0' style='margin-top:5px;margin-left:5px;max-width:133px;max-height=133px'/></td>";
     
    // TD (séparation image + EVENT)
    full += "<td>&nbsp;</td><td valign='top'>";
     
     
    // _____________________________________
    // TABLE INFOS DE L'EVENT
     
    // -------------------------------------
    // TABLE INFOS EVENT // FIN TABLE INFO EVENT
    full += insert_event_info(array_info[val][0]);
    // -------------------------------------
     
    // _____________________________________
     
    // FIN TR DANS TABLE(3b)
    full += "</td></tr><tr><td valign='top' colspan='3'><hr /></td></tr>";
    // ====================================
     
    // ====================================
    // NOUVEAU TR TD DANS TABLE(3)
    full += "<tr><td valign='top' colspan='3'>";
     
     
    // _____________________________________
    // TABLE(4b) (LISTES LIEU ET DATE)
    full += "<table class='Table_100 w100p'><tr><td align='center' width='50%'><a href='"+add_lieu+"'>Ajouter un lieu</a></td><td align='center'><a href='"+add_date+"'>Ajouter une date</a></td></tr>";
     
     
    // TR/TR MES LIEUX MES DATES
    full += "<tr><td align='center'><b>Mes lieux</b></td><td align='center'><b>Mes dates</b></td></tr>";
     
    // FIN TABLE(4b)
    full += "</table>";
    // _____________________________________
     
    // _____________________________________
    // TABLE(4c) (LISTE LIEU ET DATE)
    full += "<table class='Table_100 w100p'>";
     
    // DIV(4a) (LISTE DES LIEUX)
    // FIN DIV(4a)
    full += "<tr><td valign='top' width='50%'>";
    full += "<div id='lieu_"+array_info[val][0]+"' style='auto;display:block;'>";
    full += insert_lieu(array_info[val][0]);
    full +="</div></td>";
     
     
    // DIV(4b) (LISTE DES DATES)
    // FIN DIV(4b)
    full += "<td><div id='date_"+array_info[val][0]+"' style='max-height:200px;overflow-y:auto;display:none;'></div></td></tr><tr><td valign='top' colspan='3'>&nbsp;</td></tr>";
     
    // FIN TABLE(4c) (LISTE LIEU ET DATE)
    full += "</table>";
    // _____________________________________
     
     
    // FIN TR DANS TABLE(3)3
    full += "</td></tr>";
    // ====================================
     
    // FIN TABLE(3) (L'EVENT)
    full += "</table>";
    // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
     
    // FIN DIV(2) POUR INFOS COMPLET DE L'EVENT 
    full += "</div>";
     
    // FIN TABLE(2) POUR TITRE + FIN DIV DE L'EVENT EN COURS
     
    full += "</td></tr></table></div>";
    }
     
    return full;
    }

Discussions similaires

  1. Supprimer plusieurs lignes d'un array
    Par Guignon dans le forum Langage
    Réponses: 3
    Dernier message: 07/01/2015, 16h57
  2. Supprimer une ligne dans un array
    Par Orel01 dans le forum MATLAB
    Réponses: 2
    Dernier message: 06/12/2009, 22h34
  3. supprimer une ligne donnée d'un array
    Par BYALI dans le forum Langage
    Réponses: 6
    Dernier message: 16/07/2008, 15h13
  4. Réponses: 1
    Dernier message: 13/03/2008, 12h13
  5. Supprimer une ligne dans un fichier
    Par sbeu dans le forum Langage
    Réponses: 3
    Dernier message: 13/05/2003, 10h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo