Peut-on faire un goto en php [Résolu]

Signaler
Messages postés
2215
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009
-
 cs_New_World -
Une petite question toute simple : peut-on faire un goto en php ?



Parce que dans mes pages c'est un embriquement de if et { et } y'en a
de partout, alors si goto existait ça me simplifierait la vie lol...

Ciaò
MadMatt
http://matthieu.napoli.neuf.fr/wintools.html

32 réponses

Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut,



non y'a pas d'horreurs de ce genre en PHP ;-)



a ++

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
18
Lol,



goto...

Ca faisait une paye que j'avais plus vu cette instruction...

Ca me rappelle le bon vieux temps...



1 print "hello world";

2 goto 1;
Messages postés
2215
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009

mdr non allé c'est utile quand meme reconnaissez le lol...

ça évite d'avoir des embriquement qui te font perdre la tete lol.

Merci pour les réponses en tout cas

Ciaò
MadMatt
http://matthieu.napoli.neuf.fr/wintools.html
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
" function dbConnect()

{

global $dbServer, $dbUser, $dbPassword, $dbBase;

global $IsConnected;

// Si on est pas déjà connecté

if ( !$IsConnected
) {

$dbIDConnexion = mysql_connect($dbServer, $dbUser, $dbPassword) or die('Pas connecté à la DB');

mysql_select_db($dbBase,$dbIDConnexion) or die('Problème de sélection de base de donnée');

$IsConnected = true;

}

}"



La jcomprend un peu mieux :) Au passage, pas besoin de faire 40 teste
de $IsConnected... si ca marche, c'est "true", sinon, tout s'arrète.
Bah vi, si t'as besoin d'une DB, c'est certainement pas pour la voir
planter !

J'hésite à rajouter le @ avant mysql_select_db... quelqu'un sait à quoi ca pourrait lui servir ?
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
18
Fais voir un bout de ton code, par curiosite...?

A mon avis il y a moyen de simplifier tout ca, si c'est tant le bordel que ca.
Messages postés
2215
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009

lol si tu y tiens, si ça se trouve tu va révolutionner ma méthode de programmation vraiment pourrie :



// Connexion à la base de données

// Retourne l'ID de connexion

function dbConnect()

{

global $dbServer, $dbUser, $dbPassword, $dbBase;

global $IsConnected;

// Si on est pas déjà connecté

if ($IsConnected == 0) {

$dbIDConnexion = mysql_connect($dbServer, $dbUser, $dbPassword);

if ($dbIDConnexion != 0) {

$dbConnexionResult = mysql_select_db($dbBase);

if ($dbConnexionResult == 0) {

$IsConnected = 0;

return 0;

}

else {

$IsConnected = 1;

return 1;

}

}

}

else {

$IsConnected = 1;

return 1;

}

}





C'est juste la fonction pour me connecter à ma base de donnée. C'est
pas encore trop exagéré comme imbriquement mais c'est pour donner une
idée, si ça se trouve y'a plus simple.

Ciaò
MadMatt
http://matthieu.napoli.neuf.fr/wintools.html
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
18
Diantre...
lol.
Je vais sans doute rien revolutionner, non ;-)
Mais deja perso, je jouerais avec des true et des false, ca me parait plus clair. mais ca, c'est comme on le sent.
Parce que
$IsConnected = 1;
return 1;

boaf...

return $IsConnected = true;

Bref :
$dbConnexionResult = mysql_select_db($dbBase);
if ($dbConnexionResult == 0) {
$IsConnected = 0;
return 0;
}

=>
if (false ($dbConnexionResult mysql_select_db($dbBase))) {
return $IsConnected = false;
}
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
18
Voire meme...lol... :

$dbConnexionResult = mysql_select_db($dbBase);
if ($dbConnexionResult == 0) {
$IsConnected = 0;
return 0;
}
else {
$IsConnected = 1;
return 1;
}

=>
return $IsConnected ($dbConnexionResult mysql_select_db($dbBase));

mais ca je ne suis pas certain que ca marche lol. Ni que ce soit plus clair...
Messages postés
2215
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009

Oui je vois ta démarche, mais après ça marche ici mais pour faire ça
dans des scripts beaucoup plus long et beaucoup moins répétitif c'est
plus compliqué.

Enfin merci pour la tentative lol

Ciaò
MadMatt
http://matthieu.napoli.neuf.fr/wintools.html
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
je vois pas en quoi c'est plus compliqué, c'est plus propre et TA solution est plus compliquée (et plus crade) lol

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
18
bah ouais, y a un truc tout con : moins ton code comporte de lignes (si tant est qu'elles ne soient pas trop longues), plus il est facile de s'y retrouver par la suite. T'as pas a scroller des plombes pour trouver ou tu as defini cette putain de variable... ;-)
Et puis tu vois en 1 ligne ce que tu as voulu faire...c'est plus facile a utiliser et a comprendre que si tu utilises 6 lignes pour le meme resultat.
Pour ce que tu es entrain de faire, une classe serait plus appropriee, me semble-t-il, au passage. Ca eviterait les global, deja.
Messages postés
2215
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009

lol ma solution est plus crade entièrement d'accord, mais je vois pas
comment simplifier par exemple l'authentification des utilisateurs



connection base {

connection table {


soumission requete

si le retour n'est pas vide {

si les mots de passe sont bons {

blabla

}

else { erreur dans le mot de passe

}

}

else { erreur dans le pseudo

}

}

else { erreur table

}

}

else { erreur base

}


Et comme je suis un ptit tétu obstiné acharné je veux un message d'erreur détaillé, donc ça crée beaucoup de else...

Et c'est la dedans généralement que ça me crée des problèmes
Ciaò
MadMatt
http://matthieu.napoli.neuf.fr/wintools.html
Messages postés
2215
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009

Oui mais j'aime bien avoir des messages d'erreurs jolis avec une vraie
page plutot qu'une page blanche qui me dit "Erreur de connexion" et
c'est tout (je sais je suis très perfectionniste sur certains points
lol)

Et le truc de $IsConnected c'est pour ne pas fermer la connexion à la
table si jétais déjà connecté avant, ça sert juste pour le
mysql_close(); c'est tout Après j'ai évité de se reconnecter si on est
déjà connecté c'est juste un petit +.



Mais bon après tout si on arrive pas à se connecter à la base, le site est inutile lol donc je verrai peut etre avec les die()



Merci

Ciaò
MadMatt
http://matthieu.napoli.neuf.fr/wintools.html
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
18
Je ne suis pas non plus fan des or die (). Autant gerer les erreurs, et
faire ce que bon nous smble en fonction de l'erreur recue.

Le or die () est tres bien dans la phase de debuggage par contre :-)

Et je suis aussi contre le @ lol. A mon sens il est assez inutile, voire dangereux...
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Bah si tu gères ton erreur toi-même, perso je préfère mettre un @ qui
n'affichera pas l'erreur de php, mais ton message d'erreur.

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
2215
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009

Sinon utiliser des pages d'erreurs 404 403 etc... perso avec un .htaccess

Ciaò
MadMatt
http://matthieu.napoli.neuf.fr/wintools.html
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
18
Si tu geres correctement les possibilites d'erreurs, tu n'auras pas de message d'erreur, @ ou pas @.
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
bah si ta base est indispo, t'auras une erreur générée par la fonction
connect(), même si tu affiches ton propre message d'erreur, d'où le @
devant afin d'afficher ton message d'erreur et non celui de la fonction.

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
Dans ce cas la, autant faire un



or header('Location: erreur_db.html');



Histoire de dire que ta DB est tombée en rade :)
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Mouais... Pas forcément, perso j'affiche un message. D'ailleurs je ne
pense pas que le OR header() va fonctionner (faudrait tester)

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
1 2