Copie Array 3d

Signaler
Messages postés
138
Date d'inscription
jeudi 27 décembre 2012
Statut
Membre
Dernière intervention
25 juin 2020
-
Messages postés
138
Date d'inscription
jeudi 27 décembre 2012
Statut
Membre
Dernière intervention
25 juin 2020
-
comment puis-je ressoudre cette erreur?

jessaye decopie un Array 3d.

"Uncaught TypeError: Cannot read property '0' of undefined"

mon code:
 var personne=[["yacine","23","bonjour"],["louben","90","coucou"]]
 console.log(personne[0],[1]);
var copie;
 for (var i =0;i<= 1; i++) {
  for (var j =0;i<3; i++) {
    copie[i][j] = personne[i][j];
  }}
 console.log(copie);

7 réponses

Messages postés
28935
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
9 juillet 2020
2 608
Bonjour,

Donc, au final, tu cherches à faire une copie du tableau ?
Dans ce cas, ton code revient simplement à ça
    var personne=[["yacine","23","bonjour"],["louben","90","coucou"]]
     console.log(personne[0][1]);
    var copie = personne
     console.log(copie);

Messages postés
138
Date d'inscription
jeudi 27 décembre 2012
Statut
Membre
Dernière intervention
25 juin 2020
3
non mais regarde quand jessaye de faire ca:
var personne=[["yacine","23","bonjour"],["louben","90","coucou"]]
 console.log(personne[0],[1]);

 var copie = personne;

 copie[2][0]="houcine";
 copie[2][1]=100;
 copie[2][2]=["cv?"];
 console.log(copie);


ca me fait la meme erreur.
si comme si on ne pouvait pas travailler avec.
Messages postés
28935
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
9 juillet 2020
2 608
IL te dit que copie[2] n'existe pas... et en effet... il n'existe pas;
Si tu veux ajouter des éléments, ça n'est pas comme en php !
Tu peux utiliser du array.push
 var copie = personne;
  copie.push(["houcine",100,"cv"]);
 console.log(copie);
Messages postés
138
Date d'inscription
jeudi 27 décembre 2012
Statut
Membre
Dernière intervention
25 juin 2020
3
ok moi je veux envoyé un Array depuis php qui ressemble a ca en forma JSON viya ajax et qui ressemble a ca:

{"1":["yacine","23","coucou"],"2":["yacine","40","coucou"],"3":["haciba","50","belle article."],"4":["yacine","23","bonjour les amis"],"0":6}


mais dit stp que je peux le manipuler apres dans javascirpt.
je veux seulement mettre ces valeur dans mon html en passant par javascript

voci mon js:
var data1;
  
  $.ajax({
   url: "SELECT_COMMENTAIRE.php",
   type: 'POST',
   dataType:'json',
   success: function(dataglobal) {
  //data1[0] = dataglobal[0];
  console.log(dataglobal[0]);   
  

  for (var i =1;i<= dataglobal[0]; i++) {
  //for (var j =0;i<3; i++) {
    data1.push =([dataglobal[i][0],dataglobal[i][1],dataglobal[i][2]]) ;
  }
  data1[0]=dataglobal[0];
console.log(data1[1][0]);
//alert(data1[0][0]);// alerts first string
  },error: function(err){
      console.log('Erreur Ajax',err);
     alert("erreur ajax ou aucun commentaire");
  }

});


      var vcomm;
      var nom_age;
      var le_commentaire;   
      var separation;
     vcomm = document.getElementById("VOS COMMENTAIRE");

    //console.log("data1[0]="+data1[1][0]);

        onload=function addcomm(){
            
            console.log("ajout");
       var i=1;
       while(i<=data1[0]) {   
            nom_age = document.createElement('p')
            le_commentaire = document.createElement('p')
            separation = document.createElement('div')
            
            

           
          
            vcomm.appendChild(nom_age);
            vcomm.appendChild(le_commentaire);
            vcomm.appendChild(separation);

            nom_age.innerHTML= data1[i][0]+ " " + data1[i][1] + " " +"ans";
            le_commentaire.innerHTML= data1[i][2];
            
            nom_age.classList.add("nom_age");
            le_commentaire.classList.add("le_commentaire");
            separation.classList.add("LigneHonrizontalcommentaire");

             i++;
            }

        }



quand justlise
console.log(dataglobal[0])
ca maffiche 6 (la valeur attendu) mais jessaye de le copier dans une variable ca me fait erreur :

le babezien.js:168 Uncaught TypeError: Cannot set property 'push' of undefined
at Object.success (le babezien.js:168)
at c (jquery-3.5.1.js:2)
at Object.fireWith [as resolveWith] (jquery-3.5.1.js:2)
at l (jquery-3.5.1.js:2)
at XMLHttpRequest.<anonymous> (jquery-3.5.1.js:2)
Messages postés
28935
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
9 juillet 2020
2 608
1 - Il faut initialiser la variable data1 comme un array si tu veux pouvoir faire un push
2- Si tu veux juste récupérer le contenu dans ta variable.. pourquoi ne fais tu pas comme dans mon exemple ??
Car il suffit donc de faire
  data1  = dataglobal[0] ;


3 - Quel est l'intéret de passer par cette variable data1 alors que tu pourrais faire le traitement directement dans le success de ton ajax ??

Sachant que ton code PHP devrait ressembler à ça
$servername = "localhost";
$username = "*******";
$password = "";
$dbname = "******";


//SELECT DATA

$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
  die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT nom, age, le_commentaire FROM commentaire";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
  // output data of each row
  while ($row = $result->fetch_assoc()) {
    $dataglobal[] = array($row["nom"],$row["age"],$row["le_commentaire"]);
  }
  $conn->close();
  //echo ($i);
  echo json_encode($dataglobal);
} else {
  echo "0 results";
}


voir même; dans l'idéal, utiliser un tableau associatif et donc, ton code devient
$servername = "localhost";
$username = "*******";
$password = "";
$dbname = "******";


//SELECT DATA

$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
  die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT nom, age, le_commentaire FROM commentaire";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
  // output data of each row
  while ($row = $result->fetch_assoc()) {
    $dataglobal[] = $row;
  }
  $conn->close();
  //echo ($i);
  echo json_encode($dataglobal);
} else {
  echo "0 results";
}


ainsi, dans ton retour Ajax, côté JS, tu peux alors utiliser directement
  $.ajax({
   url: "SELECT_COMMENTAIRE.php",
   type: 'POST',
   dataType:'json',
   success: function(dataglobal) {
    console.log(dataglobal);  
    
    var vcomm = document.getElementById("VOS COMMENTAIRE");
    
    $.each(dataglobal,function(i,el){
      var nom_age = document.createElement('p');
      nom_age.innerHTML = el.nom + "  " + el.age;
      vcomm.appendChild(nom_age);
      
      var le_commentaire = document.createElement('p');
      le_commentaire.innerHTML = el.le_commentaire;
      vcomm.appendChild(le_commentaire);
      le_commentaire.classList.add("le_commentaire");
      
      var separation = document.createElement('div');
      vcomm.appendChild(separation);
      separation.classList.add("LigneHonrizontalcommentaire");
    });
  
  },error: function(err){
      console.log('Erreur Ajax',err);
     alert("erreur ajax ou aucun commentaire");
  }

});

Messages postés
138
Date d'inscription
jeudi 27 décembre 2012
Statut
Membre
Dernière intervention
25 juin 2020
3
merci grace a toi j'ai pu ressoudre ce probléme.
sauf que j'ai pas utilisé .each car ca me fesait indefined.
et comme elle est nouvelle pour j'ai utlisé une boucle.
Messages postés
138
Date d'inscription
jeudi 27 décembre 2012
Statut
Membre
Dernière intervention
25 juin 2020
3
bon ok j'ai fait ca, ca marche bien: mais je comment presice la requete SELECT

<?php

 //insert data

$servername = "localhost";
$username = "redouane";
$password = "";
$dbname = "LeBabezien";

$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}


$sql = "SELECT date_article, langue, edition, src FROM article WHERE id_article='$id'";
//comment je peux lui envoyer le id voulu est qui se trouve dans l'url
/**/

$result = $conn->query($sql);

if ($result->num_rows > 0) {
  // output data of each row
  $article_info=array();
    while ($row = $result->fetch_assoc()) {
     # code...
    $article_info[] = array($row["date_article"],$row["langue"],$row["edition"],$row["src"]);
   
   

    
      
  }
  
  
  //echo ($i);
  echo json_encode($article_info);
  //echo ($dataglobal);




} else {
  echo "0 results";
}
?>

Messages postés
28935
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
9 juillet 2020
2 608
Coté JS il faut envoyer l'id dans ta requête ajax
var id = "<?php echo $_GET['id'];?>";
 $.ajax({
   url: "SELECT_COMMENTAIRE.php",
   type: 'POST',
   dataType:'json',
   data : {id:id},


Et côté PHP

$id = !empty($_POST['id']) ? $_POST['id'] : NULL;
$sql = "SELECT date_article, langue, edition, src FROM article WHERE id_article='$id'";
Messages postés
138
Date d'inscription
jeudi 27 décembre 2012
Statut
Membre
Dernière intervention
25 juin 2020
3
je vois pas du tout comment faire jessaye depuis tout a lheur rien a faire

voici le mieu que j'ai pu faire:
function getParamByName(name, url) {
    if (!url) url = window.location.href;
    name = name.replace(/[\[\]]/g, "\\$&");
    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
        results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, " "));
    console("fait");
}

  var id_article= getParamByName('id_article');
  
console.log(id_article);

 $.ajax({
   url: "*ARTICLE_INFO.php",
   type: 'POST',
   dataType:'json',
   data :{id:id_article},
   success: function(id){
    

   },error:function(err){

console.log("id non envoyé");
   }


   });

je peux recuper le get mais pour lenvoyer ca j'ai pas pu
Messages postés
28935
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
9 juillet 2020
2 608
Que t'affiche la console au niveau de ta requête ajax ? (Onglet paramètres et reponse ) ?
Messages postés
138
Date d'inscription
jeudi 27 décembre 2012
Statut
Membre
Dernière intervention
25 juin 2020
3
"id envoyé"
donc le ajax marche normalement. mais quand je fait console.log(id), ca me envoie dans la reponse l'url.
mais le plus bizzare ces comme que l'url est que dans la base donné. mais le code php me renvois une erreur.

.