Page 1 sur 1

Probleme mise a jour base

Posté : 15 mai 2006, 22:26
par Invité
salut,
J'ai un petit probleme de message d'erreur suite a une mise a jour de base :

Code : Tout sélectionner

Selectionna un archivo de tipo png, gif, jpg o jpeg !
je pense savoir pourquoi, par contre je ne sais pas comment l'ecrire (en php)
dans mon code , je mets a jour une base, grace a un formulaire qui comporte un champs d'upload de fichier, aussi, j'ai indiqué au niveau de le mise a jour de la base:
if($nomFichier != "") { // on ne met à jour chemin et photo que si un nouveau fichier est posté 
  $updateSQL.= ", chemin = '$chemin' "; 
  $updateSQL.= ", photo = '$nomFichier' "; 
} 
jusqu'a la tout fonctionnait bien :) grace a vous !!
a partir du monment ou j'ai rajouté mes securités au niveau du format et poids, j'ai eu donc ce message d'erreur:
Selectionna un archivo de tipo png, gif, jpg o jpeg !
il faut donc je pense que j'indique egalement au niveau des tests, que le champ (upload) peut etre vide !?

j'ai essayé plusieurs fois, sans succes :cry:

alors ma question si qlq veut bien m'aider

que dois je ecrire et ou exactement ? merci

voici mon code:
<?php
// je remonte la déclaration avant la récup du fichier 
$nomFichier = ""; // déclaration des variables 
$chemin = ""; 

//Script Upload
//on vérifies que le champ est bien rempli:
if(isset($_FILES["photo"]["name"]))  {
	$nomFichier    = $_FILES["photo"]["name"] ;   	//nom du fichier choisi:
	$nomTemporaire = $_FILES["photo"]["tmp_name"] ;   	//nom temporaire sur le serveur:
	$typeFichier   = $_FILES["photo"]["type"] ;   	//type du fichier choisi:
	$poidsFichier  = $_FILES["photo"]["size"] ;   	//poids en octets du fichier choisit:
	$codeErreur    = $_FILES["photo"]["error"] ;   	//code de l'erreur si jamais il y en a une:

	
	//chemin qui mène au dossier qui va contenir les fichiers upload:
	$chemin = "./images/" ;
	
	unset($erreur); 
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg', 'PNG', 'GIF', 'JPG', 'JPEG'); 
$taille_max = 100000; 

	// vérifications 
   if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) ) 
    { 
$erreur = 'Selectionna un archivo de tipo png, gif, jpg o jpeg !'; 
    } 
    elseif( file_exists($_FILES['photo']['tmp_name']) 
    and filesize($_FILES['photo']['tmp_name']) > $taille_max) 
    { 
$erreur = 'Su archivo no puede tener un peso superior a 200Ko !'; 
    } 

 //l'upload ! 
if(!isset($erreur)) { 
        move_uploaded_file($nomTemporaire, $chemin.$nomFichier);
		
     }
  }


function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if (! isset($erreur) && isset($_POST["MM_insert"]) && ($_POST["MM_insert"] == "form2")) {
  $updateSQL = sprintf("UPDATE immo1 SET pays=%s, ville=%s, text=%s",
                       GetSQLValueString($_POST['pays'], "text"),
                       GetSQLValueString($_POST['ville'], "text"),
                       GetSQLValueString($_POST['text'], "text"));
					   
if($nomFichier != "") { // on ne met à jour chemin et photo que si un nouveau fichier est posté 
  $updateSQL.= ", chemin = '$chemin' "; 
  $updateSQL.= ", photo = '$nomFichier' "; 
} 

$updateSQL.= " WHERE id = ".$_POST['id'];		   

  mysql_select_db($database_pays, $pays);
  $Result1 = mysql_query($updateSQL, $pays) or die(mysql_error());

  $updateGoTo = "pays_listing.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
    $updateGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $updateGoTo));
}

Posté : 15 mai 2006, 23:09
par jpaul
As tu essayé de tester la chaine de caractères (non vide) :
if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) ) 
devient :
if(($_FILES['photo']['name'] != "")&&( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) ) )

Posté : 15 mai 2006, 23:51
par Chile
l'invité c'est moi ! j'ai oublié de m'enregistrer :?
merci jpaul, non je n'avais pas essayé, mais je viens le faire
et la il me retourne sur cette meme page (pourtant j'ai un goto vers une autre en fin de code) sans message d'erreur mais sans mettre a jour ma base :(

Posté : 16 mai 2006, 20:02
par Chile
est-ce que je ne peux pas ecrire un format vide dans mes specifications :

Code : Tout sélectionner

$extensions_ok = array('png', 'gif', 'jpg', 'jpeg', 'PNG', 'GIF', 'JPG', 'JPEG');
du genre :

Code : Tout sélectionner

$extensions_ok = array('', 'png', 'gif', 'jpg', 'jpeg', 'PNG', 'GIF', 'JPG', 'JPEG');
et ainsi je passerai le test avec mon champ vide !? :)

(je pose la question sans pouvoir essayer car je ne suis pas sur mon pc habituel)

Posté : 19 mai 2006, 05:11
par Chile
marche pas :(

Posté : 20 mai 2006, 01:51
par Chile
As tu essayé de tester la chaine de caractères (non vide) :
if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) ) 
devient :
if(($_FILES['photo']['name'] != "")&&( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) ) )
en fait ta solution fonctionne très bien ! désolé !
amis moderateurs, je ne peux activer "résolu", car j'avais oublié de me connecter a l'ouverture de ce sujet