Le rename() ne marche pas !

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Le rename() ne marche pas !

Re: Le rename() ne marche pas !

par Titiii » 14 mai 2011, 09:42

Ok merci beaucoup ! :)

Re: Le rename() ne marche pas !

par moogli » 08 mai 2011, 17:43

Le message est clair ta requete contient un champ qui n'existe pas dans la table (defaut_1)

Affiche aussi la requete afin que tu puisse t'en rendre compte ;)

@+

Re: Le rename() ne marche pas !

par Titiii » 08 mai 2011, 11:10

Petit up... Qu'est ce que je fais avec cette erreur svp ? :)

Re: Le rename() ne marche pas !

par Titiii » 21 avr. 2011, 18:42

Bonsoir !
Voici l'erreur produite par le code :
Unknown column 'defaut_1' in 'field list'
Merci encore de votre aide ! :)

Re: Le rename() ne marche pas !

par Titiii » 15 avr. 2011, 22:39

Bonsoir,

Je vais mettre un mysq_error(), mais je n'ai pas très bien compris après... Comment ça une suite logique de if ?

Merci encore :)

Re: Le rename() ne marche pas !

par moogli » 14 avr. 2011, 21:34

donc a priori ta requete SQL est foireuse, dans le else utilise mysql_error() pour l'afficher afin de voir de quoi il retourne.

Pour info ta façon de gérer la chose est peu pratique et lourde a comprendre et debogguer (la preuve tu n'y arrive pas ;) ).

je te conseil de t'orienter vers une suite logique de if / else permettant de ne laisser aucune possibilité sur ce que tu souhaite ;)


@+

Re: Le rename() ne marche pas !

par Titiii » 14 avr. 2011, 18:53

Bonjour !
Désolé pour la balise PHP, je n'avais pas fait attention.

Donc, j'ai fais comme tu me l'a conseillé.
C'est pourquoi j'ai remarqué l'erreur... Mais pas réussi à la corriger... T.T
Alors, $ok affiche 1. J'ai aussi l'erreur de la requête 4.
Mais j'ai vérifié dans le ftp, le fichier n'est pas renommé en "defaut_ID" !!!
Je n'y comprends plus rien !

Voici le code avec les code d'erreur que j'ai inséré :
<?php
						if (isset($_GET['nom']))
						{	
							$nom = strip_tags($_GET['nom']); 
							include('connexion_bdd.php');
							$retour = mysql_query("SELECT * FROM uploads WHERE fichier = '".$nom."' ");
							$FICHIER = mysql_fetch_array($retour);
							$ok = 0;
		
							if (!empty($FICHIER))
							{
								$retour2 = mysql_query("SELECT * FROM membres WHERE pseudo = '".$FICHIER['membre']."' ") OR DIE(mysql_error());
								$MEMBRE = mysql_fetch_array($retour2);
							
								?><h2>Changer l'avatar de <?php echo $FICHIER['membre'] ?></h2><?php
								
									//Détermination des noms/emplacements
								$nom_Ancien_Fichier = 'defaut_' . $MEMBRE['id'];
								$emplacement_Ancien_Fichier = 'uploads/' . $nom_Ancien_Fichier;
								$nom_Nouveau_Fichier = uniqid(sha1(mt_rand())) . '.jpeg';
								$emplacement_Nouveau_Fichier = 'uploads/' . $nom_Nouveau_Fichier;
							
									//Si le fichier 'defaut_' existe :
								if (file_exists($emplacement_Ancien_Fichier))
								{
										//Renomage du fichier dans le ftp
									if (rename($emplacement_Ancien_Fichier, $emplacement_Nouveau_Fichier))
									{	$ok++;	}
									else	{	echo 'Erreur1<br />';	}
										//Renomage du fichier dans la base de donnée
									if (mysql_query("UPDATE uploads SET fichier = $nom_Nouveau_Fichier WHERE fichier = $nom_Ancien_Fichier "))
									{	$ok++;	}
									else	{	echo 'Erreur2<br />';	}
								}
							
									//Noms
								$nouveau_Nom = 'defaut_' . $MEMBRE['id'];
								$emplacement_Nouveau_Nom = 'uploads/' . $nouveau_Nom;
								$emplacement_Vieux_Fichier = 'uploads/' . $nom;
					
									//Renomage du fichier dans le ftp
								if (rename($emplacement_Vieux_Fichier, $emplacement_Nouveau_Nom))
								{	$ok++;	}
								else	{	echo 'Erreur3<br />';	}
							
									//Renomage du fichier dans la base de donnée
								if (mysql_query("UPDATE uploads SET fichier = $nouveau_Nom WHERE membre = '".$MEMBRE['pseudo']."' "))
								{ $ok++;	}
								else	{	echo 'Erreur4<br />';	}
								
									//Incrémentation de la variable du nombre de changements
								$MEMBRE['nbr_modif']++;
								mysql_query("UPDATE membres SET nbr_modif = '".$MEMBRE['nbr_modif']."' WHERE id = '".$MEMBRE['id']."' ");
								
								if ($ok == 4 || $ok == 2)
								{
									echo "L'avatar par défaut de " . $FICHIER['membre'] . " a bien été changé. <br /> Clique <a href='index.php' alt='Index'>ici</a> pour revenir à l'index.<br />";
								}
								else
								{	echo $ok;
									echo "<br />L'avatar par défaut de " . $FICHIER['membre'] . " n'a pas pu être changé. <br />Si le problème persiste, merci de contacter le webmaster.<br />";
								}
							}
							else
							{
								echo "Désolé, mais le fichier envoyé est introuvable.<br />Merci de réessayer.<br /> Clique <a href='index.php' alt='Index'>ici</a> pour revenir à l'index.<br />";
							}
						}
						else
						{
							echo "Désolé, mais aucun fichier n'a été pris en compte.<br />Merci de réessayer.<br /> Clique <a href='index.php' alt='Index'>ici</a> pour revenir à l'index.<br />";
						}
					?>
Donc ce qui est affiché :
Erreur4
1
L'avatar par défaut de Titii n'a pas pu être changé.
Voici l'erreur 4 :
//Renomage du fichier dans la base de donnée
								if (mysql_query("UPDATE uploads SET fichier = $nouveau_Nom WHERE membre = '".$MEMBRE['pseudo']."' "))
								{ $ok++;	}
								else	{	echo 'Erreur4<br />';	}
Et la focntion rename(), qui "marche" mais qui ne renomme pas... >.<
//Renomage du fichier dans le ftp
								if (rename($emplacement_Vieux_Fichier, $emplacement_Nouveau_Nom))
								{	$ok++;	}
								else	{	echo 'Erreur3<br />';	}
Merci bien de votre aide !

Re: Le rename() ne marche pas !

par zeus » 13 avr. 2011, 23:41

Modération :
Afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [php] (plus lisible que la balise [code]).

De plus, merci de ne pas t'impatienter. Nous sommes des bénévoles, nous répondons selon nos disponibilité

Re: Le rename() ne marche pas !

par moogli » 13 avr. 2011, 20:22

a tu essayé de debuguer ?
a tu afficher $ok pour savoir qu'elle valeur il a ?
a tu ajouter des else aux if pour afficher des message d'erreur histoire de voir où ça cloche ?

Bref que sais tu du "dysfonctionnement" a part ce que ça écrit (qui n'est pas significatif pour déboguer vu le nombre de source possible) ?

PS : essai d'utiliser les balises php ce sera plus lisible ;)


@+

Re: Le rename() ne marche pas !

par Titiii » 13 avr. 2011, 18:41

Ben en fait, j'avais tout refait le script, en essayant d'être le plus clair possible, et surtout le plus simple.
En fait, ce qui ne marche pas, c'est que les fichiers ne sont pas renommés, du coup, les images de la galeries de s'affichent pas.

L'erreur affichée est bien "L'avatar par défaut de [...] n'a pas pu être changé".

Le seul problème, c'est que je ne vois pas du tout là où ça cloche !
Merci encore d'avance pour votre aide ! :)

PS : voici le code, quand même ^^ :
<?php
						if (isset($_GET['nom']))
						{	
							$nom = strip_tags($_GET['nom']); 
							include('connexion_bdd.php');
							$retour = mysql_query("SELECT * FROM uploads WHERE fichier = '".$nom."' ");
							$FICHIER = mysql_fetch_array($retour);
							$ok = 0;
		
							if (!empty($FICHIER))
							{
								$retour2 = mysql_query("SELECT * FROM membres WHERE pseudo = '".$FICHIER['membre']."' ") OR DIE(mysql_error());
								$MEMBRE = mysql_fetch_array($retour2);
							
								?><h2>Changer l'avatar de <?php echo $FICHIER['membre'] ?></h2><?php
								
									//Détermination des noms/emplacements
								$nom_Ancien_Fichier = 'defaut_' . $MEMBRE['id'];
								$emplacement_Ancien_Fichier = 'uploads/' . $nom_Ancien_Fichier;
								$nom_Nouveau_Fichier = uniqid(sha1(mt_rand())) . '.jpeg';
								$emplacement_Nouveau_Fichier = 'uploads/' . $nom_Nouveau_Fichier;
							
									//Si le fichier 'defaut_' existe :
								if (file_exists($emplacement_Ancien_Fichier))
								{
										//Renomage du fichier dans le ftp
									if (rename($emplacement_Ancien_Fichier, $emplacement_Nouveau_Fichier))
									{	$ok++;	}
										//Renomage du fichier dans la base de donnée
									if (mysql_query("UPDATE uploads SET fichier = $nom_Nouveau_Fichier WHERE fichier = $nom_Ancien_Fichier "))
									{	$ok++;	}
								}
							
									//Noms
								$nouveau_Nom = 'defaut_' . $MEMBRE['id'];
								$emplacement_Nouveau_Nom = 'uploads/' . $nouveau_Nom;
								$emplacement_Vieux_Fichier = 'uploads/' . $nom;
					
									//Renomage du fichier dans le ftp
								if (rename($emplacement_Vieux_Fichier, $emplacement_Nouveau_Nom))
								{	$ok++;	}
							
									//Renomage du fichier dans la base de donnée
								if (mysql_query("UPDATE uploads SET fichier = $nouveau_Nom WHERE fichier = $nom "))
								{ $ok++;	}
								
									//Incrémentation de la variable du nombre de changements
								$MEMBRE['nbr_modif']++;
								mysql_query("UPDATE membres SET nbr_modif = '".$MEMBRE['nbr_modif']."' WHERE id = '".$MEMBRE['id']."' ");
								
								if ($ok == 4)
								{
									echo "L'avatar par défaut de " . $FICHIER['membre'] . " a bien été changé. <br /> Clique <a href='index.php' alt='Index'>ici</a> pour revenir à l'index.<br />";
								}
								else
								{
									echo "L'avatar par défaut de " . $FICHIER['membre'] . " n'a pas pu être changé. <br />Si le problème persiste, merci de contacter le webmaster.<br />";
								}
							}
							else
							{
								echo "Désolé, mais le fichier envoyé est introuvable.<br />Merci de réessayer.<br /> Clique <a href='index.php' alt='Index'>ici</a> pour revenir à l'index.<br />";
							}
						}
						else
						{
							echo "Désolé, mais aucun fichier n'a été pris en compte.<br />Merci de réessayer.<br /> Clique <a href='index.php' alt='Index'>ici</a> pour revenir à l'index.<br />";
						}
					?>

Re: Le rename() ne marche pas !

par moogli » 13 avr. 2011, 18:10

- qu'a tu fait depuis la dernière fois ?

j'ai corrigé les requêtes SQL qui ne sont pas syntaxiquement correcte.
A tu testé les bouts de code un a un ?
@+
<?php
if (isset($_GET['nom']))
                  {   $nom = strip_tags($_GET['nom']); }
                  include('connexion_bdd.php');
                  $retour = mysql_query("SELECT * FROM uploads WHERE fichier = '".$nom."' ");
                  $donnee = mysql_fetch_array($retour);
                  
                  if (!empty($donnee))
                  {
                     $retour2 = mysql_query("SELECT pseudo, id, avatar, ext_avatar FROM membres WHERE pseudo = '".$donnee['membre']."' ");
                     $donnee2 = mysql_fetch_array($retour2);
                     $chemin = '/uploads/' . $donnee2['avatar'];
                     $chemin2 = '/uploads/' . $nom;
                     $fichier = 'defaut_' . $donnee2['id'];
                     if (file_exists($chemin))
                     {
                        $nvNom = uniqid(sha1(mt_rand())) . '.' . $donnee2['ext_avatar'];
                        rename("/uploads/'".$donnee2['avatar']."', /uploads/'".$nvNom."' ");
                        mysql_query("UPDATE uploads SET fichier = '".$nvNom."', extension = '".$donnee2['ext_avatar']."' WHERE fichier = '".$fichier."' ");
                     }
                     if (file_exists($chemin2))
                     {
                        rename("/uploads/'".$nom."', /uploads/'".$fichier."' ");
                        mysql_query("UPDATE membres SET avatar = '".$fichier."', ext_avatar = '".$donnee['extention']."' WHERE id = '".$donnee2['id']."' ");
                        echo '<h2>Changer l\'avatar de ';
                        echo $donnee['membre'];
                        echo ' </h2>
                        htmlspcialcharseouoe ();
                        

Le changement � bien �t� effectu�.
Clique ';
                        ?>
                        <a href="galerie.php?id=<?php echo $donnee2['id']; ?>" alt="Galerie">ici</a> pour retourner � sa galerie.
                        <?php
                     }
                     else
                     {
                        echo '<h2>Changer l\'avatar de ';
                        echo $donnee['membre'];
                        echo '
';
                        echo $nom;
                        echo '</h2>

D�sol�, mais le changement est impossible.
<a href="index.php" alt="Index">Retourner � l\'index.
</a>';
                     }
                  }
                  else
                  {
                     echo '<h2>Changer un avatar</h2> ';
                     echo '

D�sol�, mais le fichier est introuvable.
<a href="index.php" alt="Index">Retourner � l\'index.
</a>';
                  }
               ?>

Re: Le rename() ne marche pas !

par Titiii » 13 avr. 2011, 16:38

Bonjour !
Je renouvelle ma demande d'aide... :)
Merci d'avance :)

Re: Problème de script...

par Titiii » 11 avr. 2011, 17:25

Help svp ! :)

Re: Problème de script...

par Titiii » 10 avr. 2011, 18:49

Bonjour à tous !
Le rename ne fonctionne pas...
Le but est de changer le nom d'un fichier, et de nommer un autre fichier (celui sélectionné avec la variable 'nom' en locurence).
Ce qui est affiché est : "L'avatar par défaut de " . $FICHIER['membre'] . " n'a pas pu être changé."
Les variables récupérées sont correctes, et les fichiers existent bel et bien dans le dossier.
Merci d'avance pour votre aide.
<?php
						if (isset($_GET['nom']))
						{	
							$nom = strip_tags($_GET['nom']); 
							include('connexion_bdd.php');
							$retour = mysql_query("SELECT * FROM uploads WHERE fichier = '".$nom."' ");
							$FICHIER = mysql_fetch_array($retour);
							$ok = 0;
		
							if (!empty($FICHIER))
							{
								$retour2 = mysql_query("SELECT * FROM membres WHERE pseudo = '".$FICHIER['membre']."' ") OR DIE(mysql_error());
								$MEMBRE = mysql_fetch_array($retour2);
							
								?><h2>Changer l'avatar de <?php echo $FICHIER['membre'] ?></h2><?php
								
									//Détermination des noms/emplacements
								$nom_Ancien_Fichier = 'defaut_' . $MEMBRE['id'];
								$emplacement_Ancien_Fichier = 'uploads/' . $nom_Ancien_Fichier;
								$nom_Nouveau_Fichier = uniqid(sha1(mt_rand())) . '.jpeg';
								$emplacement_Nouveau_Fichier = 'uploads/' . $nom_Nouveau_Fichier;
							
									//Si le fichier 'defaut_' existe :
								if (file_exists($emplacement_Ancien_Fichier))
								{
										//Renomage du fichier dans le ftp
									if (rename($emplacement_Ancien_Fichier, $emplacement_Nouveau_Fichier))
									{	$ok++;	}
										//Renomage du fichier dans la base de donnée
									if (mysql_query("UPDATE uploads SET fichier = $nom_Nouveau_Fichier WHERE fichier = $nom_Ancien_Fichier "))
									{	$ok++;	}
								}
							
									//Noms
								$nouveau_Nom = 'defaut_' . $MEMBRE['id'];
								$emplacement_Nouveau_Nom = 'uploads/' . $nouveau_Nom;
								$emplacement_Vieux_Fichier = 'uploads/' . $nom;
					
									//Renomage du fichier dans le ftp
								if (rename($emplacement_Vieux_Fichier, $emplacement_Nouveau_Nom))
								{	$ok++;	}
							
									//Renomage du fichier dans la base de donnée
								if (mysql_query("UPDATE uploads SET fichier = $nouveau_Nom WHERE fichier = $nom "))
								{ $ok++;	}
								
									//Incrémentation de la variable du nombre de changements
								$MEMBRE['nbr_modif']++;
								mysql_query("UPDATE membres SET nbr_modif = '".$MEMBRE['nbr_modif']."' WHERE id = '".$MEMBRE['id']."' ");
								
								if ($ok == 4)
								{
									echo "L'avatar par défaut de " . $FICHIER['membre'] . " a bien été changé. <br /> Clique <a href='index.php' alt='Index'>ici</a> pour revenir à l'index.<br />";
								}
								else
								{
									echo "L'avatar par défaut de " . $FICHIER['membre'] . " n'a pas pu être changé. <br />Si le problème persiste, merci de contacter le webmaster.<br />";
								}
							}
							else
							{
								echo "Désolé, mais le fichier envoyé est introuvable.<br />Merci de réessayer.<br /> Clique <a href='index.php' alt='Index'>ici</a> pour revenir à l'index.<br />";
							}
						}
						else
						{
							echo "Désolé, mais aucun fichier n'a été pris en compte.<br />Merci de réessayer.<br /> Clique <a href='index.php' alt='Index'>ici</a> pour revenir à l'index.<br />";
						}
					?>

Re: Problème de script...

par Titi29 » 10 avr. 2011, 18:33

Bonjour !
Désolé pour avoir mis temps de tant ( :mrgreen: ) pour répondre.
Alors j'ai essayé de tout modifier pour essayer de faire fonctionner ce script, mais sans succès.
Déjà, j'ai réglé le problème de la redimension :)

Alors, voici le code :
<?php
						if (isset($_GET['nom']))
						{	
							$nom = strip_tags($_GET['nom']); 
							include('connexion_bdd.php');
							$retour = mysql_query("SELECT * FROM uploads WHERE fichier = '".$nom."' ");
							$FICHIER = mysql_fetch_array($retour);
		
							if (!empty($FICHIER))
							{
								$retour2 = mysql_query("SELECT * FROM membres WHERE pseudo = '".$FICHIER['membre']."' ") OR DIE(mysql_error());
								$MEMBRE = mysql_fetch_array($retour2);
							
								?><h2>Changer l'avatar de <?php echo $FICHIER['membre'] ?></h2><?php
								
									//Détermination des noms/emplacements
								$nom_Ancien_Fichier = 'defaut_' . $MEMBRE['id'];
								$emplacement_Ancien_Fichier = 'uploads/' . $nom_Ancien_Fichier;
								$nom_Nouveau_Fichier = uniqid(sha1(mt_rand())) . '.jpeg';
								$emplacement_Nouveau_Fichier = '/uploads' . $nom_Nouveau_Fichier;
							
									//Si le fichier 'defaut_' existe :
								if (file_exists($emplacement_Ancien_Fichier))
								{
										//Renomage du fichier dans le ftp
									rename($emplacement_Ancien_Fichier, $emplacement_Nouveau_Fichier);
										//Renomage du fichier dans la base de donnée
									mysql_query("UPDATE uploads SET fichier = $nom_Nouveau_Fichier WHERE fichier = $nom_Ancien_Fichier ");
								}
							
									//Noms
								$nouveau_Nom = 'defaut_' . $MEMBRE['id'];
								$emplacement_Nouveau_Nom = 'uploads/' . $nouveau_Nom;
								$emplacement_Ancien_Fichier = 'uploads/' . $nom;
					
									//Renomage du fichier dans le ftp
								rename($emplacement_Ancien_Fichier, $emplacement_Nouveau_Nom);
							
									//Renomage du fichier dans la base de donnée
								mysql_query("UPDATE uploads SET fichier = $nouveau_Nom WHERE fichier = $nom ");
								
									//Incrémentation de la variable du nombre de changements
								$incrementation = $MEMBRE['nbr_modif'] + 1;
								mysql_query("UPDATE membres SET nbr_modif = $incrementation WHERE id = '".$MEMBRE['id']."' ");
					
								echo "L'avatar par défaut de " . $FICHIER['membre'] . " a bien été changé. <br /> Clique <a href='index.php' alt='Index'>ici</a> pour revenir à l'index.<br />";
							}
							else
							{
								echo "Désolé, mais le fichier envoyé est introuvable.<br />Merci de réessayer.<br /> Clique <a href='index.php' alt='Index'>ici</a> pour revenir à l'index.<br />";
							}
						}
						else
						{
							echo "Désolé, mais aucun fichier n'a été pris en compte.<br />Merci de réessayer.<br /> Clique <a href='index.php' alt='Index'>ici</a> pour revenir à l'index.<br />";
						}
					?>
Ce qui marche pas : aucun fichier n'est renommé, aussi bien dans le ftp que dans la base de donnée.
Les images n'apparaissent toujours pas dans la galerie une fois qu'on a cliqué dessus...

Merci d'avance pour votre aide ! :)