Bonjour à tous

Dans un précédent post, on m'a donné cette astuce que je ré-exploite ci-dessous

Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
$and = " AND stype.sensor_type_name IN ( 1,2,3,4) ";
pour comparer si des ID existent par enregistrement.

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...
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 j'ai deux capteurs enregistrée, il me retorune ceci (pour la station 2, j'en ai enregistré 2)

Array ( [13] => wl [14] => wln )
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)
[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:
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);
mais ceci me retorune ce message d'erreur
Fatal error: Uncaught Error: Call to a member function fetch_assoc() on boolean
et ce message erreur faire référence à cette ligne
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
while($row = $sql_result->fetch_assoc()){
ce qui me laisse coire que ma requête SELECT ne me retourne rien du tout.

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