c'est l'erreur Fatal error: Call to undefined function assign(
c'est le code, comme vous pouvez le constater, j’ai évidemment défini la fonction, alors pourquoi ne fonctionne-t-il pas?
class shades {
function create($name, $shades, $slug, $shortDesc, $longDesc, $position){
$name = sanitize_paranoid_string($name);
$slug = slug($name);
$shortDesc = sanitize_sql_string($shortDesc);
$longDesc = sanitize_sql_string($longDesc);
$query = mysql_query("INSERT INTO products (type, name, slug, shortDesc, htmlDesc, position)VALUES('shades','$name','$slug','$shortDesc','$longDesc','$position')")or die(mysql_error());
$ID = mysql_insert_id();
assign($shades, $ID);
if($query) {return true;}
else {return false;};
}
function delassign($toID){
mysql_query("DELETE FROM assign WHERE type='shades' AND toID='$toID'")or die(mysql_error());
}
function assign($shades, $toID)
{
foreach($shades as $shade)
{
$result = mysql_query("INSERT INTO assign(type, typeID, toID)VALUES('shades','$shade','$toID')")or die(mysql_error());
if($result){echo "Added!";}
else{echo"Not Added!";}
};
}
}
Vous n'avez pas une fonction nommée assign()
, mais une méthode portant ce nom. PHP n'est pas Java et dans PHP vous devez indiquer clairement si vous voulez appeler une fonction
assign()
ou une méthode
$object->assign()
Dans votre cas, l'appel à la fonction réside dans une autre méthode. $this
fait toujours référence à l'objet dans lequel une méthode existe elle-même.
$this->assign()
vous devez appeler la fonction comme ça
$this->assign()
au lieu de assign()
Camarades,
Je suis tombé sur cette erreur aujourd'hui en testant un script simple. Je n'utilise pas la fonction "classe", donc il faut le prendre avec un grain de sel . J'appelais fonction avant sa définition et sa déclaration
try{
foo();
}
catch (exception $e)
{
echo "$e->getMessage()";
}
function foo(){
echo "blah blah blah";
}
donc php me lançait erreur "appel à la fonction indéfinie".
Cela ressemble un peu à une erreur de programmation classique, mais peut aider quelqu'un qui a besoin d'un indice.
Une autre erreur stupide que vous pouvez faire est de copier une fonction récursive d’environnement de classe en classe et de ne pas modifier les appels internes internes à $ this-> nom_méthode ()
j'écris ceci parce que je ne pouvais pas comprendre pourquoi j'ai eu cette erreur et ce fil est d'abord dans google lorsque vous recherchez cette erreur.