petit probléme de controle de nom d'image en double

ViPHP
ViPHP | 5462 Messages

24 mai 2010, 16:53

je suis chez ovh
tu peux passer a php 5
http://guide.ovh.com/Php5ChezOvh

voir php 5.3, mais je te conseil de faire ta transition vers php 5.2 d'hab

ViPHP
AB
ViPHP | 5818 Messages

24 mai 2010, 17:00

Tu devrais normalement pouvoir choisir une version plus récente, ça te permettrais d'utiliser des codes "récents".

Essayes de remplacer la fonction initiale par celle-ci :
function Rename_fich($adresse_fichier)

    {
      //Si le fichier existe et est un fichier valide
      if (is_file($adresse_fichier))
              {
                  // Informations sur le fichier
                  $info = pathinfo($adresse_fichier);
                  $extension = $info['extension'];
                  $filename = basename($adresse_fichier);
                  $dossier = $info['dirname'];
 
                  // Cherche dans le nom de fichier des caractères numériques en fin de nom et si oui incrémente ce nombre grâce à la fonction anonyme create_function
                  $rename_filename = preg_replace_callback('#([0-9]+$)#', create_function('$matches','return $matches[1]+1;'), $filename);
                                 
                  $filename = $filename != $rename_filename ? $rename_filename : $filename.'1';
                                 
                  // Reconstruction du nom de fichier avec son extension (si elle existe)
                  $filename = !empty($extension) ? $filename.'.'.$extension : $filename;
                                 
                  // Reconstruction de l'adresse du fichier
                  $adresse = $dossier.'/'.$filename;
                                 
                  // Appel de la fonction pour re vérification avec le nouveau nom du fichier
                  return Rename_fich($adresse);
                                 
              }
                         
      // Retourne le chemin complet du fichier      
      else return $adresse_fichier;
    }
ca devrait marcher.

Mais le conseil de stealth35 d'essayer d'obtenir une version récente n'est pas à négliger.

Car si tu peux résoudre ce problème avec cette fonction tout de suite, c'est prochainement que auras d'autres pb si tu veux faire évoluer ton code. Le "minimum syndical" aujourd'hui est plutôt php 5.2

Eléphant du PHP | 388 Messages

24 mai 2010, 17:21

cela marche niquel donc j'ai mit a jour la version encore merci :p et le script du départ fonctionne a merveille encore merci a vous :D

ViPHP
AB
ViPHP | 5818 Messages

24 mai 2010, 18:15

cela marche niquel donc j'ai mit a jour la version encore merci :p et le script du départ fonctionne a merveille encore merci a vous :D
Ben alors t'as fait d'une pierre deux coups, la résolution de ton pb avec en plus la mise à jour de ta version php.
Elle est pas belle la vie ? :) A+

Eléphant du PHP | 388 Messages

28 mai 2010, 16:32

j'ai appliquer le script pour renommer les photos mais le probléme cela ne fonctionne pas j'ai rajouter des chose dans mon script general mais je voit pas se qui peut bloquer.
<?php
function Parse($variable,$valeur) {
echo "&" . $variable . "=" . utf8_encode($valeur);
}

if (!empty($_POST) && $_POST['MDP'] == $_POST['MDPBIS']) {

	if(($_POST['NOMUTILISATEURS'] != '') && ($_POST['MAILUTILISATEURS'] != ''))
     {
	 if(preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $_POST['MAILUTILISATEURS']))
        {

 // traitement
$categorie=$_POST['categorie'];
$typeannonce=$_POST['typeannonce'];
$souscategorie=$_POST['souscategorie'];
$titreannonce=$_POST['titreannonce'];
$descriptionannonce=$_POST['descriptionannonce'];
$prix=$_POST['prix'];
$departement=$_POST['departement'];
$region=$_POST['region'];
$NOMUTILISATEURS=$_POST['NOMUTILISATEURS'];
$MAILUTILISATEURS=$_POST['MAILUTILISATEURS'];
$MDP=$_POST['MDP'];
$MDPBIS=$_POST['MDPBIS'];
$TELEPHONE=$_POST['TELEPHONE'];

include ('connect.php');
$crypt=md5($MDP);



	//On sélectionne dans la table "UTILISATEUR" le login qui a pour valeur la variable "$login"
	$sql = "SELECT * FROM utilisateurs WHERE MAILUTILISATEURS = '$MAILUTILISATEURS'";
    $req = mysql_query($sql)or die(mysql_error());
	// on compte le nombre de résultats
    $result = mysql_numrows($req);
	// le login existe déjà
    if($result!=0)  
        {
        Parse("resultat","email '$MAILUTILISATEURS' existe deja, desole"); //alors on renvoi au Flash que le login '$MAILUTILISATEURS' existe déjà
        }
    else  //sinon le login n'existe pas  
        {
		
function Rename_fich($adresse_fichier)

    {
      //Si le fichier existe et est un fichier valide
      if (is_file($adresse_fichier))
              {
                  // Informations sur le fichier
                  $info = pathinfo($adresse_fichier);
                  $extension = $info['extension'];
                  $filename = $info['filename'];
                  $dossier = $info['dirname'];
 
                  // Cherche dans le nom de fichier des caractères numériques en fin de nom et si oui incrémente ce nombre grâce à la fonction anonyme create_function
                  $filename = preg_replace_callback('#([0-9]+$)#', create_function('$matches','return $matches[1]+1;'), $filename, '1', $count);
                                 
                  // Si des caractères numériques sont trouvés et incrémentés (le paramètre $count employé dans preg_replace_callback indique le nombre de remplacements), $filename prend sa nouvelle valeur, sinon l'ancienne concaténée à 1
                  $filename = !empty($count)? $filename : $filename.'1';
                                 
                  // Reconstruction du nom de fichier avec son extension (si elle existe)
                  $filename = !empty($extension) ? $filename.'.'.$extension : $filename;
                                 
                  // Reconstruction de l'adresse du fichier
                  $adresse = $dossier.'/'.$filename;
                                 
                  // Appel de la fonction pour re vérification avec le nouveau nom du fichier
                  return Rename_fich($adresse);
                                 
              }
                         
      // Retourne le chemin complet du fichier      
      else return $adresse_fichier;
        }

//dossier ou seront stocket les miniature et les images
$dir = getcwd()."/pics";
$dir_mini = getcwd()."/mini";

//taille des miniature
$ratio = 90;

//recuperation du post du formulaire
if (isset($_POST['ok'])) {
// on teste si le champ permettant de soumettre un fichier est vide ou non
	if (empty($_FILES['mon_image']['tmp_name'])) {
		
		$erreur = 'Aucun fichier envoyé.';
	}
			else {
			
			
// on examine le fichier uploadé en récupérant de nombreuses informations sur ce fichier		
		$tableau = @getimagesize($_FILES['mon_image']['tmp_name']);
		if ($tableau == FALSE) {
// si le fichier uploadé n'est pas une image, on efface le fichier uploadé et on affiche un petit message d'erreur 			
			unlink($_FILES['mon_image']['tmp_name']);
			$erreur = 'Votre fichier n\'est pas une image.';
		}

	
		else {
		

		
			if ($tableau[2] == 2) {
				
				if (is_file('.pics/'.$_FILES['mon_image']['name'])) $file_upload = '_'.$_FILES['mon_image']['name'];
				else $file_upload = $_FILES['mon_image']['name'];
				

// on copie le fichier que l'on vient d'uploader dans le répertoire des images de grande taille 				
				copy ($_FILES['mon_image']['tmp_name'], $dir.'/'.$file_upload);
				
				if ($tableau[2] == 2) {

// on crée une image à partir de notre grande image à l'aide de la librairie GD 					
					$src = imagecreatefromjpeg($dir.'/'.$file_upload);
					$NouvelleLargeur = 120; //Largeur choisie à 350px mais modifiable
					$NouvelleHauteur = 100;
					$NouvelleLargeurpaysage = 120;
					$NouvelleHauteurpaysage = 100;
					
					
// on teste si notre image est de type paysage ou portrait 					
					if ($tableau[0] > $tableau[1]) {
						$im = imagecreatetruecolor($NouvelleLargeur , $NouvelleHauteur) or die ("Erreur");
						imagecopyresampled($im , $src  , 0,0, 0,0, $NouvelleLargeur, $NouvelleHauteur, $tableau[0],$tableau[1]);
					}
					else {
						$im = imagecreatetruecolor($NouvelleLargeur , $NouvelleHauteur) or die ("Erreur");
						imagecopyresampled($im , $src  , 0,0, 0,0, $NouvelleLargeur, $NouvelleHauteur, $tableau[0],$tableau[1]);

					}
 // on copie notre fichier généré dans le répertoire des miniatures 										
					imagejpeg ($im, $dir_mini.'/'.$file_upload);
				
			
				}
				
			include ('connect.php');			
			$sql = "INSERT INTO utilisateurs (NOMUTILISATEURS,MAILUTILISATEURS,MDP,TELEPHONE) VALUES ('$NOMUTILISATEURS','$MAILUTILISATEURS','$crypt','$TELEPHONE')"; //Alors on insert dans la table le nouvel utilisateur        
                mysql_query ($sql);
                $NUMUTILISATEURS=mysql_insert_id();
                        $sql2 = "INSERT INTO annonces (categorie,typeannonce,souscategorie,titreannonce,descriptionannonce,prix,date,departement,region,NUMUTILISATEURS) VALUES ('$categorie','$typeannonce','$souscategorie','$titreannonce','$descriptionannonce','$prix','".date("Y-m-d H:i:s")."','$departement','$region','$NUMUTILISATEURS')";
                        $req = mysql_query($sql2)or die(mysql_error());
			
							$nom = "/{$_FILES['mon_image']['name']}";
							$image = $dir.$nom;
							$miniature = $dir_mini.$nom;
							$numannonce=mysql_insert_id();
							$sql3 = "INSERT INTO images (image,miniature,numannonce) VALUES ('$image','$miniature','$numannonce')";       
							$req = mysql_query($sql3)or die(mysql_error());

			  
			 header('Location: ../comptecree.php');
			
			
			
									}
			else {
// si notre image n'est pas de type jpeg				
				unlink($_FILES['mon_image']['tmp_name']);
				$erreur = 'Votre image est d\'un format non supporté.';
			}
		}
	}
	
}
	}
	
	}
        else
        {
			//controle adresse email carractère
            header('Location: ../emailinvalide.php');
        }
    }
    else
    {
        //controle saisie champs
         header('Location: ../champsnonrenseigne.php');
    }


}	
elseif (!empty($_POST))
{
  echo 'Le Mot de passe est different du premier.';
}      

?>

Pouvez vous m'aider svp merci d'avance

ViPHP
ViPHP | 5462 Messages

28 mai 2010, 16:35

t'as une erreur d'affiché ? si non t'as la gestion des erreurs d'activé ?

en haut de ta page
ini_set('display_errors', 1);
ini_set('error_reporting', E_ALL | E_STRICT);
EDIT :

et après rajoute un
echo sprintf('<pre>%s</pre>', print_r($_POST, true));

Eléphant du PHP | 388 Messages

28 mai 2010, 18:14

donc j'ai fait se que tu ma dit et lorsque je valide cela me donne

Array
(
[departement] => 63-Puy-de-Dôme
[NOM] => azazz
[MAIL] => [email protected]
[aaa => a
[aaa] => a
[TEL] =>
[typean] => donne
[categorie] => vehicules
[souscategorie] => bricolage-jardin-chauffage
[titre] => aaa
[description] => aaa
[prix] => aa
[region] => Auvergne
[ok] => envoyer
)


Warning: Cannot modify header information - headers already sent by (output started at /aa/laa/www/php/mcpvalidationannonce.php:4) in /homez.316/logisdesq/www/php/mcpvalidationannonce.php on line 183

le header c'est normal cela est dut au echo mais pas d'autre message

ViPHP
AB
ViPHP | 5818 Messages

28 mai 2010, 19:43

Ben si ça fonctionnait avant et que cela ne fonctionne plus après avoir rajouter du code, c'est bien ce que tu as rajouté qui pose problème.

Donc suffit de reprendre et contrôler pas à pas tes modifications... Soit tu recommences ta modification et tu vérifies chaque étape, soit tu mets des tests (genre echo 'bloc 1 ok ça passe';) dans ton code actuel pour voir où ça bloque. Bien entendu avec la gestion des erreurs activées.

Savoir débugguer un code est très instructif, et te servira par la suite :wink:

Eléphant du PHP | 388 Messages

28 mai 2010, 20:32

la seul chose en plus dans le script et la partie enregistrement utilisateur est ce que par hazard le script de renommage de photo est mal palcé je vais essayer de mettre des echo

ViPHP
ViPHP | 5462 Messages

28 mai 2010, 23:58

nul part dans ton POST y'a MDP ni MDPBIS, donc ta condition n'est pas verifié, ni la 2eme puisque POST n'est pas vide :wink:

Eléphant du PHP | 388 Messages

29 mai 2010, 08:20

je réitère mon post d'avant j'avais changé le résultat voici se que j'obtient

Code : Tout sélectionner

Array ( [departement] => 63-Puy-de-Dôme [NOMutilisateur] => azazz [MAILutilisateur] => [email protected] [mps] => a [mpsbis] => a [TELEPHONE] => [typeanannonce] => donne [categorie] => vehicules [souscategorie] => bricolage-jardin-chauffage [titreannocne] => aaa [descriptionannonce] => aaa [prix] => aa [region] => Auvergne [ok] => envoyer )
tout les champs sont bien renseigné

ViPHP
ViPHP | 5462 Messages

29 mai 2010, 15:52

non c'est pareil : t'as mis "mps" dans ton script c'est "MDP"

Eléphant du PHP | 388 Messages

30 mai 2010, 10:07

pffff le boulet :P que je suis j'ai bien MDP et MDPBIS toujours le meme probléme l'annonce se poste bien sans probléme l'utilisateur s'enregeristre mais la photo ne change pas de nom si la photo est déja présente :cry:

ViPHP
ViPHP | 5462 Messages

30 mai 2010, 17:16

pffff le boulet :P que je suis j'ai bien MDP et MDPBIS toujours le meme probléme l'annonce se poste bien sans probléme l'utilisateur s'enregeristre mais la photo ne change pas de nom si la photo est déja présente :cry:
pour ton histoire de doublon de photo, c'est pas comme ca qui faut si prendre, ta juste a nommer la photo comme le pseudo, et c'est réglé :wink:

ViPHP
ViPHP | 5462 Messages

11 juin 2010, 15:44

Essayes de remplacer la fonction initiale par celle-ci :
function Rename_fich($adresse_fichier)

    {
      //Si le fichier existe et est un fichier valide
      if (is_file($adresse_fichier))
              {
                  // Informations sur le fichier
                  $info = pathinfo($adresse_fichier);
                  $extension = $info['extension'];
                  $filename = basename($adresse_fichier);
                  $dossier = $info['dirname'];
 
                  // Cherche dans le nom de fichier des caractères numériques en fin de nom et si oui incrémente ce nombre grâce à la fonction anonyme create_function
                  $rename_filename = preg_replace_callback('#([0-9]+$)#', create_function('$matches','return $matches[1]+1;'), $filename);
                                 
                  $filename = $filename != $rename_filename ? $rename_filename : $filename.'1';
                                 
                  // Reconstruction du nom de fichier avec son extension (si elle existe)
                  $filename = !empty($extension) ? $filename.'.'.$extension : $filename;
                                 
                  // Reconstruction de l'adresse du fichier
                  $adresse = $dossier.'/'.$filename;
                                 
                  // Appel de la fonction pour re vérification avec le nouveau nom du fichier
                  return Rename_fich($adresse);
                                 
              }
                         
      // Retourne le chemin complet du fichier      
      else return $adresse_fichier;
    }
on peu éviter le récursif, si on a plein de fichier il a faire l'opération a chaque fois, on peu dans ce cas utiliser glob, pour allé cherche le fichier et ses incrémentations, on prendre la dernier incrémentation net on fait +1 :wink: