Problème double enregistrement

Mammouth du PHP | 985 Messages

05 avr. 2010, 16:16

Ceci devrait fonctionner, donc ton erreur est surement dans ton formulaire:
Vue que tu as tout mis dans le même script, il faut aussi que le formulaire contiennent bien toutes les données nécessaires pour fonctionner.
Donc regarde le formulaire que tu utilisais pour uploader l'image, il doit surement manquer quelque chose.

Ou alors, tu te trompes de fichier, essaye avec un fichier image qui fonctionnait auparavant.

Il arrive parfois, que Windows n'affiche pas les extensions connues, donc si tu renommes un fichier en mettant une extension, le fichier possédera deux extensions...
Pour t'en assurer, ouvre n'importe quel dossier, ensuite dans le menu en haut:
Outils -> Options des dossiers -> Affichage -> et décocher: Masquer les extensions dont le type est connu
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphant du PHP | 388 Messages

05 avr. 2010, 16:28

Ceci devrait fonctionner, donc ton erreur est surement dans ton formulaire:
Vue que tu as tout mis dans le même script, il faut aussi que le formulaire contiennent bien toutes les données nécessaires pour fonctionner.
Donc regarde le formulaire que tu utilisais pour uploader l'image, il doit surement manquer quelque chose.

Ou alors, tu te trompes de fichier, essaye avec un fichier image qui fonctionnait auparavant.

Il arrive parfois, que Windows n'affiche pas les extensions connues, donc si tu renommes un fichier en mettant une extension, le fichier possédera deux extensions...
Pour t'en assurer, ouvre n'importe quel dossier, ensuite dans le menu en haut:
Outils -> Options des dossiers -> Affichage -> et décocher: Masquer les extensions dont le type est connu
Je pence a quelques chose qui pourrait bloquer dans mon form
j'ai placer cela :
<form id="ok" method="post" action="php/validationannonce.php">
Faudrai pas que je place ceci a la place


<form id="ok" method="post" action="php/validationannonce.php"enctype="multipart/form-data">
Donc il y a de l'évolution mon problème est bien la maintenant j'obtient l'erreur

Code : Tout sélectionner

Warning: move_uploaded_file(Images/IMG_0024.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in /homez.316/logisdesq/www/php/validationannonce.php on line 127 Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phppxCrpn' to 'Images/IMG_0024.jpg' in /homez.316/logisdesq/www/php/validationannonce.php on line 127 Echec du transfert
Mon dossier images n'etait pas au bon endroit
Modifié en dernier par spidercrash le 05 avr. 2010, 16:38, modifié 2 fois.

Mammouth du PHP | 985 Messages

05 avr. 2010, 16:33

Continue a étudier les 2 formulaires, le nouveau et celui d'avant...

[EDIT]
Le script n'est plus au même endroit.
Donc il ne trouve plus le dossier Images.
Il faut donc renseigner le bon chemin dans ton script.
Donc remplacer le chemin qui est renseigné par la variable : $dossier
Modifié en dernier par Dr@ke le 05 avr. 2010, 16:38, modifié 1 fois.
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphant du PHP | 388 Messages

05 avr. 2010, 16:37

Bon c'est nickel sa marche le seul HIC :D c'est que si l'utilisateur existe déjà j'ai bien le message comme quoi l'user existe mais il transfert quand même l'image

Mammouth du PHP | 985 Messages

05 avr. 2010, 16:42

Le } ici:
        Parse("resultat","merci $MAILUTILISATEURS, vous etes a present enregistre et votre annonce est enregistré");
        }
Déplace juste ce } après juste ceci:
mysql_query("INSERT INTO images VALUES('','" . $nom . "', '" . $description. "', '" . $image . "')");
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphant du PHP | 388 Messages

05 avr. 2010, 16:54

cela ne change rien l'image s'uploade mais j'ai plus le message comme quoi l'image est transférer

Mammouth du PHP | 985 Messages

05 avr. 2010, 17:04

Et comme ceci?
<?php
// Fonction pour parser les variables vers FLASH
function Parse($variable,$valeur) {
echo "&" . $variable . "=" . utf8_encode($valeur);
}

//Fontion "decoder" (facultative)
function decoder($texte){
        $texte = utf8_decode($texte);
      /*$texte = stripslashes($texte);
        $texte = trim($texte);
        $texte = htmlentities($texte, ENT_QUOTES);
        $texte = strip_tags($texte);
        $texte = nl2br($texte);
        $texte = str_replace(">", ">", $texte);
        $texte = str_replace("<", "<", $texte);*/
        $texte = str_replace("%","%25",$texte);
        $texte = str_replace("!","%21",$texte);
        $texte = str_replace("\"","%22",$texte);
        $texte = str_replace("#","%23",$texte);
        $texte = str_replace("\$","%24",$texte);
        $texte = str_replace("&","%26",$texte);
        $texte = str_replace("'","%27",$texte);
        $texte = str_replace("(","%28",$texte);
        $texte = str_replace(")","%29",$texte);
        $texte = str_replace("*","%2A",$texte);
        $texte = str_replace("+","%2B",$texte);              
        $texte = str_replace("<","%3C",$texte);
        $texte = str_replace("=","%3D",$texte);
        $texte = str_replace(">","%3E",$texte);
        $texte = str_replace("?","%3F",$texte);        
        $texte = str_replace("[","%5B",$texte);
        $texte = str_replace("]","%5D",$texte);
        $texte = str_replace("^","%5E",$texte);          
        $texte = str_replace("`","%60",$texte);
        $texte = str_replace("{","%7B",$texte);
        $texte = str_replace("|","%7C",$texte);
        $texte = str_replace("}","%7D",$texte);
        $texte = str_replace("~","%7E",$texte);
        $texte = str_replace("¢","%A2",$texte);
        $texte = str_replace("£","%A3",$texte);
        $texte = str_replace("¥","%A5",$texte);
        $texte = str_replace("|","%A6",$texte);
        $texte = str_replace("§","%A7",$texte);
        $texte = str_replace("«","%AB",$texte);
        $texte = str_replace("¬","%AC",$texte);
        $texte = str_replace("¯","%AD",$texte);
        $texte = str_replace("º","%B0",$texte);
        $texte = str_replace("±","%B1",$texte);
        $texte = str_replace("ª","%B2",$texte);        
        $texte = str_replace("µ","%B5",$texte);
        $texte = str_replace("»","%BB",$texte);
        $texte = str_replace("¼","%BC",$texte);
        $texte = str_replace("½","%BD",$texte);
        $texte = str_replace("¿","%BF",$texte);
        return $texte;
}      

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

  // 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'];

$categorie = decoder($categorie);
$typeannonce = decoder($typeannonce);
$souscategorie = decoder($souscategorie);
$titreannonce = decoder($titreannonce);
$descriptionannonce = decoder($descriptionannonce);
$prix = decoder($prix);
$departement = decoder($departement);
$region = decoder($region);

$NOMUTILISATEURS = decoder($NOMUTILISATEURS);
$MAILUTILISATEURS = decoder($MAILUTILISATEURS);
$MDP = decoder($MDP);
$TELEPHONE = decoder($TELEPHONE);

$dossier = 'Images/';
$maxsize = '1048576';
$maxwidth = '2000';
$maxheight = '2000';
                                                                                                                                        //ici on commence avec les requêtes MySQL pour vérifier dans la table

include ('connect.php');//ici on inclut le fichier avec l'accès MySQL.
$crypt=md5($MDP);

$sql = "SELECT * FROM utilisateurs WHERE MAILUTILISATEURS = '$MAILUTILISATEURS'";//On sélectionne dans la table "UTILISATEUR" le login qui a pour valeur la variable "$login"
    $req = mysql_query($sql)or die(mysql_error());  
    $result = mysql_numrows($req);// on compte le nombre de résultats

    if($result!=0)  // le login existe déjà
        {
        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  
        {
        
       if ($_FILES['icone']['error'] > 0)
        {
                echo 'Erreur lors du transfert';
        }
        else
        {
                if ($_FILES['icone']['size'] > $maxsize)
                {
                        echo 'Le fichier est trop gros';
                }
                else
                {
                        $extensions_valides = array('jpg','jpeg','gif','png');
                        $extension_upload = strtolower(  substr(  strrchr($_FILES['icone']['name'], '.'),1));
                       
                        if (in_array($extension_upload,$extensions_valides))
                        {
                                $image_sizes = getimagesize($_FILES['icone']['tmp_name']);
                               
                                if (!$image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight)
                                {
                                        echo 'Image trop grande';
                                }
                                elseif (file_exists($dossier . $_FILES['icone']['name']))
                                {
                                       echo 'Le nom de votre photo éxiste déjà merci de la renommer';
                                }
                                else
                                {
                                        $nom = "{$_FILES['icone']['name']}";
                                        $resultat = move_uploaded_file($_FILES['icone']['tmp_name'],$dossier.$nom);     if ($resultat) {
                                                echo 'Transfert réussi';
                                               
        $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 = mysql_real_escape_string($nom);
                        $image = $dossier.$nom;
                        $description = mysql_real_escape_string($_POST['description']);
                                               
                        mysql_query("INSERT INTO images VALUES('','" . $nom . "', '" . $description. "', '" . $image . "')");

        Parse("resultat","merci $MAILUTILISATEURS, vous etes a present enregistre et votre annonce est enregistré");

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

?>
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphant du PHP | 388 Messages

05 avr. 2010, 17:11

Merci de ton aide
Oui cela fonctionne qu'as tu modifier exactement stp pour pas que je retrouve le même problème

Mammouth du PHP | 985 Messages

05 avr. 2010, 17:11

Attend , reprend la dernière version, j'ai modifié un petit truc :wink:

Sinon, y avait pas mal de choses à faire, c'est pour cela que je me suis permis de le faire.
Compare et essaye de comprendre les changements, ce sont juste des déplacements de codes en gros :)
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphant du PHP | 388 Messages

05 avr. 2010, 17:24

Attend , reprend la dernière version, j'ai modifié un petit truc :wink:

Sinon, y avait pas mal de choses à faire, c'est pour cela que je me suis permis de le faire.
Compare et essaye de comprendre les changements, ce sont juste des déplacements de codes en gros :)
Oui je viens d'imprimer et je compare car je vais devoir le refaire quand l'utilisateur est connecté pour qu'il puisse ajouter une annonces.
Sinon la partir decoder je souhaite l'enlever y a pas de problème ?

sa me donnera cela non : ?
<?php
// Fonction pour parser les variables vers FLASH
function Parse($variable,$valeur) {
echo "&" . $variable . "=" . utf8_encode($valeur);
}



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

  // 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'];

$dossier = 'Images/';
$maxsize = '1048576';
$maxwidth = '2000';
$maxheight = '2000';
//ici on commence avec les requêtes MySQL pour vérifier dans la table

include ('connect.php');//ici on inclut le fichier avec l'accès MySQL.
$crypt=md5($MDP);

$sql = "SELECT * FROM utilisateurs WHERE MAILUTILISATEURS = '$MAILUTILISATEURS'";//On sélectionne dans la table "UTILISATEUR" le login qui a pour valeur la variable "$login"
    $req = mysql_query($sql)or die(mysql_error());  
    $result = mysql_numrows($req);// on compte le nombre de résultats

    if($result!=0)  // le login existe déjà
        {
        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  
        {
               
        $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());                        
                       
        Parse("resultat","merci $MAILUTILISATEURS, vous etes a present enregistre et votre annonce est enregistré");
       
       if ($_FILES['icone']['error'] > 0)
        {
                echo 'Erreur lors du transfert';
        }
        else
        {
                if ($_FILES['icone']['size'] > $maxsize)
                {
                        echo 'Le fichier est trop gros';
                }
                else
                {
                        $extensions_valides = array('jpg','jpeg','gif','png');
                        $extension_upload = strtolower(  substr(  strrchr($_FILES['icone']['name'], '.'),1));
                       
                        if (in_array($extension_upload,$extensions_valides))
                        {
                                $image_sizes = getimagesize($_FILES['icone']['tmp_name']);
                               
                                if (!$image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight)
                                {
                                        echo 'Image trop grande';
                                }
                                elseif (file_exists($dossier . $_FILES['icone']['name']))
                                {
                                       echo 'Le nom de votre photo éxiste déjà merci de la renommer';
                                }
                                else
                                {
                                        $nom = "{$_FILES['icone']['name']}";
                                        $resultat = move_uploaded_file($_FILES['icone']['tmp_name'],$dossier.$nom);     if ($resultat) {
                                                echo 'Transfert réussi';
                                               
                                               
                                                $nom = mysql_real_escape_string($nom);
                        $image = $dossier.$nom;
                        $description = mysql_real_escape_string($_POST['description']);
                                               
                        mysql_query("INSERT INTO images VALUES('','" . $nom . "', '" . $description. "', '" . $image . "')");

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

?>

Mammouth du PHP | 985 Messages

05 avr. 2010, 17:27

En effet :wink:

Il y a des chances que tu n'ai pas besoin non plus de ta fonction Parse.

A toi de tester suivant la configuration de ton site...

[EDIT]
En fait non, cela donnera ceci:
<?php
// Fonction pour parser les variables vers FLASH
function Parse($variable,$valeur) {
echo "&" . $variable . "=" . utf8_encode($valeur);
}

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

  // 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'];

$dossier = 'Images/';
$maxsize = '1048576';
$maxwidth = '2000';
$maxheight = '2000';
                                                                                                                                        //ici on commence avec les requêtes MySQL pour vérifier dans la table

include ('connect.php');//ici on inclut le fichier avec l'accès MySQL.
$crypt=md5($MDP);

$sql = "SELECT * FROM utilisateurs WHERE MAILUTILISATEURS = '$MAILUTILISATEURS'";//On sélectionne dans la table "UTILISATEUR" le login qui a pour valeur la variable "$login"
    $req = mysql_query($sql)or die(mysql_error());  
    $result = mysql_numrows($req);// on compte le nombre de résultats

    if($result!=0)  // le login existe déjà
        {
        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  
        {
       
       if ($_FILES['icone']['error'] > 0)
        {
                echo 'Erreur lors du transfert';
        }
        else
        {
                if ($_FILES['icone']['size'] > $maxsize)
                {
                        echo 'Le fichier est trop gros';
                }
                else
                {
                        $extensions_valides = array('jpg','jpeg','gif','png');
                        $extension_upload = strtolower(  substr(  strrchr($_FILES['icone']['name'], '.'),1));
                       
                        if (in_array($extension_upload,$extensions_valides))
                        {
                                $image_sizes = getimagesize($_FILES['icone']['tmp_name']);
                               
                                if (!$image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight)
                                {
                                        echo 'Image trop grande';
                                }
                                elseif (file_exists($dossier . $_FILES['icone']['name']))
                                {
                                       echo 'Le nom de votre photo éxiste déjà merci de la renommer';
                                }
                                else
                                {
                                        $nom = "{$_FILES['icone']['name']}";
                                        $resultat = move_uploaded_file($_FILES['icone']['tmp_name'],$dossier.$nom);     if ($resultat) {
                                                echo 'Transfert réussi';
                                               
        $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 = mysql_real_escape_string($nom);
                        $image = $dossier.$nom;
                        $description = mysql_real_escape_string($_POST['description']);
                                               
                        mysql_query("INSERT INTO images VALUES('','" . $nom . "', '" . $description. "', '" . $image . "')");

        Parse("resultat","merci $MAILUTILISATEURS, vous etes a present enregistre et votre annonce est enregistré");

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

?>
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Mammouth du PHP | 985 Messages

05 avr. 2010, 17:36

Prend bien le script ci-dessus, car tu n'avais pas pris les dernières modifications.

Sinon, j'ai juste déplacé quelques bouts de codes, donc ton code reste pas clair du tout, il est préférable de le formater différemment pour qu'il soit plus simple a lire.
De plus il y a pleins de petites choses a améliorer, mais tu t'en doutes et ce n'était pas le sujet de ton Topic.
J'ai essayé de respecter au maximum ton code initial.

Donc je te conseille, de l'améliorer, l'éclaircir, le simplifier avec le temps... :)
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphant du PHP | 388 Messages

05 avr. 2010, 17:40

Oui effectivement cela marche aussi très bien.

Merci pour tout en faite fallait alléger le code et le déplacer ou il le fallait :D

Mammouth du PHP | 985 Messages

05 avr. 2010, 17:44

Voilà c'est juste une logique de if, elseif et else :wink:
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphant du PHP | 388 Messages

05 avr. 2010, 17:50

et en plus en supprimant la fonction décode les caractère spéciaux passent mais c'est formidable :P
Encore merci pour ton aide et ta patience