Je suis en train d'étudier le livre PHP/MySQL avec DreamMX et quelque chose
m'échappe !
Dans un formulaire de saisie, j'utilise un champ de fichier pour transférer
une photo dans un dossier.
Ce principe marche sous EasyPHP mais pas sur le serveur Free qui charge une
photo par défaut (logo.jpg) définie dans le script !
Voici la portion de sctip :
<?php
if ($ajoutPhoto=="ok")
{
//sélection de la base de données
mysql_select_db($database_id, $id);
//vérification si la reference existe déjà dans la base
$query_rsReference = "SELECT reference FROM photos WHERE reference =
'$reference' ";
$rsReference = mysql_query($query_rsReference, $id) or die(mysql_error());
$totalRows_rsReference = mysql_num_rows($rsReference);
//si la reference n'existe pas encore alors :
if ($totalRows_rsReference==0)
{
//test si un fichier photo est sélectionné sino photo par défaut
if ($photo['photo']['size']!=0)
$photo_name=$photo['photo']['name']; else $photo_name="logo.jpg";
//enregistrement dans la base du nouveau compte client
mysql_select_db($database_id, $id);
$insertPhoto = "INSERT INTO photos (reference, titre, description,
detouree, mode, poids, auteur, agent, date_saisie, rubriqueID1, rubriqueID2,
rubriqueID3, format, prix, photo, cle) VALUES ('$reference', '$titre',
'$description', '$detouree', '$mode', '$poids', '$auteur', '$agent',
'$date_saisie', '$rubriqueID1', '$rubriqueID2', '$rubriqueID3', '$format',
'$prix', '$photo_name', '$cle')";
mysql_query($insertPhoto, $id) or die(mysql_error());
//----Gestion de la photo de l'article si elle a était modifiée
if ($photo['photo']['size']!=0)
{
$repertoire="../photos/";
}
//redirection vers la page ArticlesGestion.php
header("Location: PhotosGestion.php");
}//fin du if
//si la reference existe déjà > message d'erreur
else
{
$erreur_reference=1;
}
}
?>
Quelqu'un peut-il m'aiguiller ??
J'ai essayé avec COPY à la place de move-upload_file, mais ça fait la meme
chose (ok sous EasyPHP, pas de transfert sous free).
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Guillaume Bouchard
Pierre wrote:
Bonjour,
Je suis en train d'étudier le livre PHP/MySQL avec DreamMX et quelque chose m'échappe !
Ils ont osé faire un livre "Comment faire du php avec dreamweaver" ? Il faudra que je pense à faire un copier coller de cette phrase, cela me simplifierait la vie :
Le php est on tres bon outil permetant de generer du html, cependant le html est un truc qui n'est pas a prendre à la legere et qui respect une syntaxe certaine ainsi que des methodes de developpement. Bref, il FAUT connaitre son html si l'on veut utiliser php (dans cette optique, phpGTK c'est autre chose ;o))
Personellement, je ne conduis pas, mais le jour ou j'acheterais une voiture, je pense que je passerais mon permis avant. Logique ?
Tout cela pour dire que l'utilisation de dreamMX pour realiser du html et du php n'est AMHA pas une bonne idee. Mieux vaut utiliser un editeur de texte simple qu'un editeur html qui fait le café le tout a un prix sympatique.
Bon, passons.
Dans un formulaire de saisie, j'utilise un champ de fichier pour transférer une photo dans un dossier. Ce principe marche sous EasyPHP mais pas sur le serveur Free qui charge une photo par défaut (logo.jpg) définie dans le script !
Php 4 ou 3 ? J'ai laché l'actualité de free depuis longtemps, mais il me semble qu'ils ne supportaient pas l'upload en php4.
Voici la portion de sctip :
<?php if ($ajoutPhoto=="ok") {
On est bien d'acord que toutes tes valeurs ont été filtrer et nettoyer avant et que $ajoutPhoto est definit à OK que dans le cas où tout est bon ?
//sélection de la base de données mysql_select_db($database_id, $id);
//vérification si la reference existe déjà dans la base
Mauvais concept. Il faut faire l'insertion et dans le cas ou celle ci echoue du fait des clefs primaire et uniques de la table, il faut dire qu'elle existe deja. Pour tester sir l'erreur vient d'un problème d'unicité ou d'autre chose, mysql_error() renvoie 1064 ou 1062 (je ne sais jamais...) dans le cas d'un doublons.
if ($photo['photo']['size']!=0)
D'où provient $photo ?
//enregistrement dans la base du nouveau compte client mysql_select_db($database_id, $id);
Pas besoin de reselection la base à chaques fois. Cependant il est preferable de faire quand même la gestion d'erreur:
Donc ce serait cette ligne qui plante. Je ne vois pas où donc si tu pouvais donner plus d'informations (warning, etat des variables à ce moment...)
header("Location: PhotosGestion.php");
include('header.troll'); Dans les normes http, header prend comme parametre une url absolue. De plus comme dirait JG, tu demandes au livreur de redescendre la machine à lavé de 5 etages pour ensuite remonter de 6
-- Guillaume. Souhaitez moi bonne chance, DS de math H - 2.
Pierre wrote:
Bonjour,
Je suis en train d'étudier le livre PHP/MySQL avec DreamMX et quelque chose
m'échappe !
Ils ont osé faire un livre "Comment faire du php avec dreamweaver" ?
Il faudra que je pense à faire un copier coller de cette phrase, cela me
simplifierait la vie :
Le php est on tres bon outil permetant de generer du html, cependant le
html est un truc qui n'est pas a prendre à la legere et qui respect une
syntaxe certaine ainsi que des methodes de developpement. Bref, il FAUT
connaitre son html si l'on veut utiliser php (dans cette optique, phpGTK
c'est autre chose ;o))
Personellement, je ne conduis pas, mais le jour ou j'acheterais une
voiture, je pense que je passerais mon permis avant. Logique ?
Tout cela pour dire que l'utilisation de dreamMX pour realiser du html
et du php n'est AMHA pas une bonne idee. Mieux vaut utiliser un editeur
de texte simple qu'un editeur html qui fait le café le tout a un prix
sympatique.
Bon, passons.
Dans un formulaire de saisie, j'utilise un champ de fichier pour transférer
une photo dans un dossier.
Ce principe marche sous EasyPHP mais pas sur le serveur Free qui charge une
photo par défaut (logo.jpg) définie dans le script !
Php 4 ou 3 ? J'ai laché l'actualité de free depuis longtemps, mais il me
semble qu'ils ne supportaient pas l'upload en php4.
Voici la portion de sctip :
<?php
if ($ajoutPhoto=="ok")
{
On est bien d'acord que toutes tes valeurs ont été filtrer et nettoyer
avant et que $ajoutPhoto est definit à OK que dans le cas où tout est bon ?
//sélection de la base de données
mysql_select_db($database_id, $id);
//vérification si la reference existe déjà dans la base
Mauvais concept. Il faut faire l'insertion et dans le cas ou celle ci
echoue du fait des clefs primaire et uniques de la table, il faut dire
qu'elle existe deja. Pour tester sir l'erreur vient d'un problème
d'unicité ou d'autre chose, mysql_error() renvoie 1064 ou 1062 (je ne
sais jamais...) dans le cas d'un doublons.
if ($photo['photo']['size']!=0)
D'où provient $photo ?
//enregistrement dans la base du nouveau compte client
mysql_select_db($database_id, $id);
Pas besoin de reselection la base à chaques fois. Cependant il est
preferable de faire quand même la gestion d'erreur:
Donc ce serait cette ligne qui plante. Je ne vois pas où donc si tu
pouvais donner plus d'informations (warning, etat des variables à ce
moment...)
header("Location: PhotosGestion.php");
include('header.troll');
Dans les normes http, header prend comme parametre une url absolue. De
plus comme dirait JG, tu demandes au livreur de redescendre la machine à
lavé de 5 etages pour ensuite remonter de 6
--
Guillaume.
Souhaitez moi bonne chance, DS de math H - 2.
Je suis en train d'étudier le livre PHP/MySQL avec DreamMX et quelque chose m'échappe !
Ils ont osé faire un livre "Comment faire du php avec dreamweaver" ? Il faudra que je pense à faire un copier coller de cette phrase, cela me simplifierait la vie :
Le php est on tres bon outil permetant de generer du html, cependant le html est un truc qui n'est pas a prendre à la legere et qui respect une syntaxe certaine ainsi que des methodes de developpement. Bref, il FAUT connaitre son html si l'on veut utiliser php (dans cette optique, phpGTK c'est autre chose ;o))
Personellement, je ne conduis pas, mais le jour ou j'acheterais une voiture, je pense que je passerais mon permis avant. Logique ?
Tout cela pour dire que l'utilisation de dreamMX pour realiser du html et du php n'est AMHA pas une bonne idee. Mieux vaut utiliser un editeur de texte simple qu'un editeur html qui fait le café le tout a un prix sympatique.
Bon, passons.
Dans un formulaire de saisie, j'utilise un champ de fichier pour transférer une photo dans un dossier. Ce principe marche sous EasyPHP mais pas sur le serveur Free qui charge une photo par défaut (logo.jpg) définie dans le script !
Php 4 ou 3 ? J'ai laché l'actualité de free depuis longtemps, mais il me semble qu'ils ne supportaient pas l'upload en php4.
Voici la portion de sctip :
<?php if ($ajoutPhoto=="ok") {
On est bien d'acord que toutes tes valeurs ont été filtrer et nettoyer avant et que $ajoutPhoto est definit à OK que dans le cas où tout est bon ?
//sélection de la base de données mysql_select_db($database_id, $id);
//vérification si la reference existe déjà dans la base
Mauvais concept. Il faut faire l'insertion et dans le cas ou celle ci echoue du fait des clefs primaire et uniques de la table, il faut dire qu'elle existe deja. Pour tester sir l'erreur vient d'un problème d'unicité ou d'autre chose, mysql_error() renvoie 1064 ou 1062 (je ne sais jamais...) dans le cas d'un doublons.
if ($photo['photo']['size']!=0)
D'où provient $photo ?
//enregistrement dans la base du nouveau compte client mysql_select_db($database_id, $id);
Pas besoin de reselection la base à chaques fois. Cependant il est preferable de faire quand même la gestion d'erreur:
Donc ce serait cette ligne qui plante. Je ne vois pas où donc si tu pouvais donner plus d'informations (warning, etat des variables à ce moment...)
header("Location: PhotosGestion.php");
include('header.troll'); Dans les normes http, header prend comme parametre une url absolue. De plus comme dirait JG, tu demandes au livreur de redescendre la machine à lavé de 5 etages pour ensuite remonter de 6
-- Guillaume. Souhaitez moi bonne chance, DS de math H - 2.
dwojylac.nospam
Pierre wrote:
//test si un fichier photo est sélectionné sino photo par défaut if ($photo['photo']['size']!=0) $photo_name=$photo['photo']['name']; else $photo_name="logo.jpg"
Il me semble que le pb vient de la façon dont tu récupères les données depuis ton formulaire d'upload :
1. Tu as un champ input de type "file" qui s'appelle "photo" apparemment dans ton formulaire.
2. Il faut impérativement que ton formulaire utilise la méthode post et encodage enctype="multipart/form-data" sinon la procédure ne fonctionne pas.
3. les données provenant de ce champ : $photo = $HTTP_POST_FILES['photo']; // puisque le nom du champ de type "input" du formulaire se nomme "doc" // $photo['name'] : nom du fichier // $photo['type'] : type MIME du fichier // $photo['size'] : taille du fichier en octets // $photo['tmp_name'] : pointeur vers le fichier téléchargé
Ton script n'est pas très clair la-dessus. $photo['photo']['size'] serait plutot $HTTP_POST_FILES['photo']['size'] D'autre part je ne ferais la mise à jour de ma table qu'après l'upload. move_uploaded_file retrourne true ou false suivant le cas.
Suivant l'hébergeur voir les pb de droit sur le dossier où le fichier va être mis. Chez free il n'y a rien a toucher et move_uploaded_file fonctionne très bien en php4. (voir ci-dessous)
-- Dominique http://wojylac.free.fr
Pierre <p.lecciaNOSPAM@laposte.net> wrote:
//test si un fichier photo est sélectionné sino photo par défaut
if ($photo['photo']['size']!=0)
$photo_name=$photo['photo']['name']; else $photo_name="logo.jpg"
Il me semble que le pb vient de la façon dont tu récupères les données
depuis ton formulaire d'upload :
1. Tu as un champ input de type "file" qui s'appelle "photo" apparemment
dans ton formulaire.
2. Il faut impérativement que ton formulaire utilise la méthode post et
encodage enctype="multipart/form-data" sinon la procédure ne fonctionne
pas.
3. les données provenant de ce champ :
$photo = $HTTP_POST_FILES['photo'];
// puisque le nom du champ de type "input" du formulaire se nomme "doc"
// $photo['name'] : nom du fichier
// $photo['type'] : type MIME du fichier
// $photo['size'] : taille du fichier en octets
// $photo['tmp_name'] : pointeur vers le fichier téléchargé
Ton script n'est pas très clair la-dessus.
$photo['photo']['size'] serait plutot $HTTP_POST_FILES['photo']['size']
D'autre part je ne ferais la mise à jour de ma table qu'après l'upload.
move_uploaded_file retrourne true ou false suivant le cas.
Suivant l'hébergeur voir les pb de droit sur le dossier où le fichier va
être mis. Chez free il n'y a rien a toucher et move_uploaded_file
fonctionne très bien en php4. (voir ci-dessous)
//test si un fichier photo est sélectionné sino photo par défaut if ($photo['photo']['size']!=0) $photo_name=$photo['photo']['name']; else $photo_name="logo.jpg"
Il me semble que le pb vient de la façon dont tu récupères les données depuis ton formulaire d'upload :
1. Tu as un champ input de type "file" qui s'appelle "photo" apparemment dans ton formulaire.
2. Il faut impérativement que ton formulaire utilise la méthode post et encodage enctype="multipart/form-data" sinon la procédure ne fonctionne pas.
3. les données provenant de ce champ : $photo = $HTTP_POST_FILES['photo']; // puisque le nom du champ de type "input" du formulaire se nomme "doc" // $photo['name'] : nom du fichier // $photo['type'] : type MIME du fichier // $photo['size'] : taille du fichier en octets // $photo['tmp_name'] : pointeur vers le fichier téléchargé
Ton script n'est pas très clair la-dessus. $photo['photo']['size'] serait plutot $HTTP_POST_FILES['photo']['size'] D'autre part je ne ferais la mise à jour de ma table qu'après l'upload. move_uploaded_file retrourne true ou false suivant le cas.
Suivant l'hébergeur voir les pb de droit sur le dossier où le fichier va être mis. Chez free il n'y a rien a toucher et move_uploaded_file fonctionne très bien en php4. (voir ci-dessous)
-- Dominique http://wojylac.free.fr
loufoque
Guillaume Bouchard a dit le 20/01/2005 12:18:
Php 4 ou 3 ? J'ai laché l'actualité de free depuis longtemps, mais il me semble qu'ils ne supportaient pas l'upload en php4.
Ça fait des lustres que c'est corrigé, y'a même PHP5.0.3 sur Free maintenant.
Guillaume Bouchard a dit le 20/01/2005 12:18:
Php 4 ou 3 ? J'ai laché l'actualité de free depuis longtemps, mais il me
semble qu'ils ne supportaient pas l'upload en php4.
Ça fait des lustres que c'est corrigé, y'a même PHP5.0.3 sur Free
maintenant.