IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Undefined offset: 1


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2010
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 354
    Par défaut Undefined offset: 1
    Bonjour à tous,

    Et oui je sorts encore les rames pour ce qui est de la réplication de bases Mysql.

    Et dans le script ci-dessous, j'ai une erreur de type :

    Undefined offset: 2 in C:\wamp\www\dbsync\test2.php on line 72
    Undefined offset: 1 in C:\wamp\www\dbsync\test2.php on line 72
    The question is : que faire dans ce cas ?

    Voici le script :

    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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    <html>
    <head>
    <title> Online Mysql Server status </title>
    </head>
    <body>
    <form name="ShowStatus" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
    <br/>
    <table border=1 align=center>
    <tr align=center bgcolor=gray><td colspan=2><b> Online DB Server Status </b></td> </tr>
     
     
    <?php 
    if(isset($_POST['server']))      $server=$_POST['server'];
    else      $server="";
     
    ?>
     
    <tr><td align=centre> Select Server: <select name="server">
    <option value="s1" <?php if ($server == "s1") echo "selected"; ?> > Server 1 
    <option value="s2" <?php if ($server == "s1") echo "selected"; ?> > Server 2 
    <option value="s3" <?php if ($server == "s1") echo "selected"; ?> > Server 3
    <option value="s4" <?php if ($server == "s1") echo "selected"; ?> > Server 4 
    </select> </td> 
     <td align=centre> <input type=submit name='show' value='Show Status'></td></tr>
    </form>
    </table>
     
    <?php 
    $serverUp=1; ## if any of your server not configured, set this variable to 0 below
    $serverString="localhost"; ## server name
    $serverIP="192.168.16.16"; ## default IP, anyhow will be changed later
    $dbuser="bla"; 
    $dbpassword="bla"; 
     
    $imgShow="<img src='led-green.gif' />";
     
    if ($_SERVER['REQUEST_METHOD'] == 'POST'){
    	switch($_POST['server']){
    		case "s1":
    		 $serverString="Server 1"; 
    		 $serverIP="IP1";
    		 break;
    		case "s2":
    		 $serverString="Server 2"; 
    		 $serverIP="IP2";
    		 break;
    		case "s3":
    		 $serverString="Server 3"; 
    		 $serverIP="IP3";
    		 break;
    		case "s4":
    		 $serverString="Server 4"; 
    		 $serverIP="IP4";
    		 $serverUp=0;
    		 break; 
    	}
     
    ?>
    	<br/>
    	<table border=1 align=center width=50%>
    	<tr align=center bgcolor=gray><td colspan=4><b> Status de <?php echo $serverString." : ". $serverIP; ?> </b></td> </tr>
    	<tr > <th bgcolor=lightgray> Status </th> <th bgcolor=lightgray > Replication </th> <th bgcolor=lightgray> Delay </th> <th bgcolor=lightgray> Erreur </th> </tr>
    	<?php
    	if (!$serverUp) {
    	?>
    			<tr> <td align=center colspan=4> Ce serveur n'est pas encore configur&eacute;! </td> </tr>
    	<?php 
    	}
    	else {
    		$contactAdmin="<a href='mailto:blabla@yourmail.com?subject=Replication issue in $serverString'> Contact Admin </a>";	
    		$RepStatus = `mysql -h $serverIP -u $dbuser -p$dbpassword -e "show slave status\G;" | egrep "Slave_IO_Running: | Slave_SQL_Running: | Seconds_Behind_Master:" | cut -d':' -f2`; $RepStatus= trim($RepStatus);  
    		list($RepRun, $SqlRun, $RepDelay) = preg_split("/ /",$RepStatus);
    		 $RepRun = trim($RepRun);
    		 $SqlRun = trim($SqlRun);
    		 $RepDelay = trim($RepDelay);
     
    //		echo "<br/> Reprun=$RepRun, IO Run =$SqlRun, Replication delay =$RepDelay";
     
    		if($RepRun == "Yes") { $RepRun = "OK"; $contactAdmin=""; } else { $RepRun = "Replication (IO) Not Running!"; $imgShow="<img src='led-red.gif' />"; }
    		if($SqlRun == "Yes") { $SqlRun = "None"; $contactAdmin=""; } else {$SqlRun = "SQL thread stopped! "; $imgShow="<img src='led-red.gif' />";}
    		if($RepDelay == 0 ) { $RepDelay = "None"; } else { $RepDelay .= " seconds."; $contactAdmin=""; }   
     
     
    	?>
    		<tr> <td align=center> <?php echo $imgShow; ?> </td> <td align=center> <?php echo $RepRun; ?> </td> <td align=center> <?php echo $RepDelay; ?>  </td> <td align=center> <?php echo $SqlRun; ?>  </td> </tr>
     
    	<?php
    	if ($contactAdmin != "") { echo "<tr> <td align=center colspan=4> $contactAdmin </td></tr>"; }
     
    	} 
     
    	?>
    	</table> 
    <?php
    }
    ?>
     
    </html>
    </body>


    et la ligne 72 correspond à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list($RepRun, $SqlRun, $RepDelay) = preg_split("/ /",$RepStatus);

    En vous remerciant pour l'aide.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Cela signifie que ton preg_split n'a pas fourni 3 élements et donc que ta chaine n'a pas été découpée comme attendu.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre Expert
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Par défaut
    Bonjour,

    La fonction explode serait peut-être plus adaptée dans ton cas.

    Inutile d'utiliser une expression régulière pour découper une chaîne suivant les espaces.

  4. #4
    Membre éclairé Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2010
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 354
    Par défaut
    Hello,

    Merci pour vos conseils.

    Cependant si je modifie en ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list($RepRun, $SqlRun, $RepDelay) = explode(" ",$RepStatus);
    j'ai toujours le même message d'erreur.

    Et pour tout vous avouer, j'ai du mal à comprendre dans la condition else pourquoi il ne me retourne rien.

    Pouvez-vous m'éclairer à ce sujet?

    Merci.

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    La raison est toujours la même : ton découpage ne donne pas 3 éléments.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre éclairé Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2010
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 354
    Par défaut
    Ok ok, effectivement le découpage ne me donne rien car en fait cette ligne pose problème à mon avis:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $RepStatus = `mysql -h $serverIP -u $dbuser -p $dbpassword -e "show slave status\G;" | egrep "Slave_IO_Running: | Slave_SQL_Running: | Seconds_Behind_Master:" | cut -d':' -f2`; $RepStatus= trim($RepStatus);
    Svp pouvez-vous me dire s'il n'y a pas moyen d'arriver au même résultat en modifiant cette ligne de code?

    Merci beaucoup.

Discussions similaires

  1. [MySQL] Notice: Undefined offset
    Par gaetanc15 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 30/04/2009, 16h16
  2. erreur: "Notice: Undefined offset:"
    Par Sh1v3r dans le forum Langage
    Réponses: 2
    Dernier message: 17/06/2006, 22h48
  3. [Tableaux] Array et Undefined offset
    Par richton95 dans le forum Langage
    Réponses: 10
    Dernier message: 15/03/2006, 22h47
  4. erreur Undefined offset
    Par wbagg2 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 01/12/2005, 14h16
  5. Erreur de "Undefined offset"
    Par guy2004 dans le forum Langage
    Réponses: 8
    Dernier message: 16/10/2005, 12h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo