Probleme mise a jour base

Invité
Invité n'ayant pas de compte PHPfrance

15 mai 2006, 22:26

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));
}

Eléphant du PHP | 451 Messages

15 mai 2006, 23:09

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 ) ) )
Jpaul
J'essaye d'aider : parfois je fais des erreurs, on me les corrige et j'apprends un peu plus. Super ce forum :)

Eléphant du PHP | 297 Messages

15 mai 2006, 23:51

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 :(

Eléphant du PHP | 297 Messages

16 mai 2006, 20:02

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)

Eléphant du PHP | 297 Messages

19 mai 2006, 05:11

marche pas :(

Eléphant du PHP | 297 Messages

20 mai 2006, 01:51

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