Notice: Undefined index: .... in....

Résolu/Fermé
someone - Modifié le 13 avril 2022 à 15:17
 someone - 13 avril 2022 à 16:46
Bonjour,

J'aimerai faire afficher des données qui se trouve dans ma table porte.
J'arrive à faire afficher l'attribut IP mais quand il s'agit du batiment j'obtient un message tel que :Notice: Undefined index: batiment in ... on line 28

voici mon code :
<!DOCTYPE html>
<html lang='fr'>
<?php
//require_once (__DIR__.'/../Controller/connbdd2.php'); 
try {
    $db = new PDO('mysql:host=localhost;dbname=bdd_ctrl_acces_dev', 'root', '');
} catch(PDOException $e){
    die('Erreur de connexion à la base de données :' .$e->etMessage());
}

$req = $db->prepare("SELECT idPorte, IP FROM portes");
$req->execute();
$row = $req->fetchAll(); 

if($row){
    foreach($row as $row){
        $ping = exec("ping -n 1 " . $row['IP']);                
        if (strpos($ping, "perte 100%")) {  
            $etat = "non";                       
        } else {
            $etat = "oui";
        }
        //echo $row['IP']." - ".$etat."<br>";
        $req2 = $db->prepare("SELECT batiment FROM portes ");
        $req2->execute();
        $row2 = $req2->fetchAll();
        
        echo $row2['batiment'] . "<br>";

    }
}
?>


D'après vous quel est le problème

Configuration: Windows / Chrome 100.0.4896.75

1 réponse

jordane45 Messages postés 38353 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 27 décembre 2024 4 719
13 avril 2022 à 15:32
Bonjour premier souci sur cette ligne de code
foreach($row as $row){

En utilisant deux fois le même nom de variable
$row tu écrases la première..

0
 if($row){
    foreach($row as $ip){
        $ping = exec("ping -n 1 " . $ip['IP']);                
        if (strpos($ping, "perte 100%")) {  
            $etat = "non";                       
        } else {
            $etat = "oui";
        }
        echo $ip['IP']." - ".$etat."<br>";
        $req2 = $db->prepare("SELECT batiment FROM portes ");
        $req2->execute();
        $row2 = $req2->fetchAll();
        var_dump($row2); die();
        echo $row2['batiment'] . "<br>";


J'ai changé la variable mais même sans ça j'obtenais qqc en se qui concerne d'afficher les adresse ip et leur état.
Ce que j'essaye de faire c'est de récupérer les informations associés à chacun des ip à l'aide du foreach et executer des commande mais lorsque je veux récupérer les batiments je n'obtiens un message d'erreur (c'est juste un test)
0
yg_be Messages postés 23408 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 décembre 2024 1 557 > someone
Modifié le 13 avril 2022 à 16:23
bonjour,
as-tu envisagé de partager le contenu de
$row2
?
0
someone > yg_be Messages postés 23408 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 décembre 2024
13 avril 2022 à 16:46
Oui je l'ai envisagé.
Finalement, j'ai changé mon code j'ai tout mis dans la première requête comme ça je pourrais faire appel aux différents attributs contenus dans $row sans faire de requêtes supplémentaires et ne pas surcharger le code.
En tout cas merci
0