Page 1 sur 2

Fatal error: Call to undefined function

Posté : 11 avr. 2006, 10:52
par Invité
Bonjour,

Voila, lorsque je clic sur un bouton qui doit m'enregistrer ou me supprimer un enregistrement cela m'affiche cette erreur.
Est-ce que vous connaitriez le probleme ?

merci d'avance

Posté : 11 avr. 2006, 10:53
par charabia
Fonction non définie...

Du code nous aiderait.

Posté : 11 avr. 2006, 10:54
par Cyrano
Ça veut tout simplement dire que la fonction appelée n'existe pas : probablement une faute de frappe et un appel vers une fonction dont le nom est mal orthographié.

Posté : 11 avr. 2006, 11:02
par Invité
justement, j'ai bien regarder il n'y a pas de faute de frappe ou alors je l'ai voit pas

dans mon fichier fonction.inc.php :
function agentDelete($num) {
mysql_query("delete from agent_dentretien where num_pers = '$num'");
mysql_query("delete from contrat_travail where num_pers1 = '$num'");
mysql_query("delete from information where num_pers1 = '$num'");
mysql_query("delete from absence where num_pers = '$num'");
}
dans mon fichier agtentDel.php
<?php
include_once("../connexion.php");
include_once("../fonction.inc.php");
if (isset($_GET['id']))
    $mat = $_GET['id'];
else
    $mat = "";
agentDelete($mat) ;
header("Location: consult_agtent.php");
?>


pour lancer la suppression :
<a href='agtentDel.php' id="<?php echo $mat ?>" onClick="return conf()">suppr</a>
voila, peut etre que vous comprendriez mieux

merci

Posté : 11 avr. 2006, 11:13
par Invité
Ca ne répondra probablement pas à la question, mais ce n'est pas en donnant un id à une balise lien que celui-ci est transmis lorsque l'on clique sur le lien. Ceci ce contente d'appeller la page agtentDel.php sans argument :
<a href='agtentDel.php' id="<?php echo $mat ?>" onClick="return conf()">suppr</a> 
Ici $_GET['id'] ne sera pas défini

Pour passer des paramètres en GET, il faut les mettre dans l'url après un "?" (et les séparer par des "&") :
<a href="agtentDel.php?id=<?php echo $mat ?>" onClick="return conf()">suppr</a> 
Ici $_GET['id'] sera égal au $mat

Posté : 11 avr. 2006, 11:18
par Invité
ok, bon merci il y avai bien une faute d'inatention, mais cela ne regle pas le problème

Posté : 11 avr. 2006, 11:25
par charabia
A tout hasard...dans ta page fonction.inc.php, as-tu bien mis ta fonction entre les balise <?php et ?> ?
<?php
function agentDelete($num) { 
mysql_query("delete from agent_dentretien where num_pers = '$num'"); 
mysql_query("delete from contrat_travail where num_pers1 = '$num'"); 
mysql_query("delete from information where num_pers1 = '$num'"); 
mysql_query("delete from absence where num_pers = '$num'"); 
}
?>

Posté : 11 avr. 2006, 11:28
par Hermès
include_once("../connexion.php");
include_once("../fonction.inc.php");
Ton fichier principal se trouve dans un sous-répertoire de tes fichiers importés ? c'est bizarre comme organisation...

Posté : 11 avr. 2006, 11:31
par Invité
je vous a i donnée l'exemple de la suppression, mais par exemple l'ajout (ça me donne bien sur la meme chose)

sur la fenetre d'ajout :
la fonction :

function validate(enreg) {
    val1 = document.enreg.nom.value;
    while('' + val1.charAt(0)==' ')
        val1 = val1.substring(1, val1.length);
    if (val1 == "") {
        alert("Veuillez saisir le nom de l'agent d'entretien.");
        document.enreg.nom.focus();
        return false;
    }
}
le form :
<form name="enreg" onSubmit="return validate(this)" method="post" action="agtentAdd.php">
le bouton :
   <input name="enreg" type="submit" id="enreg" value="sauvegarde">
le fenetre agtentAdd.php :
<?php
include_once("../connexion.php");
include_once("../fonction.inc.php");
if (isset($HTTP_POST_VARS["nom"]))
    $nom = $HTTP_POST_VARS["nom"];
else
    $nom = "";
if (isset($HTTP_POST_VARS["nat"]))
    $nation = $HTTP_POST_VARS["nat"];
else
    $nation = "";
agententAdd($nom, $nation);
header("Location: rech_agtent.php");
?> 
et ma fonction :
function agententAdd($nom,$nation) {
    mysql_query("insert into agent_dentretien(num_pers, nom_pers, nationalite) values('', '$nom',  '$nation')");
}

Posté : 11 avr. 2006, 11:34
par charabia
A tout hasard...dans ta page fonction.inc.php, as-tu bien mis ta fonction entre les balise <?php et ?> ?
<?php
function agentDelete($num) { 
mysql_query("delete from agent_dentretien where num_pers = '$num'"); 
mysql_query("delete from contrat_travail where num_pers1 = '$num'"); 
mysql_query("delete from information where num_pers1 = '$num'"); 
mysql_query("delete from absence where num_pers = '$num'"); 
}
?>
:arrow: ?

Posté : 11 avr. 2006, 11:34
par Invité
j'ai bien mis les balise php dans mon fichier qui repertorie les fonctions

Pour ce qui est de l'organisation, j'ai mes fichier menu, connexion, fonction.... puis des dossier en fonction des domaines auquel il porte.

Posté : 11 avr. 2006, 11:41
par charabia
Si tu intègres directement ta fonction dans la page au lieu de faire appel à elle avec un include_once, tu as quoi comme résultat ? Toujours pareil ou ça fonctionne ? Si ça fonctionne c'est ton URL qui n'est pas bon, donc ton arbo.
<?php 
include_once("../connexion.php"); 

function agentDelete($num) { 
mysql_query("delete from agent_dentretien where num_pers = '$num'"); 
mysql_query("delete from contrat_travail where num_pers1 = '$num'"); 
mysql_query("delete from information where num_pers1 = '$num'"); 
mysql_query("delete from absence where num_pers = '$num'"); 
}

if (isset($_GET['id'])) 
$mat = $_GET['id']; 
else 
$mat = ""; 
agentDelete($mat) ; 
header("Location: consult_agtent.php"); 
?> 

Posté : 11 avr. 2006, 11:52
par Invité
bon le probleme est reglé, enfin ça ne marche toujours pas mais j'ai plu l'affichage. Par rapport au code que je vous ai mi, vous avez une idée pourquoi ça ne supprime pas ou n'enregistre pas ?
Maintenant ça m'envoi bien sur la fenetre que j'avai demandé mais ça n'a rien changé au enregistrement.

Par contre pour tout a l'heure, je n'ai pas la moindre idée sur la façon dont ça c réglé. Car j'ai rien changé de spéciale.

Merci

Posté : 11 avr. 2006, 12:06
par charabia
Il faudrait que tu nous répondes....tu t'auto réponds lol on ne peut pas t'être très utile comme ça. Dis nous si ce qu'on te dit te donne quelque chose ou pas.

Ensuite si tu fais des tests de ton côté et que tu vois des différences, dis nous ce que tu as fait.

Posté : 11 avr. 2006, 13:31
par Invité
ba en faite, ça me met plus le message d'erreur, mais je ne sais pas se que j'ai fait, car le temps que je lise votre message, j'ai fait plein de petit changement mais sans importance, ça devait etre une toute petite connerie. Donc j'ai pas eu besoin de faire se que vous m'aviez dit. Enfin, je l'ai fait quand même, au cas ou ça aurai réglé mon problème actuelle. Mais non, ça m'envoi bien sur la fenetre que j'avai demandé mais aucun changement n'est effectué sur les enregistrements(pas de suppression, ni d'insert).