Copie Array 3d

yacinebosss Messages postés 156 Date d'inscription   Statut Membre Dernière intervention   -  
yacinebosss Messages postés 156 Date d'inscription   Statut Membre Dernière intervention   -
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);

A voir également:

7 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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);

2
yacinebosss Messages postés 156 Date d'inscription   Statut Membre Dernière intervention   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.
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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);
0
yacinebosss Messages postés 156 Date d'inscription   Statut Membre Dernière intervention   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)
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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");
  }

});

0
yacinebosss Messages postés 156 Date d'inscription   Statut Membre Dernière intervention   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.
0

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

Posez votre question
yacinebosss Messages postés 156 Date d'inscription   Statut Membre Dernière intervention   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";
}
?>

0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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'";
0
yacinebosss Messages postés 156 Date d'inscription   Statut Membre Dernière intervention   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
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Que t'affiche la console au niveau de ta requête ajax ? (Onglet paramètres et reponse ) ?
0
yacinebosss Messages postés 156 Date d'inscription   Statut Membre Dernière intervention   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.

.
0