probleme avec copy (qui copie une fois sur 2)

Petit nouveau ! | 4 Messages

04 déc. 2007, 21:31

bonjour, j'ai un probleme avec la finction copy.

j'ai creer un script pour un site de video.
l'utilisateur peux poster des videos, y compris un playeur dailymotion.
l'utilisateur doit en plus de la video ou du player mettre une thunbs representant la video. Il le peut soit en uploadant l'image, soit en mettant le lien vers l'image (copy)
le probleme que j'ai c'est que l'image est uploadée une fois toutes les 3 fois quand c'est un lien!!!




voici le script du fichier soumettre-une-video.php


//include de la generation des images selon le type d'upload
include ("gen-img.php");
//include de la generation des video selon le type de media 
include ("gen-video.php");


//variable pour enregistrement de la video dans la bdd
$invisible = $_POST['invisible'];



if (isset($_POST['invisible'])  )
{
$resultat = mysql_query("INSERT INTO Video VALUES('', '$titre', '$desc', '$cat', '$type', '$Media_type', '$image_type', '$date', '', '', '', '', '0')") or die (mysql_error());
}

if ($invisible) {// la video a été postée

echo 'ca marche<br />
<a href="'.$url.'">'.$sitename.' revenir à la home page</a><br /><br />
<a href="'.$url.'soumettre-une-video.php">Nouvelle vidéo</a>';
}

else
{
//formulaire d'envoi
};//fin de la boucle  variables  id 

?>



et le fichier gen-img.php rapattriant l'image dans les 2 cas, soit un upload simple, soit un lien vers l'image.
switch ($genre_img) {

case 1: // c'est une image uploadée donc on s'en fou le cas echeant
break;

case 2: // c'est un lien externe
$url_img = htmlentities ($_POST['image_type']);
$path_parts = pathinfo($url_img);
$ext = $path_parts['extension'];
$nombre_caractere_extension = strlen($ext); // necessaier a cause de //dailymotion dont le nom des images est style 4537.jpg?è(_çà"èé"553687


if ($nombre_caractere_extension > 5 ) // si l'extenstion a plus de 5 caracteres .jpeg par exemple alors on coupe tout ce qui depasse du ? 
{
$posi = strpos($ext, '?');
$extfinal = substr($ext, 0, $posi);
}
else //sinon on enregistre l'extension normale
{
$extfinal = $ext;
}


//variable d'enregitrement dans la bdd 
$image_type = $extfinal;
//copie du fichier
$copy = copy($url_img, 'upload/images/'.$id.'.'.$extfinal);
if ($copy) {echo "Chargement de l'image ok<br/>";echo 'extension : '.$extfinal.' <br />';}


break;

default:
$image_type = htmlentities ($_POST['image_upload']);
j'ai beau retourner le probleme dans tout les sens je ne trouve pas la raison pour laquelle, l'image ne se telecharge pas correctement tout le temps HELP!! :)



merci par avance de toute l'aide que vous pourriez m'apporter.


pour résumer
- l'image s'upload mal quand j'utilise la fonction copy.
- mon script est construit comme suit.

1 j'inclus les fichiers posant les variables et le design
2 j'inclus le fichiers uploadant les images, et les videos
3 je gere un message si dans mon formulaire la variable invisible est true (si le formulaire est complété :))
4 le formulaire

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Mammouth du PHP | 1511 Messages

04 déc. 2007, 22:00

Utilise move_uploaded_file(); a la place de copy();
@++ ;)

Eléphant du PHP | 61 Messages

05 déc. 2007, 14:49

Même si ce que je vais poster n'a rien a voir avec ton problème, quand tu mets ceci :
if ($invisible) // la video a été postée 
Cela ne serait pas plutôt ça :
if ( isset($invisible) )  // la video a été postée
?
Site sur THEOPERATION M.D. -> Nouvelle version (100%)
Ton code, tu indenteras; et le bohneur, tu feras.

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

05 déc. 2007, 15:06

Tout dépend de ce que tu veux faire, et en l'occurence un isSet() serait toujours vrai, dans la mesure ou la variable est définie quelque lignes au dessus (ceci étant il faudrait que le isSet(isset($_POST['invisible']) soit effectué avant d'en affecter la valeur a $invisible)

En fait, un if() va tester une expression pour savoir si elle est vraie ou pas. Il va donc évaluer l'expression et déterminer si celle-ci retourne la valeur TRUE. L'expression peut être un test ($a==$b), le résultat d'une fonction (isNumeric(...)), ou tout simplement la valeur d'une variable booléenne.
$var = TRUE;
if ($var) { // le test sera vrai
  ...
}
// cela revient au même que de faire 
if ($var==TRUE) {...}
// (si TRUE est égal à TRUE, alors l'expression est TRUE)
Sachant que php ne type pas ses variables, les chaines non vides, les nombres différents de 0, etc. seront également considérés comme un booléen avec la valeur "vrai". La syntaxe n'est pas forcément très explicite, mais elle est souvent utilisée, et pas seulement en php :)


Concernant le problème d'origine, quand tu dis qu'une fois sur 3 seulement l'image est bien copiée, fais tu le test avec différentes url ou toujours la même ? (en gros est-ce que cela ne viendrait pas de la façon dont le serveur se connecte pour récupérer l'image, genre temps de réponse, protocole ...)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 4 Messages

05 déc. 2007, 18:31

merci de vos réponses :)

move_uploaded_file() ne répond pas du tout a ma demande, en effet, je propose le choix, et je prefere utiliser moi meme copy :) mes utilisateur trouvent ca plus simple de mettre le lien vers la thumbs dailymotion, plutot que l'uplaoder sur son propre dd pour la upper sur le site ;)

quand je dis une fois sur 3 c'est pour une meme url (généralement la premiere ne passe pas, et en rafraichissant la page de soumission, l'image s'upload presque toujours) ou pour des urls différentes, 1 une video sera parfaite pour un site A puis 10 minute aprés, pour une seconde video du site A ca passera pas. idem si un site A, un site B et c postent 3 videos, une thumbs sera nikel, les 2 autres introuvables.

j'ai pensé au temps de reaction du serveur, mais j'ai essayé d'un serveur dédié ou il n'y avait QUE le script d'upload, et QUE l'image a uploader donc niveau ressource ... je vois pas comment faire moins :lol:

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Petit nouveau ! | 4 Messages

13 déc. 2007, 18:35

hum...


j'ai essayé de retourner le probleme.

j'ai modifier l'ordre de mon algo

si invisible = false
alors le formulaire
sinon
upload image et video
page de confirmation du postage

ca a l'ar de mieu marcher, mais j'ai toujours le mee probleme avec dailymotion. mais maintenant c'est qu'avec dailymotion

y aurait il une erreur ou une petite astuce pour la partie de script dédié a dailymotion?