Copie Array 3d

Fermé
yacinebosss Messages postés 157 Date d'inscription jeudi 27 décembre 2012 Statut Membre Dernière intervention 18 décembre 2021 - Modifié le 18 mai 2020 à 17:13
yacinebosss Messages postés 157 Date d'inscription jeudi 27 décembre 2012 Statut Membre Dernière intervention 18 décembre 2021 - 20 mai 2020 à 12:15
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 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
18 mai 2020 à 17:23
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 157 Date d'inscription jeudi 27 décembre 2012 Statut Membre Dernière intervention 18 décembre 2021 3
Modifié le 18 mai 2020 à 17:30
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 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
18 mai 2020 à 17:52
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 157 Date d'inscription jeudi 27 décembre 2012 Statut Membre Dernière intervention 18 décembre 2021 3
Modifié le 18 mai 2020 à 18:08
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 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
18 mai 2020 à 21:22
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 157 Date d'inscription jeudi 27 décembre 2012 Statut Membre Dernière intervention 18 décembre 2021 3
19 mai 2020 à 13:59
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 157 Date d'inscription jeudi 27 décembre 2012 Statut Membre Dernière intervention 18 décembre 2021 3
Modifié le 19 mai 2020 à 20:10
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 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
19 mai 2020 à 20:22
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 157 Date d'inscription jeudi 27 décembre 2012 Statut Membre Dernière intervention 18 décembre 2021 3
Modifié le 19 mai 2020 à 23:54
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 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
20 mai 2020 à 07:31
Que t'affiche la console au niveau de ta requête ajax ? (Onglet paramètres et reponse ) ?
0
yacinebosss Messages postés 157 Date d'inscription jeudi 27 décembre 2012 Statut Membre Dernière intervention 18 décembre 2021 3
Modifié le 20 mai 2020 à 12:45
"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