Variable Fonction - PHP - Programmation
Marsh Posté le 21-02-2005 à 18:42:24
frlp a écrit : L'echo de $strNom et $strNom2 et l'upload des images se fait pas parfaitement mais pas son inscription dans la base... |
pas très clair
Marsh Posté le 21-02-2005 à 18:48:15
Si l'inscription marche mal, c'est surement par ce que la fvariable $id n'existe pas dans la fonction. Il faudrait penser à faire passer la valeur à la fonction si tu veux l'utiliser.
Marsh Posté le 21-02-2005 à 18:53:19
$id est dans le formulaire, désolé j'avais pas précisé mais bon...
En gros, tout se passe parfaitement, sauf la récupération de la variable $strNom lors de l'inscription dans la base.
Marsh Posté le 21-02-2005 à 18:56:21
Et $id tu la recupere comment ? J'ai pas vu de $_POST['id']
Marsh Posté le 21-02-2005 à 19:00:01
'$id' suffit.
Le seul prôbleme est la récupération de $strNom, le reste marche nikel.
Marsh Posté le 21-02-2005 à 19:02:56
frlp a écrit : '$id' suffit. |
non !
$id n'est pas défini dans ta fonction !
faut que tu les mette en global...
Marsh Posté le 21-02-2005 à 19:03:08
Je répête : $id n'existe pas dans la fonction.
On s'en fout que ca soit une valeur qui vienne d'un formulaire d'un cookie ou d'un autre fichier, ca ne change rien au fait que cette variable n'existe pas dans cette fonction.
On va reprendre les bases du PHP : une variable existant dans une fonction n'existe que dans cette fonction, une variable existant en dehors des fonction n'est visible qu'en dehors des fonctions. Seuls exections les variables globales.(global $var) Ta variable n'existe donc pas dans la fonction. D'ailleur, il faut pas abuser des "global $var", ca poyusse à programmer n'importe comment.
D'ailleur, c'est pas bien travailler avec "register_globals" à "on". Mieux vaut travailler avec le "register_globals" à "off". C'est un peu plus chiant vu qu'on ne peut pas utiliser directement des $var pour utiliser les données mais au moins on sait d'oùm elles viennent. Là avec ton script, tu sais pas si ton $id vient d'unn cookie, d'un formulaier d'un simple lien, d'une session ou directement du serveur en lui même.
Marsh Posté le 21-02-2005 à 19:12:42
humm...
Lorsque j'éxécute mon script, sur disons l'id 34, le champ img1 et img1 se remplace par rien. Donc $id est pris en compte vu que la modification se fait se fait bien WHERE id = '$id'.
Merci
Marsh Posté le 21-02-2005 à 19:20:43
Si tu le dis, mais à par si le fichier "config_db.php" fait joujou avec la fonction global, ca ne peut pas marcher.
Et si ca marche, ca serait bien de bien nous décrire PRECISEMENT ton probléme. "Madame Irma" ne passant pas sur ce forum, on ne peut pas deviner ce qui n'est pas écrit.
Marsh Posté le 21-02-2005 à 19:26:51
C'est tellement difficile en phase de conception d'afficher les messages d'erreur de mysql lorsqu'un problème se produit à ce niveau ?
Marsh Posté le 21-02-2005 à 19:35:30
naceroth a écrit : C'est tellement difficile en phase de conception d'afficher les messages d'erreur de mysql lorsqu'un problème se produit à ce niveau ? |
Presque aussi dur que de pouvoir admettre qu'on est peut-etre moins qualifiés pour savoir ou notre script foire que ceux qui ont des scripts qui foirent pas
Marsh Posté le 22-02-2005 à 08:50:02
en conf de base, son register_global est peut etre à ON, donc $id lui suffit pour récupérer la variable venant du formulaire...
par contre le fait que tu joue avec un nom de fichier qui n'a pas d'extension
Citation : $toto = "fichier"; |
je sais pas si c'est pas génant pour
Citation : $strNom = $_FILES[$toto]['name']; |
...
Marsh Posté le 22-02-2005 à 09:08:00
Je rappel: pas d'erreur sql, pas de bug, rien niet, juste une inscription vide dans la base. config_db contient simplement les identifiants de la base....
en gros, $_FILES[$toto]['name'] n'est pas reconnu comme champ valide dans la requete sql ?
Ok je cherche dans ce sens, merci xav_.
Marsh Posté le 22-02-2005 à 09:13:18
Fait une fois un echo de $id aussi, histoire de voir ce qu'il y a dedans.
Marsh Posté le 22-02-2005 à 11:11:56
euh... echo "$id" écrit la valeur qu'on lui donne dans le formulaire...
Je vois pas pourquoi vous vous acharner sur $id, le probleme ne vient pas de là.
Marsh Posté le 22-02-2005 à 11:57:36
c'est quoi le type de img1 et img2 ?? (dans la bd je veux dire)
Marsh Posté le 22-02-2005 à 12:42:21
un text pour un nom de fichier !!
pourquoi pas un (var)char binary ???
Marsh Posté le 22-02-2005 à 12:46:40
pourquoi pas oui, je test aprés bouffé merci pour ton aide
Marsh Posté le 22-02-2005 à 15:50:08
tu dis que le echo de $strNom marche bien, mais pas l'insertion --> fait un echo de la requete avant son envoi pour voir ce que ça te donne...
fait un truc du genre:
Code :
|
Marsh Posté le 22-02-2005 à 17:29:36
Merci beaucoup wav_ , ça marche !
Je suis webdesigner donc si t'as besoin d'un design pour ton site ou autre chose, n'hésite pas. Tu me sors d'une belle m...
Marsh Posté le 22-02-2005 à 17:31:34
heink
comme si le echo allait faire que ca marche...
Marsh Posté le 22-02-2005 à 17:53:43
c'est pas le echo qui fait la chose en effet mais le
$req= "UPDATE catalogue SET img1='$strNom' WHERE
mysql_query($req);
C'était tout con, mais encore fallait il trouver
Marsh Posté le 22-02-2005 à 18:08:53
[quote=990155,0,23,231299]Merci beaucoup wav_ , ça marche !
Je suis webdesigner donc si t'as besoin d'un design pour ton site ou autre chose, n'hésite pas. Tu me sors d'une belle m...[/quote]
merci, je fait mes graphisme moi-meme (vu qu'avec CSS c'est plus proche du code qu'autre chose, mais merci de proposer)
Par contre mon pseudo c'est Xav
le "_" c'est paske il faut au moins 4 caractère pour s'enregistrer, il me fait plus chier qu'autre chose, par contre le reste j'y tiens
Marsh Posté le 21-02-2005 à 18:40:09
Bonjour à tous, voila mon code d'upload de photo avec enregistrement dans un bdd
<?
include ("config_db.php" );
define("BASE_DIR","" );
$toto = "fichier";
$toto2 = "fichier2";
fileUpload($toto);
fileUpload2($toto2);
function fileUpload($toto)
{
$blnRetour = false;
if ( !empty($toto) && is_uploaded_file($_FILES[$toto]['tmp_name']) )
{
$strRepertoire = 'images/';
$strNom = $_FILES[$toto]['name'];
$strNomFichier = BASE_DIR.$strRepertoire.$strNom;
$blnRetour = move_uploaded_file($_FILES[$toto]['tmp_name'], $strNomFichier);
echo "$strNom";
mysql_query("UPDATE catalogue SET img1='$strNom' WHERE id='$id'" );
}
return $blnRetour;
}
function fileUpload2($toto2)
{
$blnRetour2 = false;
if ( !empty($toto2) && is_uploaded_file($_FILES[$toto2]['tmp_name']) )
{
$strRepertoire2 = 'images/';
$strNom2 = $_FILES[$toto2]['name'];
$strNomFichier2 = BASE_DIR.$strRepertoire2.$strNom2;
$blnRetour2 = move_uploaded_file($_FILES[$toto2]['tmp_name'], $strNomFichier2);
echo "$strNom2";
mysql_query("UPDATE catalogue SET img2='$strNom2' WHERE id='$id'" );
}
return $blnRetour2;
}
?>
J'ai pas tout optimisé mais c'est pas le sujet. L'echo de $strNom et $strNom2 et l'upload des images se fait pas parfaitement mais pas son inscription dans la base...
Je prôbleme doit être du fait que le tout se passe dans une fonction, si vous avez une solution, merci.
frlp