Probléme de chaine

Résolu/Fermé
platypus69 Messages postés 108 Date d'inscription mardi 24 février 2009 Statut Membre Dernière intervention 11 février 2015 - 8 sept. 2009 à 14:54
platypus69 Messages postés 108 Date d'inscription mardi 24 février 2009 Statut Membre Dernière intervention 11 février 2015 - 8 sept. 2009 à 17:40
Bonjour a tous, voici un petit script qui doit en temps normal mettre a jour ma bdd avec des conditions.
La bdd se met à jour quand le champ $_POST['image'] est vide sans aucun probléme mais pas quand il a un fichier à transféré. Je pense que certaines des conditions ne se pas exacte ou mal remplie donc un peu d'aide ne serait pas de refus. Voici le script :



<?
include("config.php");
// Protection des pages Admin
session_start();
if (!session_is_registered("authentification")){
header("erreur.php");
}

$id = $_POST['id'];
$nom = $_POST['nom'];
$variete = $_POST['variete'];
$categorie = $_POST['categorie'];
$prixTTC = $_POST['prixTTC'];
$image = $_POST['image'];
$visible = $_POST['visible'];


if (empty($_POST['image'])) {
$modif_article = ("UPDATE article SET nom='$nom',variete='$variete',categorie='$categorie',prixTTC='$prixTTC',visible='$visible' WHERE id='$id'");
mysql_query($modif_article);
}
else {
if(isset($_FILES['image']))
{
// params
unset($erreur);
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
$taille_max = 100000;
$dest_dossier = '../../../images/article/';
// utilisez également des slashes sous windows : $dest_dossier = 'd:/damien/photos/';
// vérifications
if( !in_array( substr(strrchr($_FILES['image']['name'], '.'), 1), $extensions_ok ) )
{
$erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !';
}
elseif( file_exists($_FILES['image']['tmp_name'])
and filesize($_FILES['image']['tmp_name']) > $taille_max)
{
$erreur = 'Votre fichier doit faire moins de 500Ko !';
}
// copie du fichier
if(!isset($erreur))
{
$dest_fichier = basename($_FILES['image']['name']);
// formatage nom fichier
// enlever les accents
$dest_fichier = strtr($dest_fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
// remplacer les caracteres autres que lettres, chiffres et point par _
$dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
// copie du fichier
move_uploaded_file($_FILES['image']['tmp_name'], $dest_dossier . $dest_fichier);
}
$modif_article = ("UPDATE article SET nom='$nom',variete='$variete',categorie='$categorie',prixTTC='$prixTTC',image='$image',visible='$visible' WHERE id='$id'");
mysql_query($modif_article);

}
}
header("location:../../accueil.php?mdf=ok03");
?>

Merci a tous d'avance
A voir également:

6 réponses

moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
8 sept. 2009 à 15:21
hello
d'où vient $_POST['id']; ???
C'est un internaute qui le tape ? Comment est récupérée cette valeur ?
0
platypus69 Messages postés 108 Date d'inscription mardi 24 février 2009 Statut Membre Dernière intervention 11 février 2015 7
8 sept. 2009 à 16:29
non en faite c'est une interface d'administrateur, le id viens d'une formulaire d'envoi
0
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
8 sept. 2009 à 16:57
d'accord parfait.
Et as-tu localisé ce qui fait planter ton insert ?
Une fois qu'il est lancé il ne dois pas planter, sinon ya un souci.
Chaque id qui circule dans ton $_POST est juste ?
A mon avis ça vient de là non ? Sinon il y a un autre champ ou valeur que tu récupère qui fait planter l'insert parce que c'est peut-etre un caractère spécial...
0
platypus69 Messages postés 108 Date d'inscription mardi 24 février 2009 Statut Membre Dernière intervention 11 février 2015 7
8 sept. 2009 à 17:03
a mon avis ca ne viens pas du UPDATE ni des variables ($), je pense que c'est tous simplement un probléme de montage des conditions.

Le montage des IF et ELSE n'est peut étre pas bien monté ou les empty et isset ne sont pas utilisé correctement, si quelqu'un est habitué des conditions, qu'il fasse signe.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
8 sept. 2009 à 17:13
c'est à toi de vérifier tes conditions.
On ne connais pas ton programme !
Il ne semble pas y avoir de souci avec des ( ou des } sinon il te le dirait !

bonne chance
0
platypus69 Messages postés 108 Date d'inscription mardi 24 février 2009 Statut Membre Dernière intervention 11 février 2015 7
8 sept. 2009 à 17:40
j'ai trouvé une partie de la réponse:

else {
if(isset($_FILES['image']))
{
// params
unset($erreur);
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg');

condition else { if(isset($_FILES['image'])) ne serre à rien puis qu'elle a déjà été vérifié avant if (empty($_POST['image'])) { mais sous une forme de formulaire.


Codé réparé :

if (empty($_POST['image'])) {
$modif_article = ("UPDATE article SET nom='$nom',variete='$variete',conditionnement='$conditionnement',categorie='$categorie',prixTTC='$prixTTC',visible='$visible' WHERE id='$id'");
mysql_query($modif_article);
}
else {
// params
unset($erreur);
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
0