8741 sujets

Développement web côté serveur, CMS

Pages :
(reprise du message précédent)

Essaye plutôt : $DELSTR = "PHOTO".$PIC;

De base, pour les variables, essaye de les sortir du string (délimité par les " ") en utilisant le concaténage avec le point.

Là en fait, tu rentrais dans $DELSTR la valeur "PHOTO$PIC" et non pas PHOTO1, PHOTO2.

Pour la seconde question, je ne sais pas ^^
A mon avis le 11/11 n'est pas férier en belgique, t'es là ?

j'arrive pas à comprendre ces warning :

Warning: move_uploaded_file(/Photos/ANN_32/photo1.jpg) [function.move-uploaded-file0]: failed to open stream: No such file or directory in C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb\postpics.php on line 122

Warning: move_uploaded_file() [function.move-uploaded-file0]: Unable to move 'C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\binaries\tmp\php26BA.tmp' to '/Photos/ANN_32/photo1.jpg' in C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb\postpics.php on line 122


ca c'est mon message de débugage qui me dit que les 2 fichiers ont bien été copié jusqu'au dossier TMP de mon serveur=>

Erreur lors du transfert de la Photo 1: Array ( Smiley userfile1 => Array ( Smiley name => photo1.jpg Smiley type => image/jpeg [tmp_name] => C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\binaries\tmp\php26BA.tmp Smiley error => 0 Smiley size => 100228 ) Smiley userfile2 => Array ( Smiley name => photo2.jpg Smiley type => image/jpeg [tmp_name] => C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\binaries\tmp\php26BB.tmp Smiley error => 0 Smiley size => 17191 ) Smiley userfile3 => Array ( Smiley name => Smiley type => [tmp_name] => Smiley error => 4 Smiley size => 0 ) Smiley userfile4 => Array ( Smiley name => Smiley type => [tmp_name] => Smiley error => 4 Smiley size => 0 ) )

ça apparemment c'est qu'il ne trouve pas le chemin web de destination qui partant de la racine web est monsite.com/photo/ANN_32...

Warning: move_uploaded_file(/Photos/ANN_32/photo2.jpg) [function.move-uploaded-file0]: failed to open stream: No such file or directory in C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb\postpics.php on line 122

est-ce bien dans le chemin de la destination que je bug et comment dois-je l'indiquer

Sachant que quand j'efface une photo avec $unlink c'est bien le chemin que j'indique depuis le même dossier
Oups, sans crochet le message de debug est le suivant

Erreur lors du transfert de la Photo 1: Array ( *userfile1* => Array ( *name* => photo1.jpg *type* => image/jpeg *tmp_name* => C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\binaries\tmp\php26BA.tmp *error* => 0 *size* => 100228 ) *userfile2* => Array ( *name* => photo2.jpg *type* => image/jpeg *tmp_name* => C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\binaries\tmp\php26BB.tmp *error* => 0 *size* => 17191 ) *userfile3* => Array ( *name* => *type* => *tmp_name* => *error* => 4 *size* => 0 ) *userfile4* => Array ( *name* => *type* => *tmp_name* => *error* => 4 *size* => 0 ) )
J'ai trouvé ça si ça peut t'aider (par rapport à ton erreur)

a écrit :
A simple way to keep track of the path is just to define the absolute path in your index.php
define ('SITE_ROOT', realpath(dirname(__FILE__)));

Then just use it like:
move_uploaded_file($_FILES['file']['temp_name'], SITE_ROOT.'/static/images/slides/1/1.jpg');



L'autre détail, c'est que, semble-t-il, le répertoire doit être fait à la main... et absolument avoir le chmod à 777 (pour permettre à ton programme de placer des fichiers dedans).


(et si, le 11/11 est férié en Belgique ^^ mais en tant qu'indépendante, ça me concerne qu'à moitié ^^)
Modérateur
Bonjour!

Lothindil a écrit :

L'autre détail, c'est que, semble-t-il, le répertoire doit être fait à la main... et absolument avoir le chmod à 777 (pour permettre à ton programme de placer des fichiers dedans).

Le chmod c'est pour un système Unix, avec Windows ça ne va pas bien l'avancer. (De plus on peut mettre des droits plus restrictifs que 777, en s'assurant que le propriétaire du fichier ou dossier corresponde au user éxecutant php…)

Sinon en effet, les fonctions php permettant de manipuler les fichiers se réfèrent au chemin sur la machine (sauf si un autre protocole est indiqué). donc /Photos/ANN_32/photo1.jpg se réfère à un dossier Photos se situant à la racine de ton système (Unix). Pour compliquer la tâche, sous windows (comme c'est le cas en local) le chemins s'écrivent autrement: c:\\Photos\\ANN_32\\photo1.jpg
Donc attention à cela.
Bon depuis ce matin je ne comprends rien à rien mais je crois que c'est moi pas vous
en fait le script qui fonctionnait en php4 est ci dessous si vous voyez un bug dites moi svp
Tout à l'air de fonctionner jusqu'au TMP mais ensuite le transfert dans le $uploaddir bugue



if ( ! file_exists($uploaddir))
 { 
   if ($debugflag == 0)
   {
   print ("Le répertoire " . $uploaddir . " n'existe pas et doit être créé.");
   }
   mkdir($uploaddir,0777);
   chmod($uploaddir,0777);


   if ( ! file_exists($uploaddir))
       {
           if ($debugflag == 1)
           {
		print ("Erreur lors de la création du répertoire " . $uploaddir . ". Merci de contacter le webmaster.");
   		die(mysql_error());
           }
	  }
   else
       {	
           if ($debugflag == 1)
           {
           print ("Le répertoire " . $uploaddir . " a été créé avec succès.");
           }
       }
 }

function get_extension($Filename)
{
$pos = strcspn($Filename,".");
return (LCase(Right($Filename,Len($Filename) - $pos)));
}

$requetea="Update annonces set ";

$requeteb=" where IMMOID=$IMMOID";

for ( $i=1 ; $i<5 ; $i++)
{
  $cname = $_FILES['userfile'. $i]['name'];
  $exten = get_extension($cname);
  //print ("<BR>$exten<BR><BR>");

 if ($cname != "")
 {
  if (move_uploaded_file($_FILES['userfile'. $i]['tmp_name'], $photodir . "photo$i". $exten)
  
  		)
     { 	chmod($photodir . "photo$i". $exten,0777); 
	if (filesize($photodir . "photo$i". $exten) < 150000)
		{
		print ("Le fichier " . $_FILES['userfile'. $i]['name'] . " est valide. Il a été téléchargé avec succès sous le nom photo$i$exten.<BR><BR>");

		if ($reqstr != "") { $reqstr .= ","; }
	  	//print ("TAILLE : " . filesize($uploaddir . "photo$i". $exten) . ".");
 	 	$reqstr .= "PHOTO$i = '" . "photo$i". $exten ."'";		
		if ($debugflag == 1)
		  {
		  print("Voici plus d'informations :\n<BR>");
		  print_r($_FILES);
		  }
		}
	else
		{
		print ("<FONT color=red>Le fichier " . $_FILES['userfile'. $i]['name'] . " est trop grand et à été supprimé. Veuillez verifier la taille de votre fichier et ne pas utiliser de fichier dont la taille excède 65 Ko.</font>");
		unlink ($uploaddir . "photo$i". $exten);
		}
	}
  else
 	{
	 print ("Erreur lors du transfert de la Photo $i:\n");
		 if ($debugflag == 1)
		  {
		  print_r($_FILES);
		  }
	 }
 } 
}

quand je dis que je suis une loque aujourd'hui

La formule magique que tu m'a fourni fonctionne bien partout
sauf que là, j'aurai besoin de récupérer la valeur du rang 0 de l'array qui n'a qu'une ligne


$reqstr = "SELECT * FROM profils where ID=$PROPID";
//print ($reqstr);
$requete=mysqli_query($db_link,$reqstr) or die(mysql_error());
if(mysqli_num_rows($requete)>0)
   {
	    $array=mysqli_fetch_assoc($requete);
$VEMAIL=$array["EMAIL"];
$VEMAIL2="$VEMAIL";
   }


J'ai essayé



$VEMAIL2="$VEMAIL";
$VEMAIL2=$VEMAIL[0];


ça veut pas!
j'ai trouvé !!!!!
mais je craque quand même!!

En fait ce site n'a aucune charte de construction et le champs VILLE est en maj dans la base MySql tandis que le champs Email est en maj+min.

Comme en plus je ne suis pas sur de mes syntaxes, il m'a fallu 3 heures pour m'en apercevoir et comprendre !!!!

J'espère que tu compatis en voyant mes errances de débutant Smiley cligne
cezig a écrit :
j'ai trouvé !!!!!
mais je craque quand même!!

En fait ce site n'a aucune charte de construction et le champs VILLE est en maj dans la base MySql tandis que le champs Email est en maj+min.

Comme en plus je ne suis pas sur de mes syntaxes, il m'a fallu 3 heures pour m'en apercevoir et comprendre !!!!

J'espère que tu compatis en voyant mes errances de débutant Smiley cligne

J'ai géré un site à plus de 25 tables sans aucune charte de construction... (le genre ou "IDpj", "idPj", "IDPj", "idPJ" représentait un même type de champs).

Un truc qui marche bien pour les erreurs de charte de construction en mysql : les allias de champs.

Mysql est magique (à mon goût) parce qu'il n'est absolument pas case-sensitive. "select Ville from lieu" ou "select VILLE from lieu" marchera exactement de la même manière. Le php par contre, dans le fetch_assoc() aura 2 variables différentes ($data['Ville'] et $data['VILLE']). MAIS il y a une solution miracle. Tu vas "créer" la charte de construction en brut dans le code ^^ en écrivant :

select ville as Ville, pays as Pays, cat as Categorie from lieu


Et là, miracle, quelque soit la manière avec laquelle c'est écrit dans tes tables, ton PHP réagira à $data['Ville'], $data['Pays'], $data['Cat'].

(bon, après ça force à spécifier les champs de recherche MAIS c'est mieux, ça permet de limiter à ce dont on a besoin et pas plus, mais aussi d'éviter les confusions dans le cas où 2 champs auraient le même nom dans une jointure)
Modifié par Lothindil (14 Nov 2013 - 09:30)
Pages :