Page 1 sur 1

Savoir si MySQL est online ou pas...

Posté : 09 avr. 2007, 17:05
par chrislabricole
Bonjour,

je voudrait un code qui permet de savoir si SQL est Online ou pas

voici mon code à moi, mais il y a un piti problème:
<?php
$link = mysql_connect("localhost", "home", "je_le_dit_pas_lol")
or die("Mon serveur MySQL est actuellement Offline");
echo "Mon serveur MySQL est actuellement Online";
mysql_close($link);
?>
le code si dessus-marche à merveille quand le serveur SQL et en route, il y a écrit : (comme prévu dans le code)
Mon serveur MySQL est actuellement Online
_______
Mais quand je met mon serveur SQL Offline, voici se qu'il y a écrit :
Warning: mysql_connect() [function.mysql-connect]: Can't connect to MySQL server on 'localhost' (10061) in D:\www\index.php on line 112
Mon serveur MySQL est actuellement Offline
et catastrophe, une erreur, alors, se que je pensé, est-ce que c'est possible de:
-désactivé l'erreur pour se code
OU
-un autre code plus aproprié pour cela

Mer par avance...

PS: la ligne 112, c'est ceçi :
$link = mysql_connect("localhost", "home", "je_le_dit_pas_lol")

Posté : 09 avr. 2007, 17:37
par lord.anonymous
Et si tu mets un @ devant mysql_connect()?

Posté : 09 avr. 2007, 20:37
par chrislabricole
mouuua .....

c'est déja mieux mais.... :

il n'y a plus l'erreur quand le SQL est Offline:
Warning: mysql_connect() [function.mysql-connect]: Can't connect to MySQL server on 'localhost' (10061) in D:\www\index.php on line 112
mais il s'affiche plus le texte qui est situé dessou le code :
<?php
$link = @mysql_connect("localhost", "home", "je_le_dit_pas_lol")
or die("Mon serveur MySQL est actuellement Offline");
echo "Mon serveur MySQL est actuellement Online";
mysql_close($link);
?>

Posté : 09 avr. 2007, 23:18
par Ryle
Ca me parait logique... avec le @ tu demandes à php d'ignorer les erreurs et les alertes, il n'a donc du coup aucune raison d'entrer dans le die..

La solution du @ est vraiment à éviter, mais je reconnais que je n'ai pas de meilleure solution à te proposer, et vu qu'apparement, même la doc le propose, je pense qu'on peut faire une exception, à condition effectivement de gérer soit même l'erreur comme tu souhaites le faire.

Donc au lieu du or die(), il te suffit de tester la valeur retournée par la fonction (celle affectée à $link) puisque mysql_connect() retourne FALSE en cas d'échec :)
if ($link === FALSE) // si $link est un booléen et qu'il est à faux
  echo "Mon serveur MySQL est actuellement Offline";

Posté : 10 avr. 2007, 20:39
par chrislabricole
OK ! mais je la met ou la ligne ? la?
	  <?php
$link = mysql_connect("localhost", "home", "je_le_dit_pas_lol")
if ($link === FALSE) // si $link est un booléen et qu'il est à faux 
or die("Mon serveur MySQL est actuellement <span style='color:#FF0000'><b>Offline</b></span>");
echo"Mon serveur MySQL est actuellement <span style='color:#00FF00'><b>Online</b></span>";
mysql_close($link);
?>
Mais sinon, sa fait une erreur ! :cry:

Posté : 10 avr. 2007, 21:32
par Invité
Regarde simplement comment fonctionne une structure IF et tu auras ta réponse

Posté : 10 avr. 2007, 23:38
par Ryle
- Il te manque le ";" à la fin de l'instruction du mysql_connect()
- Il te manque le "@" (même si c'est tout pouark à utiliser !) devant cette fonction
- le "or die" n'a plus de raison d'être
- il te faut un else pour gérer le message lorsque le serveur est online :)

Posté : 10 avr. 2007, 23:40
par chrislabricole
hé.... bravo Ryle, pour la claireter et la compréention...

je sais pas si je l'ai préssisé mais chui débutant php... 8-) et je suis pas encore fiable sur les else et surtout les { et/ou } :roll:

donc c'est sa mais je sais pas positionner les { et/ou } :lol: :cry: :
<?php
$link = @mysql_connect("localhost", "home", "je_le_dit_pas_lol");
echo "Mon serveur MySQL est actuellement Offline";
{ ou }
else
{ ou }
echo "Mon serveur MySQL est actuellement Online";
mysql_close($link);
?>

Posté : 21 avr. 2007, 09:10
par chrislabricole
please ! :cry:

Posté : 21 avr. 2007, 11:47
par Ryle
Modération :
chrislabricole, les "up" sont interdits sur PHPFrance.


Quant à ton problème de et/ou, il te faudrait commencer par bien comprendre le principe d'une structure conditionnelle :
SI (ce test est vrai) {                |      if ($link === FALSE) {
  alors je fais ça                     |        echo '...';
}                                      |      }
                                       |
SINON SI (ce test-ci est vrai) {       |
  alors je fais ça                     |
}                                      |    
                                       |    
...                                    |    
                                       |    
SINON {                                |      else {
  je fais ça                           |        echo '...':
}                                      |      }

Posté : 21 avr. 2007, 12:23
par chrislabricole
Yeah ! :wink:
trop content !

voici le code "officiel" pour se qui sont dans le même cas que moi ! :
<?php 
$link = @mysql_connect("localhost", "", "");
if ($link === FALSE) {
echo "Mon serveur MySQL est actuellement Offline";}
else
echo "Mon serveur MySQL est actuellement Online";
@mysql_close($link);
?>
Merci encore ! :D