Bonjour à tous
Dans un précédent post, on m'a donné cette astuce que je ré-exploite ci-dessous
pour comparer si des ID existent par enregistrement.
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $and = " AND stype.sensor_type_name IN ( 1,2,3,4) ";
Actuellement, j'essaye de faire la même chose mais un peu différemment, car ce n'est pas des ID que je veux vérifier, mais le nom des types de capteurs. Soit des noms...
J'ai ceci qui va me retoruner les capteurs existants (ou enregistrés) pour une station. Il doit en avoir 12...
Si j'ai deux capteurs enregistrée, il me retorune ceci (pour la station 2, j'en ai enregistré 2)
Code PHP : 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 $sql_select = 'SELECT se.id_sensor, stype.sensor_type_name FROM stations AS sa LEFT JOIN sensors AS se ON sa.id_station = se.stations_id_station LEFT JOIN sensor_types AS stype ON se.sensor_types_id_sensor_type = stype.id_sensor_type WHERE se.stations_id_station = "'.$station_id.'" ORDER BY se.stations_id_station ASC'; $sql_result = $connect->query($sql_select); while($row = $sql_result->fetch_assoc()){ // Construct the array with available sensors for the selected station foreach($row as $a => $aa){ if($a=="id_sensor"){ $index = $aa; //$sens[$aa]=$aa; } if($a=="sensor_type_name"){ $sens[$index]=$aa; } } } print_r($sens); }
si tous les capteurs (soit 12) sont enregistrés dans la base de donnée, il me retourne ceci (pour la station 1, j'en ai enregistré 12)Array ( [13] => wl [14] => wln )
[QUOTE]
Array ( [1] => wl [2] => wln [3] => hfs [4] => hfb [5] => ta [6] => ts [7] => t30mm [8] => t60mm [9] => t100m [10] => t200m [11] => t500mm [12] => t1200mm )
[/CODE]
A savoir que l'index de mon array '$sens' représente l'ID de mon capteur. La valeur de '$sens' représente le type du capteur...
Mon objectif et de vérifier qu'il y a bien 12 différents capteurs enregistrés pour une station et d'indiqué quel est (ou sont) le capteur manquant.
Donc pour la station1, le script peut continuer.
En revanche pour la station 2, le script doit s'arreter.
La liste des types de capteurs est la suivante
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $check_sensor_type='wl,wln,hfs,hfb,ta,ts,t30mm,t60mm,t100mm,t200mm,t500mm,t1200mm';
J'ai donc essayé ceci:
mais ceci me retorune ce message d'erreur
Code PHP : 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 $sql_select = 'SELECT se.id_sensor, stype.sensor_type_name FROM stations AS sa LEFT JOIN sensors AS se ON sa.id_station = se.stations_id_station LEFT JOIN sensor_types AS stype ON se.sensor_types_id_sensor_type = stype.id_sensor_type WHERE se.stations_id_station = "'.$station_id.'" AND stype.sensor_type_name IN ('.$check_sensor_type.') ORDER BY se.stations_id_station ASC'; $sql_result = $connect->query($sql_select); while($row = $sql_result->fetch_assoc()){ // Construct the array with available sensors for the selected station foreach($row as $a => $aa){ if($a=="id_sensor"){ $index = $aa; //$sens[$aa]=$aa; } if($a=="sensor_type_name"){ $sens[$index]=$aa; } } } print_r($sens);
et ce message erreur faire référence à cette ligneFatal error: Uncaught Error: Call to a member function fetch_assoc() on boolean
ce qui me laisse coire que ma requête SELECT ne me retourne rien du tout.
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part while($row = $sql_result->fetch_assoc()){
Je me demande donc 1) si j'utilise correctement le IN et si il ne peut être utiliser que pour comparer des ID
Si non comment arriver à mon but?
Milles mercis pour vos lumières
Partager