Pb de syntaxe ?

Répondre
Peacock
le 21/06/2006 à 18:57
Peacock
Bonjour à tous,

Il s'agit d'une page de Site de Gestion,
d'un formulaire de modification de données qui renvoie dans les champs ce qui est jusque là dans les champs de base...

Tout marchait sur Free,
et lors d'un transfert sur OVH, niet, kaput...

Le message d'erreur :

Fatal error : Call to undefined function: error_message() in /home.10.2/monsite/www/gestion/modifier_fiche.php on line 487

Voici la portion de code, servant juste sélectionner la valeur dans un menu déroulant ayant divers options :
<?php
// COULEUR $Couleur_select=$ligne['couleur'];

// Fonction enum_options qui genere un tableau en fonction des options du champs format

function enum_options($champs, $id_lien)
{ $Fleur=$_GET['ID'];
$recherche="SHOW COLUMNS FROM ma_table LIKE '$champs' ";
$resultat=mySql_db_query($base, $recherche, $id_lien);
if ( !$resultat) error_message (sql_error ());
$donnees_rech = mysql_fetch_array($resultat);
if (eregi("('.*')", $donnees_rech["Type"], $correspondance ))
{
$ch_enum = ereg_replace ("'", "", $correspondance[1]);
$option_enum = explode (',' , $ch_enum);
return $option_enum;
}
else return 0;
}

// Extractions des valeurs de COULEUR

echo "<TD align='right'><SPAN class='noir-10B'>Couleur : </SPAN></TD>
<TD><SELECT NAME='couleur' SIZE='1' >";

$tableau = enum_options ('couleur', $id_lien);
echo $tableau['couleur'];
print_r($tableau);

// La boucle
for($i=0;$i < count($tableau) ; $i++)
{
$selected = ($tableau[$i] == $Couleur_select) ? ('selected') : ('');
echo' <option value="'.$tableau[$i].'" '.$selected.'>'.$tableau[$i].'</option>';
}
echo '</select>';
echo "</TD></TR>";
?>


La ligne 487 correspond à cette ligne :
<?php
if ( !$resultat) error_message (sql_error ());?>


Il me semble bien que ma fonction n'est pas undefined comme ils disent, elle est bien là,
et je rappelle que tout fonctionne
sur Free et sur NFrance...
So, y a-t-il du code obsolète non géré par OVH ?

Merci d'avance à tous ce qui me mèneront
vers la lumière ; )

Peacock
zebden
le 21/06/2006 à 19:03
zebden
Ok,

Si elle est bien là, où l'as-tu definie ? Tu l'as déclarée au dessus ? Elle est dans un fichier ? Montre la fonction que tu as écrite.

Parce que error_message n'est absolument pas une fonction native à PHP.
zebdinou pour les intimes / Blog : http://www.zebden.fr
Peacock
le 21/06/2006 à 19:23
Peacock
Elle est là, juste avant l'extraction dans le select, au début de ma portion de code, je te la recolle...

<?php
// Fonction enum_options qui genere un tableau en fonction des options du champs format

function enum_options($champs, $id_lien)
{ $Fleur=$_GET['ID'];
$recherche="SHOW COLUMNS FROM ma_table LIKE '$champs' ";
$resultat=mySql_db_query($base, $recherche, $id_lien);
if ( !$resultat) error_message (sql_error ());
$donnees_rech = mysql_fetch_array($resultat);
if (eregi("('.*')", $donnees_rech["Type"], $correspondance ))
{
$ch_enum = ereg_replace ("'", "", $correspondance[1]);
$option_enum = explode (',' , $ch_enum);
return $option_enum;
}
else return 0;
}
?>


Donc là, mon menu select apparait sans aucune valeur et la page s'arrête, tous les champs suivant du formulaire n'apparaissent pas, Error Fatal ou l'inverse...

Merci poiur la suite
LA GLOBULE
le 21/06/2006 à 19:43
LA GLOBULE
Nan mais zebden parlait du code qui définit la fonction error_message.

Le :
function error_message (...) {
...
}

C'est çà qui manque dans ton code.
Peacock
le 21/06/2006 à 19:59
Peacock
Justement, là le message d'erruer je ne l'ai eu qu'en ouvrant la source, n'ai je pas auparavant, dans une précédente utilisation désactivé, via je ne sais plus quelle ligne de code, désactivé les message d'erreur sur les pages ?

Parce que là, rien n'apparait sur la page seulement sur dans la source, si tu peux, si vous pouvez m'aiguiller, merci.
LA GLOBULE
le 21/06/2006 à 20:03
LA GLOBULE
Heu, je n'ai pas tout compris, mais en gros, c'est simple : php ne connait pas error_message.

Bref, déclare cette fonction avant de l'utiliser, et c'est tout, pas la peine de se poser des questions métaphysiques (genre ca marchait avant, ou bien si tu as mis un truc en commentaire, ou j'sais pas quoi).

Si tu ne veux pas déclarer cette fonction, vire le error_message de ton source, c'est tout :)
Peacock
le 21/06/2006 à 20:19
Peacock
Bon, là c'est moi qui comprends pas tout,
qd tu dis déclare lo fonction, c'est pas la fonction php qui extrait les valeurs de mon select, que j'ai déjà copié-collé 2 fois dans les messages précédent ?

Si c'est le cas ellle apparait bien avant d'être appelée ? Non ?

Bref je vire la ligne
<?php
if ( !$resultat) error_message (sql_error ()); php ?>

et je vous tiens au jus.
Peacock
le 21/06/2006 à 20:26
Peacock
Des progrès, mais il faut maintenir les efforts ;)

Sérieux, mon formulaire ce déroule jusqu'au bout avec les valeur correpondantes dans les champs de saisis, sauf pour les menus déroulant listant les valeurs de champs de type enum, là niet, ni la valeur de la variable, ni la les valeurs des differents choix, walou, menu déroulant vide, donc là ça vient de ma fonction php ?!!

But, where ?
Peacock
le 23/06/2006 à 19:05
Peacock
Bonsoir,

Bon, j'ai pas régler mon pb...
Pour la Globule, j'ai pas saisi où était
l'aspect métaphysique de mes questionnements,
c'était pas de l'ordre "le vert ne serait il pas bleu", ou "une table n'était elle pas qu'illusion"...
Bref, si un des cracks qui parle couremment le php see where is the bug, je l'en remercie, mais
je vais chercher...

print-r, j'ai pas testé...

Merci d'avance
Répondre
LoadingChargement en cours