update...

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 : update...

Re: update...

par graffx » 12 nov. 2009, 19:00

Personne n' aurait une idée?

Pourtant dans ma bdd, le nom de la photo est bien pris en compte, mais elle n' est apparement pas envoyé dans le dossier sur le serveur, contrairement au trois premieres:!

Re: update...

par graffx » 12 nov. 2009, 16:17

Je test ta formule dans quelques minutes.


Je suis depuis que je suis rentré du boulot sur un bug que je ne comprend vraiment pas, dans le sens ou j' utilise indetiquement 4 fois le meme code avec 4 noms de fichiers differents.


Pour uploader les 3 premieres photos, elles arrivent bien sur le serveur, peu importe le nom ou la photo pour la quatrieme, elle n' arrive pas sur le serveur. Je vais devenir fou parce que j' utilise le meme code pour les trois premieres photos, seulement au lieu de photo1 photo2 et photo3 j' ai juste mis photo4.

Donc voila, si vous boyez le bug, moi je vais peter un boulon :mrgreen:

En attendant je test ta formule et je te dis!


 <?php


$fichier4 = time()."_".$_FILES['photo4']['name'];
$taille_maxi4 = 500000;
$taille4 = filesize($_FILES['photo4']['tmp_name']);
$extensions4 = array('.png', '.gif', '.jpg', '.jpeg');
$extension4 = strrchr($_FILES['photo4']['name'], '.'); 
//Début des vérifications de sécurité...
if(!in_array($extension4, $extensions4)) //Si l'extension n'est pas dans le tableau
{
     $erreur4 = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg...<br><br> Taille de la photo maxi : 500 Ko';
}
if($taille4>$taille_maxi4)
{
     $erreur4 = 'Le fichier est trop gros...';
}
if(!isset($erreur4)) //S'il n'y a pas d'erreur, on upload
{
     //On formate le nom du fichier ici...
     $fichier4 = strtr($fichier4, 
          'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
          'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
     $fichier4 = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier4);
	 }
     move_uploaded_file($_FILES['photo4']['tmp_name'], $dossier . $fichier4) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
	 ?>

edit: $dossier est declaré plus haut

Re: update...

par stopher » 11 nov. 2009, 21:31

POST / GET peu importe , les deux sont altérables facilement ...

POST est certes un peu plus discret :-)

Là ou il faut faire , attention , c'est d'échapper ces variables globales , ne pas les insérer brutes dans ta requête , car là oui tu risques une injection sql .

Utiliser un simple mysql_real_escape_string() , résout ce problème .

Essayes donc ceci pour débugger :
$sql = "UPDATE annonces SET cat='" . $cat . "', type='" . $type . "', titre='" . $titre . "', annonce='" . $annonce . "', telephone='" . $telephone . "', prix='" . $prix . "', photo1='" . $fichier . "', photo2='" . $fichier2 . "', photo3='" . $fichier3 . "', photo4='" . $fichier4 . "' WHERE id='" . mysql_real_escape_string($id) . "'";

//affiche la requete à executer
echo $sql;

 mysql_query($sql)or die(mysql_error());
Donne nous la sortie , pour voir comment est construite ta requête ...
S'il y a un probléme , il sera tout de suite localisé .

Ch.

Re: update...

par graffx » 11 nov. 2009, 21:26

Ne t inquiete pas j' etudie toutes vos propositions :)
			<form method="post" action="annonces_up.php" enctype="multipart/form-data">

                        <div align="center">
                          <p> <br />
                          Categorie actuelle : <b><?php echo $annonce['cat']; ?></b></p>
                          <p>
                            <select name="cat" size="1">
                              <option disabled="disabled" selected="selected">>--choisissez une cat&eacute;gorie--<</option>
                              <option style='background-color:#CCFFFF' disabled="disabled">VEHICULES</option>
                              <option value="Vehicules Automobiles">Automobiles</option>
                              <option value="Vehicules Motos">Motos</option>
                              <option value="Vehicules camping">Camping</option>
                              <option value="Vehicules Utilitaires">Utilitaires</option>
                              <option value="Vehicules Equipements">Equipements</option>
                              <option value="Vehicules Tuning">Tuning</option>
                              <option value="Vehicules Casse pieces">Casse/pieces</option>
                              <option value="Vehicules Autres">Autres</option>
                              <option style='background-color:#CCFFFF' disabled="disabled">IMMOBILIER</option>
                              <option value="Immobilier Acheter">Acheter</option>
                              <option value="Immobilier Vendre">Vendre</option>
                              <option value="Immobilier Louer">Louer</option>
                              <option value="Immobilier Co louer">Co-louer</option>
                              <option value="Immobilier Locations Vacances">Locations-vacances</option>
                              <option value="Immobilier Bureaux commerces">Bureaux & commerces</option>
                              <option value="Immobilier Autres">Autres</option>
                              <option style='background-color:#CCFFFF' disabled="disabled">HI-TECH</option>
                              <option value="Hi-tech Consoles  jeux">Consoles & jeux</option>
                              <option value="Hi-tech Informatique">Informatique</option>
                              <option value="Hi-tech Image son">Image & son</option>
                              <option value="Hi-tech Telephonie">T&eacute;l&eacute;phonie</option>
                              <option value="Hi-tech Autres">Autres</option>
                              <option style='background-color:#CCFFFF' disabled="disabled">MAISON & JARDIN</option>
                              <option value="Maison jardin Ameublement">Ameublement</option>
                              <option value="Maison jardin Electromenager">El&eacute;ctrom&eacute;nager</option>
                              <option value="Maison jardin Decoration">D&eacute;coration</option>
                              <option value="Maison jardin Bricolage & jardin">Bricolage & jardinage</option>
                              <option value="Maison jardin Vetements">V&ecirc;tements</option>
                              <option value="Maison jardin Montres & bijoux">Montres & bijoux</option>
                              <option value="Maison jardin Tout pour bebe">Tout pour B&eacute;b&eacute;</option>
                              <option value="Maison jardin Autres">Autres</option>
                              <option style='background-color:#CCFFFF' disabled="disabled">LOISIRS</option>
                              <option value="Loisirs DVD films">DVD & films</option>
                              <option value="Loisirs CD musique">CD & musique</option>
                              <option value="Loisirs Livres">Livres</option>
                              <option value="Loisirs Animaux">Animaux</option>
                              <option value="Loisirs Instruments de musique">Instruments de musique</option>
                              <option value="Loisirs Jeux jouets">Jeux & jouets</option>
                              <option value="Loisirs Autres">Autres</option>
                              <option style='background-color:#CCFFFF' disabled="disabled">EMPLOIS & SERVICES</option>
                              <option value="Emplois services Je recherche">Je recherche</option>
                              <option value="Emplois services Joffre">J'offre</option>
                              <option value="Emplois services Materiel professionnel">Materiel professionnel</option>
                              <option value="Emplois services Cours particuliers">Cours particuliers</option>
                              <option value="Emplois services Autres">Autres</option>
                            </select>
                          </p>
                          <p>Type d' annonce actuelle : <b><?php echo $annonce['type']; ?></b></p>
                          <p>offres :
                            <input type="radio" name="type" value="offre" selected="selected" />
                    demandes :
                    <input type="radio" name="type" value="demande" />
                    <br />
                          </p>
                          <p>&nbsp;</p>
                          <p>Titre : 
                            <input name="titre" type="text" id="titre" size="80" value="<?php echo $annonce['titre']; ?>" />
                            <br />
                          </p>
                          <p>Votre annonce : <br />
                            <br />
                            <textarea name="annonce" cols="70" rows="20" id="annonce" ><?php echo $annonce['annonce']; ?></textarea>
                          </p>
                          <p><br />
                            Telephone : 
                              <input name="telephone" type="text" id="telephone" size="30" value="<?php echo $annonce['telephone']; ?>" />
                              <img src="images/menu/blank.gif" width="20" height="1" /><img src="images/menu/blank.gif" width="20" height="1" /><img src="images/menu/blank.gif" width="20" height="1" />Prix : 
                              <input name="prix" type="text" id="prix" size="20" value="<?php echo $annonce['prix']; ?>" />
                          &euro;                          <br />
                          </p>
                          <p><strong><br />
  </strong><u>Vous avez la possibilit&eacute; d' illustrer votre articles par des photos : </u></p>
                          <p>&nbsp;</p>
                          <p><img src="images/annonces/<?php echo $annonce['photo1']; ?>" height="300" width="350" /><br />
                            modifier ma photo 1 : 
                            <input name="photo1" type="file" id="photo1" />
                          </p>
                          <p><img src="images/annonces/<?php echo $annonce['photo2']; ?>" height="300" width="350"><br />
                            modifier ma photo 2 :
                            <input type="file" name="photo2" id="photo2" />
                            </p>
                          <p><img src="images/annonces/<?php echo $annonce['photo3']; ?>" height="300" width="350"><br />
                            modifier ma photo 3 :
                            <input type="file" name="photo3" id="photo3" />
                            </p>
                          <p><img src="images/annonces/<?php echo $annonce['photo4']; ?>" height="300" width="350"><br />
                            modifier ma photo 4 : 
                            <input type="file" name="photo4" id="photo4" />
                          </p>
                          <p>
                            <input type="hidden" name="id" id="id"  value="<?php echo $annonce['id']; ?>" />
                          </p>
                          <p><span class="Style3">
                            <input name="submit" type="submit" value="Modifier mon annonce" />

Mais mon id est bien declaré, y' a pas photo! Voila formulaire comme tu me l' a demandé, mais c' est plutot la page de tratiement qui me pose souci :
			    <?php
				$id = $_POST['id'];
				$cat = htmlspecialchars($_POST['cat']);
				$type = htmlspecialchars($_POST['type']);
				$titre = htmlspecialchars($_POST['titre']);
				$annonce = htmlspecialchars($_POST['annonce']);
				$telephone = htmlspecialchars($_POST['telephone']);
				$prix = htmlspecialchars($_POST['prix']);
				$photo1 = htmlspecialchars($_POST['photo1']);
				$photo2 = htmlspecialchars($_POST['photo2']);
				$photo3 = htmlspecialchars($_POST['photo3']);
				$photo4 = htmlspecialchars($_POST['photo4']);
				$auteur = $_SESSION['pseudo'];
				
				

$dossier = '/home/villedeb/www/images/annonces/';
$fichier = time()."_".$_FILES['photo1']['name'];
$taille_maxi = 500000;
$taille = filesize($_FILES['photo1']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['photo1']['name'], '.'); 
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
     $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg...<br><br> Taille de la photo maxi : 500 Ko';
}
if($taille>$taille_maxi)
{
     $erreur = 'Le fichier est trop gros...';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
     //On formate le nom du fichier ici...
     $fichier = strtr($fichier, 
          'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
          'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
     $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
	 }
     move_uploaded_file($_FILES['photo1']['tmp_name'], $dossier . $fichier) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
	 ?>
			    
			    
			    
			    
			    
			    
			    <?php
$fichier2 = time()."_".$_FILES['photo2']['name'];
$taille_maxi2 = 500000;
$taille2 = filesize($_FILES['photo2']['tmp_name']);
$extensions2 = array('.png', '.gif', '.jpg', '.jpeg');
$extension2 = strrchr($_FILES['photo2']['name'], '.'); 
//Début des vérifications de sécurité...
if(!in_array($extension2, $extensions2)) //Si l'extension n'est pas dans le tableau
{
     $erreur2 = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg...<br><br> Taille de la photo maxi : 500 Ko';
}
if($taille2>$taille_maxi2)
{
     $erreur2 = 'Le fichier est trop gros...';
}
if(!isset($erreur2)) //S'il n'y a pas d'erreur, on upload
{
     //On formate le nom du fichier ici...
     $fichier2 = strtr($fichier2, 
          'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
          'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
     $fichier2 = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier2);
	 }
     move_uploaded_file($_FILES['photo2']['tmp_name'], $dossier . $fichier2) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
	 ?>
			    
			    
			    <?php


$fichier3 = time()."_".$_FILES['photo3']['name'];
$taille_maxi3 = 500000;
$taille3 = filesize($_FILES['photo3']['tmp_name']);
$extensions3 = array('.png', '.gif', '.jpg', '.jpeg');
$extension3 = strrchr($_FILES['photo3']['name'], '.'); 
//Début des vérifications de sécurité...
if(!in_array($extension3, $extensions3)) //Si l'extension n'est pas dans le tableau
{
     $erreur3 = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg...<br><br> Taille de la photo maxi : 500 Ko';
}
if($taille3>$taille_maxi3)
{
     $erreur3 = 'Le fichier est trop gros...';
}
if(!isset($erreur3)) //S'il n'y a pas d'erreur, on upload
{
     //On formate le nom du fichier ici...
     $fichier3 = strtr($fichier3, 
          'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
          'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
     $fichier3 = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier3);
	 }
     move_uploaded_file($_FILES['photo3']['tmp_name'], $dossier . $fichier3) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
	 ?>
			    
			    
			    <?php


$fichier4 = time()."_".$_FILES['photo4']['name'];
$taille_maxi4 = 500000;
$taille4 = filesize($_FILES['photo4']['tmp_name']);
$extensions4 = array('.png', '.gif', '.jpg', '.jpeg');
$extension4 = strrchr($_FILES['photo4']['name'], '.'); 
//Début des vérifications de sécurité...
if(!in_array($extension4, $extensions4)) //Si l'extension n'est pas dans le tableau
{
     $erreur4 = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg...<br><br> Taille de la photo maxi : 500 Ko';
}
if($taille4>$taille_maxi4)
{
     $erreur4 = 'Le fichier est trop gros...';
}
if(!isset($erreur4)) //S'il n'y a pas d'erreur, on upload
{
     //On formate le nom du fichier ici...
     $fichier4 = strtr($fichier4, 
          'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
          'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
     $fichier4 = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier4);
	 }
     move_uploaded_file($_FILES['photo4']['tmp_name'], $dossier . $fichier4) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
	 ?>
	 
	 <?php
	 $sql="UPDATE annonces SET cat='" . $cat . "', type='" . $type . "', titre='" . $titre . "', annonce='" . $annonce . "', telephone='" . $telephone . "', prix='" . $prix . "', photo1='" . $fichier . "', photo2='" . $fichier2 . "', photo3='" . $fichier3 . "', photo4='" . $fichier4 . "' WHERE id=". $id . "" or die(mysql_error());
	 mysql_query($sql);
	 ?>

Re: update...

par christele » 11 nov. 2009, 20:58

Bravo ça marche, mais
Je me permets d'insister sur la syntaxe que je te conseilles :oops:

Re: update...

par charabia » 11 nov. 2009, 20:38

Que vois-tu en faisant un echo de ce GET ? Tu passes par un formulaire non ? Si dans l'action tu n'as pas inclus ce ID ton GET ne fonctionnera pas.

Montre nous le code de ton formulaire.

Re: update...

par graffx » 11 nov. 2009, 20:22

Bon, j' ai resolu le truc en trichant et je suis pas satisfait mais en attendant ca fonctionne, j' ai juste mis dans le formulaire un type"hidden" pour value="id" (grossomodo)

et je recup la variable en post au lieu de get, evidemment maintenant l' update fonctionne, mais je trouve toujours pas l' erreur en get :(

Re: update...

par graffx » 11 nov. 2009, 20:17

Alors effectivement le probleme est localisé, le WHERE id= n' est pas pris en compte, pourtant j' ai bien sur ma page $id = $_GET['id']; et ca fonctionne comme ca sur toutes mes pages.


Quel pourrait etre eventuellement le souci? je cherche toujours..

Re: update...

par christele » 11 nov. 2009, 20:14

Bonsoir,
deux points,
1) contrôle la validitée du GET (moi je ferais du POST c' est plus fiable)
2) utilises cette forme préférable
<?PHP
mysql_query("INSERT INTO annonces (cat,type, titre, annonce, telephone, prix, photo1, photo2, photo3, photo4) 
VALUES ( '$cat ', '$type','$titre','$annonce','$telephone','$prix','$fichier','$fichier2','$fichier3','$fichier4' )") or die(mysql_error()); 
?>
Pareil pour UPDATE annonces SET

mais attention aux points suivants
c' est WHERE id= '$id'
et tout tes champs doivent étre échapés et contrôlés !

Ne mélanges pas ajout et mise a jour

Re: update...

par graffx » 11 nov. 2009, 20:05

héhé ben j' y ai pensé a ta premiere suggestion donc je vidais le premier champs pour voir mais rien...

Ensuite pour l' echo, je te dis dans quelques minutes le temps que je trouve la bonne parade :)

Re: update...

par Calimero » 11 nov. 2009, 19:41

Bonjour,

Un update qui "ne fait rien" sans provoquer d'erreur peut avoir deux origines :

- les valeurs à mettre à jour sont identiques aux valeurs déjà en place
- ou bien la clause WHERE n'est pas satisfaite (et du coup aucun enregistrement n'est affecté par la requête).

Si tu affichais la requête sql au lieu de l'éxécuter (echo au lieu de mysql_query), il te serait très simple de l'éxécuter ensuite à la main avec PHPMyAdmin et ainsi savoir dans quel cas tu te trouves, car il t'indique le nombre d'enregistrements affectés par ta requête (si ce nombre est positif tu es dans le premier cas, si c'est 0 tu es dans le second cas) ;)

update...

par graffx » 11 nov. 2009, 18:13

salut a tous les gens!!!

dites, peu etre que quelqu' un verra ma faute, parce que la je vois pas et je n' ai pas de retour d' erreur:

	 <?php
	 mysql_query("UPDATE annonces SET cat='" . $cat . "', type='" . $type . "', titre='" . $titre . "', annonce='" . $annonce . "', telephone='" . $telephone . "', prix='" . $prix . "', photo1='" . $fichier . "', photo2='" . $fichier2 . "', photo3='" . $fichier3 . "', photo4='" . $fichier4 . "' WHERE id='" . $id . "'")or die(mysql_error());
	 ?>
sachant que $id = $_GET['id']; bien sur...


Merci a vosu si vous voyez l' erreur, car je n' ai aucun message d' erreur nin de mise a jour dans la bdd!