Récuperer le numéro de ligne

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Récuperer le numéro de ligne

par KooKiz » 03 mars 2006, 00:39

En effet ça permet de faire ce que je voulais. Merci de votre aide :)

par jeff » 02 mars 2006, 23:21

par titerm » 02 mars 2006, 23:14

en utilisant la fonction debug_backtrace(), tu pourras trouver quel est l'appelant de la fonction.

par KooKiz » 02 mars 2006, 12:35

Il existe en effet un moyen de créer un handler pour les exceptions qui permettra de récuperer le nom du fichier, de la fonction, et de la ligne où est survenue l'erreur... Mais ça ne résoud pas mon problème.

En effet, on peut considerer que mon code est organisé comme ça :
function sql($query,$ligne)
{
	$result = mysql_query($query)
		or die("Erreur sql ligne $ligne");
	
	return $result;
}


$query = "SELECT * FROM matable";
$result = sql($query,__LINE__);



Donc on pourrait imaginer remplacer la fonction sql par :

function sql($query)
{
	$result = mysql_query($query)
		or throw new Exception("Erreur sql");
	
	return $result;
}
Mais à ce moment là, dans la fonction de gestion des exceptions, je ne pourrai récuperer que le numéro de ligne où j'ai utilisé le mysql_query, pas la ligne où j'ai appelé sql.

Donc à moins que tu vois un autre moyen d'utiliser la gestion d'erreur, je ne vois pas comment m'en servir pour résoudre mon problème.

par Cyrano » 02 mars 2006, 00:05

Tu devrais explorer les exceptions en PHP5, il existe une méthode permettant, sauf erreur de ma part, d'identifier le fichier et la ligne ù se produit une erreur. Je ne m'aventurerai pas beaucoup plus loin sur le sujet, je suis en train de l'explorer un peu moi-même.

Récuperer le numéro de ligne

par KooKiz » 01 mars 2006, 12:19

Salut,

il y a quelque chose que j'ai toujours essayé de faire en php4, sans succès. Maintenant que je commence à passer en php5, j'aimerais savoir si c'est possible.

Pour centraliser les requêtes, faciliter le debuggage, et permettre de changer de sgbd sans modifier l'intégralité du code, j'effectue mes requêtes à partir d'une fonction baptisée sql.

Comme j'ai besoin de la ligne de laquelle a été appelée la fonction pour pouvoir afficher des messages d'erreur précis, cette fonction prend en second paramètre le numéro de la ligne. Je l'appelle donc de la manière suivante :
sql($requête,__LINE__);
Seulement, étant donné que je met systématiquement __LINE__ en second paramètre, j'aimerais trouver un moyen (une macro peut-être ?)pour pouvoir ne l'appeler qu'avec le premier argument (le second serait donc ajouté automatiquement).

Quelqu'un sait si c'est possible ?