Base de fichier et non base de données

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

23 oct. 2006, 11:20

Utilise la fonction move_uploaded_file() au lieu de copy(), elle est faite pour ça, et surtout elle connait le chemin complet du dossier temporaire ou ont été uploadés les fichiers pour pouvoir les déplacer ;)

Attention également au chemin : $chemin = "/photosbien". Il ne faut pas confondre le chemin dans l'url et le chemin dans le système de fichier. La racine n'est pas du tout la même :)
Ici, ton code signifie qu'il part de la racine du disque dur (/ ou c:\) et qu'il tente d'ouvrir un dossier nommé photosbien.
Si tu veux écrire à partir du dossier local, il faut soit supprimer le slash, soit le préfixer d'un seul point : "photosbien" ou "./photosbien"

Ne pas oublier non plus le slash entre le nom du dossier et le nom du fichier... ;)

Nota : ca me parait bizare comme action : "javascript:self.close();". A ta place je mettrais le nom du fichier et ne ferais le close() qu'une fois le fichier correctement transféré.

Eléphant du PHP | 258 Messages

23 oct. 2006, 11:46

Que pense tu de ca:

Code : Tout sélectionner

<form name="formulaire_envoi_fichier" enctype="multipart/form-data" method="post" action="popupimage.php"> <input type="file" name="fichier_choisi"> <br> <br> <input type="submit" name="bouton_submit" value="Envoyer le fichier"> </form> <?php //on vérifies que le champ est bien rempli: if(!empty($_FILES["fichier_choisi"]["name"])) { //nom du fichier choisi: $nomFichier = $_FILES["fichier_choisi"]["name"] ; //nom temporaire sur le serveur: $nomTemporaire = $_FILES["fichier_choisi"]["tmp_name"] ; //type du fichier choisi: $typeFichier = $_FILES["fichier_choisi"]["type"] ; //poids en octets du fichier choisit: $poidsFichier = $_FILES["fichier_choisi"]["size"] ; //code de l'erreur si jamais il y en a une: $codeErreur = $_FILES["fichier_choisi"]["error"] ; //chemin qui mène au dossier qui va contenir les fichiers uplaod: $chemin = "./photosbien" ; if(move_uploaded_file($nomTemporaire, $chemin.$nomFichier)) echo("<br>l'upload a réussi"),; else echo("<br>l'upload a échoué") ; }//fin if else { echo("Vous n'avez pas choisit de fichier!!<br>") ; }//fin else ?>

Par contre je ne sais pas ou place self.close

Eléphant du PHP | 258 Messages

23 oct. 2006, 11:58

j'ai compris enfin pas tout.

Voila mon code

Code : Tout sélectionner

<form name="formulaire_envoi_fichier" enctype="multipart/form-data" method="post" action="popupimage.php"> <input type="file" name="fichier_choisi"> <br> <br> <input type="submit" name="bouton_submit" value="Envoyer le fichier"> </form> <?php //on vérifies que le champ est bien rempli: if(!empty($_FILES["fichier_choisi"]["name"])) { //nom du fichier choisi: $nomFichier = $_FILES["fichier_choisi"]["name"] ; //nom temporaire sur le serveur: $nomTemporaire = $_FILES["fichier_choisi"]["tmp_name"] ; //type du fichier choisi: $typeFichier = $_FILES["fichier_choisi"]["type"] ; //poids en octets du fichier choisit: $poidsFichier = $_FILES["fichier_choisi"]["size"] ; //code de l'erreur si jamais il y en a une: $codeErreur = $_FILES["fichier_choisi"]["error"] ; //chemin qui mène au dossier qui va contenir les fichiers uplaod: $content_dir = 'photosbien' ; if(move_uploaded_file($nomTemporaire, $content_dir .$nomFichier)) echo("<br>l'upload a réussi"); else echo("<br>l'upload a échoué") ; }//fin if else { echo("Vous n'avez pas choisit de fichier!!<br>") ; }//fin else ?>

Mais il m'enregistre le fichier plus sur le disque dur mais la ou je veut enfin a peut pret.

Et aussi il m'ajoute le nom du chemin au non de fichier et moi je veut pas je vaisessayer d'enlever le nom temp on verra bien

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

23 oct. 2006, 12:00

Ben j'en pense que si ça fonctionne, c'est très bien ;) ... ceci dit j'ai un doute sur la virgule dans cette ligne : echo("<br>l'upload a réussi"),;

Et par ailleurs, il te manque toujours le "/" entre le chemin et le nom du fichier.. tu risque de retrouver tes fichiers bizarement nommé dans le répertoire parent :)

Quant au close, tu peux faire un lien ou un bouton avec le message de confirmation pour refermer la fenêtre, ou le faire automatiquement :
if(move_uploaded_file($nomTemporaire, $chemin.'/'.$nomFichier))  {
  echo("<br>l'upload a réussi"); // le message ne sert plus à grand chose du coup..
  echo "<script>self.close();</script>"; // ferme la popup
}

Eléphant du PHP | 258 Messages

23 oct. 2006, 12:07

Merci ryle j'ai trouver mon erreur grace a toi.

J'ai change j'ai mis sa:

Code : Tout sélectionner

$content_dir = './photosbien/' ; if(move_uploaded_file($nomTemporaire,$content_dir.$nomFichier)) echo("<br>l'upload a réussi")
La virgule et parti, ca m'enregistre le fichier ou je veut on va voir pour le close,mais j'ai oublier un truc important il faut que sa aparaisse dans ma textarea

Merci pour le close c'est la que je voulais le place mais j'en etait pas vraiment sur.

Eléphant du PHP | 258 Messages

23 oct. 2006, 15:17

Pour remplacer mon image j'ai mis se code mais sa ne marche pas:

Code : Tout sélectionner

$txt = preg_replace("!\[img\](.+)\[/img\]!isU" , "<img src=\"$1/>", $txt);
Voici le code qu'il doit remplacer:

Code : Tout sélectionner

echo "<script>window.opener.AddText('[img]','$content_dir.$nomFichier','[/img]'); self.close();</script>"; // ferme la popup
Cela m'affiche un petit rectangle avec une croix rouge

quelqu'un a une idee.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

23 oct. 2006, 15:25

Regarde le code source de ta page pour voir concrètement par quoi ton code a été remplacé.. Tu verras qu'il te manque quelque chose dans ta balise image pour que sa syntaxe soit correcte :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 258 Messages

23 oct. 2006, 15:38

il a etait remplacer par ca:

Code : Tout sélectionner

<img src="./photosbien/.BrickWall.jpg/>
et sa devrais etre un truc dans se genre

Code : Tout sélectionner

<img src="admin/photosbien/BrickWall.jpg" width="1024" height="806">
C'est sa ou je me trompe?

Eléphant du PHP | 258 Messages

23 oct. 2006, 16:11

Bon vous allez me prendre pour un naze mais je ne trouve pas j'ai essayer plusieurs chose mais sa ne marche pas je suis sur que je tourne autour du pot il doit me manqué un point, un slash un truc comme sa mais je n'arrive pas a mettre la main dessus.

Néanmoins je continu à cherche mais une indiquation ou un coup de pousse serait le bienvenu.

Merci.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

23 oct. 2006, 16:27

Le mieux et le plus simple c'est de partir du html que tu veux obtenir en sortie :

Code : Tout sélectionner

<img src="admin/photosbien/BrickWall.jpg">
(j'ai viré les infos sur height et width, vu que cela dépend de chaque image et ca évite de la déformer)

Pour obtenir ce résultat, il suffit en php de faire :
echo "<img src=\"admin/photosbien/BrickWall.jpg\">";
La dedans, ce qui va changer c'est le chemin de l'image
echo "<img src=\"admin/$variable\">";
(en supposant que ta variable contienne "photosbien/BrickWall.jpg")

Dans ton expression régulière, ca devient ainsi :
$txt =  preg_replace("!\[img\](.+)\[/img\]!isU" ,  "<img src=\"admin/$1\">", $txt); 
Il ne te reste plus qu'à ajuster le chemin "admin/" pour que celui-ci ajouté à la valeur capturée par la parenthèse corresponde au chemin final de ton image :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 258 Messages

23 oct. 2006, 16:41

Merci ryle ,


J'ai editer mon message car l'image ne s'affiche toujours pas dans le code source sa me met sa:

Code : Tout sélectionner

<img src="admin/photosbien.BrickWall.jpg">


Par contre je viend aussi de m'apercevoir que quand j'ecris mon texte dans la textarea et qu'il contient un(') apostrophe mot code ne marche plus.

Comment sa se fait.
Moi perso je pense que c'est le php qui prend ca pour un truc a lui.
C'est dur a dire en faite.

Comment remedier a ca svp?
Il faut que je rmplace (') par \'?

Eléphant du PHP | 258 Messages

23 oct. 2006, 17:01

J'ai trouver mon erreur et l'image s'affiche bien merci a tous et surtout a ryle.

Ma question sur l'apostrophe tient toujours.

Merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

23 oct. 2006, 17:15

Y a pas de quoi :)

Pour tes apostrophes regarde du côté des fonctions addslashes() ou str_replace() ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 258 Messages

23 oct. 2006, 17:51

je sais pas si c'est toi ou moi qu'y a mis resolu je l'ai enlever car j'aurais d'autres questions plus tard,bon si je n'ai pas autre questions je metté resolu.

Bon pour l'apostrophe il faut que je remplace tout mes preg_replace par
str_replace.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

23 oct. 2006, 18:01

Ppas besoin de tout remplacer, fait juste le str_replace une fois avant d'enchainer tes preg :)

Pour le résolu ça devait être toi (ou bienveillant modo ;)), moi je peux pas le faire.. mais rien ne t'empêche de mettre Résolu ici et d'ouvrir un autre topic plus tard si tu as une autre question... ca permet à ceux qui ont le même problème de trouver une solution plus facilement :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...