Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/04/2011, 11h29   #1
Futur Membre du Club
 
Inscription : décembre 2010
Messages : 74
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 74
Points : 15
Points : 15
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 :

Citation:
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 :
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 :
list($RepRun, $SqlRun, $RepDelay) = preg_split("/ /",$RepStatus);

En vous remerciant pour l'aide.
legrandse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2011, 11h48   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
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.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2011, 11h51   #3
Modérateur
 
Avatar de Nesmontou
 
Homme Benjamin PREVOT
Architecte de système d'information
Inscription : septembre 2004
Messages : 1 568
Détails du profil
Informations personnelles :
Nom : Homme Benjamin PREVOT
Âge : 30
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Architecte de système d'information
Secteur : Finance

Informations forums :
Inscription : septembre 2004
Messages : 1 568
Points : 2 493
Points : 2 493
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.
__________________
Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

F.A.Q. : Java, PHP, (X)HTML / CSS

N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème
Nesmontou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2011, 12h24   #4
Futur Membre du Club
 
Inscription : décembre 2010
Messages : 74
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 74
Points : 15
Points : 15
Hello,

Merci pour vos conseils.

Cependant si je modifie en ceci:

Code :
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.
legrandse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2011, 14h23   #5
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
La raison est toujours la même : ton découpage ne donne pas 3 éléments.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2011, 16h43   #6
Futur Membre du Club
 
Inscription : décembre 2010
Messages : 74
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 74
Points : 15
Points : 15
Ok ok, effectivement le découpage ne me donne rien car en fait cette ligne pose problème à mon avis:

Code :
$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.
legrandse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2011, 16h46   #7
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Qu'est-ce censé donner ?
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2011, 16h55   #8
Membre émérite
 
Avatar de vorace
 
Homme
Développeur
Inscription : août 2010
Messages : 587
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur

Informations forums :
Inscription : août 2010
Messages : 587
Points : 861
Points : 861
moi je ferai un explode sur les | mais pas ceux entre double quottes...
donc tu re-concatène à l'indice 1, 2 et 3.
__________________
Développeur informatique contrarié...
vorace est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h10.


 
 
 
 
Partenaires

Hébergement Web