Bonjour tout le monde !

Je travaille sur un script php censé alimenter ma base de données à partir d'une "datagrid" créée avec Handsontable, mais là n'est pas le soucis.

Je voudrais que ce script ajoute à ma base de données les nouvelles données or ces dernières écrasaient les anciennes. Après de nombreuses heures passées dessus, j'ai réussi à réaliser cela sur une des tables mais je ne comprends pas pourquoi la seconde n'est pas mise à jour du tout.

De plus, mon code n'est probablement pas optimisé mais c'est la seule solution qui m'est venue.

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
 
<?php
try {
 
    session_start();
    require_once('./lib/demo/php/functions.php');
 
    $db = getConnection();
    $idMax = $db -> query('SELECT max(ID) FROM COMPETENCES');
    $result = $idMax -> fetch();
 
 
 
    $colMap = array(
        0 => 'LIBELLE',
        1 => 'DESCRIPTION',
        2 => 'CODE'
    );
 
  if (isset($_GET['data']) && $_GET['data']) {
 
 
	for ($r = 0, $rlen = count($_GET['data']); $r < $rlen; $r++) {
		$rowId = $r + 1;   
 
    		for ($c = 0, $clen = count($_GET['data'][$r]); $c < $clen; $c++) {
        	if (!isset($colMap[$c])) {
          		continue;
	}
 
 
 
        $newVal = $_GET['data'][$r][$c];
 
	$select = $db -> prepare('SELECT ID FROM COMPETENCES WHERE ID= ?  LIMIT 1');
	$select2 = $db -> prepare('SELECT ID FROM DESCRIPTION WHERE ID= ? LIMIT 1');
 
 
	$select -> execute(array($rowId));
	$select2 -> execute(array($rowId));
 
	if ($row = $select->fetch() && $row = $select2->fetch()) {
          $query = $db->prepare('UPDATE COMPETENCES SET `' . $colMap[$c] . '` = :newVal WHERE ID = :id');
          $query2 = $db->prepare('UPDATE DESCRIPTION SET `' . $colMap[$c] . '` = :newVal2 WHERE ID = :id');
 
        } else {
          $query = $db->prepare('INSERT INTO COMPETENCES (ID, `' . $colMap[$c] . '`) VALUES(:id, :newVal)');
          $query2 = $db->prepare('INSERT INTO DESCRIPTION (ID, `' . $colMap[$c] . '`) VALUES(:id, :newVal)');
        }
        $query->bindValue(':id', $result, PDO::PARAM_INT);        
        $query2->bindValue(':id', $result, PDO::PARAM_INT);
 
        $query->bindValue(':newVal', $newVal, PDO::PARAM_STR);
        $query2->bindValue(':newVal', $newVal, PDO::PARAM_STR);
 
        $query->execute();
        $query2->execute();
 
      }
 
  }
 
}
 
$out = array(
    'result' => 'ok'
  );
  echo json_encode($out);
 
  closeConnection($db);
}
catch (PDOException $e) {
  print 'Exception : ' . $e->getMessage();
}
?>
Seule la table COMPETENCES est alimentée.

Je sollicite donc votre aide pour m'aider à résoudre ce problème qui m'échappe totalement !
N'hésitez pas à me demander plus de précisions, le problème n'étant peut être pas assez bien synthétisé