[PHP] Aide au sujet d'une fonction et gestion d'erreur

Aide au sujet d'une fonction et gestion d'erreur [PHP] - PHP - Programmation

Marsh Posté le 09-05-2007 à 15:25:51    

Bonjour,  
 
J'ai créer une fonction pour redimensionner des photos, bon ça marche, seulement, il m'arrive parfois d'avoir une erreur (je ne sais pas pourquoi) et cela m'affiche l'erreur (normal quoi).
je souhaiterai en fait que si une erreur se produit(a n'importe quelle stade de la fonction), que cela me renvoi vers une page erreur à moi...(avec possiblité de revenir a la page précedente)...sans que l'utilisateur voye cette erreur... Comment faire?
Dois-je faire un test à chacune des opérations :  
if (!$source = imagecreatefromjpeg($nom_temporaire) {
   header("location: blabla" );
   exit;
)
 
 
 

Code :
  1. <?php
  2. function creation_photo($nom, $nom_temporaire, $chemin, $taille_y, $taille_z) 
  3.   {
  4.     $source = imagecreatefromjpeg($nom_temporaire) or die ("Impossible de créer la photo $nom" );//On crée l'image a partir de la source  
  5.        $largeur_source = imagesx($source);//dimension image source
  6.         $hauteur_source = imagesy($source);//dimension image source
  7.      if ($hauteur_source > $largeur_source)//Si hauteur supérieur a largeur (donc format portrait)  
  8.           {
  9.           $destination = imagecreatetruecolor($taille_y, $taille_z) or die ("Impossible de créer la photo $nom" ); // On crée la photo vide au nouveau format portait
  10.                $largeur_destination = imagesx($destination);//dimension de la photo
  11.                $hauteur_destination = imagesy($destination);//dimension de la photo
  12.           }
  13.        else
  14.          {
  15.          $destination = imagecreatetruecolor($taille_z, $taille_y) or die ("Impossible de créer la photo $nom" ); // On crée la miniature vide au nouveau format paysage
  16.               $largeur_destination = imagesx($destination);//dimension de la
  17.               $hauteur_destination = imagesy($destination);//dimension miniature
  18.              }
  19.          imagecopyresampled($destination, $source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, $largeur_source, $hauteur_source) or die ("Impossible de redimensionner la photo ($nom)" );// On crée la miniature
  20.          imagejpeg($destination, $chemin.$nom ) or die ("Impossible de copier l'image ($nom) dans le repertoire $chemin" ); //on enregistre sous le nom original la photo
  21.    }
  22. ?>

Reply

Marsh Posté le 09-05-2007 à 15:25:51   

Reply

Marsh Posté le 09-05-2007 à 15:27:38    

Dépend de ta version de php.
 
trigger_error ou exeception


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
Reply

Marsh Posté le 09-05-2007 à 15:51:50    

tu te fais ton propre gestionnaire d'erreur avec http://fr.php.net/manual/fr/functi [...] andler.php

Reply

Marsh Posté le 09-05-2007 à 16:02:09    

ok j'etait tomber sur un article a ce sujet sur le site su zero...
Donc je laisse tombé le if....  
ou je doi améliorer ça ???
vous trouver comment tous ça... je vai poster le reste du script
 
Voici la fonction qui me sert pour uploader les photos
 

Code :
  1. function upload_photos()
  2.   {
  3.  include("./script_connexion_serveur.php" ); 
  4.  $num = 1;
  5.         foreach($_FILES["photo"]["name"] as $key => $name)
  6.               {
  7.        if($_FILES["photo"]["name"][$key] !="" )
  8.       {
  9.          /*======= Définition des variables ==============*/
  10.          $nom = $_FILES["photo"]["name"][$key];
  11.          $nom_temporaire =  $_FILES["photo"]["tmp_name"][$key];
  12.          $nom_sans_extension = basename($_FILES["photo"]["name"][$key],".jpg" );
  13.          $nom_dossier = substr($nom_sans_extension, 0, -2);
  14.      $num_ok = $num+1;
  15.      $num_photo = sprintf("%02d",$num_ok );
  16.      $nom_photos_final = $nom_dossier.$num_photo.".jpg";     
  17.     /*===============================================*/
  18.  
  19.          /*============ Chemin dossier ===================*/
  20.          $chemin_ftp = 'html/...'.$nom_dossier.'';
  21.          $chemin_ftp2 = 'html/..../'.$nom_dossier.'/';
  22.          $chemin_local = './../villas/'.$nom_dossier.'';
  23.          $chemin_local2 = './../villas/'.$nom_dossier.'/';
  24.          /*===============================================*/
  25.          $command = 'chmod 0777 '.$chemin_ftp;
  26.      
  27.       if(!isset($erreur_oubli)){ //Si il n'y a pas d'erreur  
  28.     if (is_dir($chemin_local)) {
  29.      if (file_exists($chemin_local2.$nom_photos_final)) {
  30.       ftp_delete($conn_id,$chemin_ftp2.$nom_photos_final) or die("Impossible de supprimer le fichier $nom" ) ;
  31.      }
  32.     }
  33.             else {
  34.      ftp_mkdir($conn_id, $chemin_ftp)or die("Impossible de créer le dossier $nom_dossier" );
  35.      ftp_site($conn_id,$command)or die("Impossible de modifier les droits" );
  36.            }
  37.     creation_photo($nom_photos_final,$nom_temporaire, $chemin_local2, 333, 500);    
  38.    }
  39.   }
  40.  $num++;
  41.   }  
  42. }


 
Voici le script pour de traitement du formulaire :  
 

Code :
  1. include("./script_connexion_serveur.php" );
  2. require'./xxxx/fonction_creation_photos.php';
  3. require'./xx/fonction_upload.php';
  4. require'./xxxxx/fonction_verif_upload_photo.php';
  5. mysql_connect("localhost", "xxxxxx", "xxxxxx" );// on se connecte à MySQL
  6. mysql_select_db("xxxxx" );// on sélectionne la base   
  7. if (isset($_POST['envoyer']))
  8.        {
  9.   if (isset($_POST['reference'])) {
  10.   $ref = mysql_real_escape_string(strtoupper($_POST['reference']));
  11.   $requete = mysql_query("SELECT xxxxx FROM xxxx WHERE refxxx='".$ref."' " );
  12.   $requeteok = mysql_fetch_row($requete);
  13.    if (!empty($requeteok)) {
  14.     $modif = true;
  15.     }
  16.    else {
  17.    $modif = false;
  18.    }
  19.   }
  20.        /*================================================================= Restrictions et erreur ===================================================================*/
  21.    $i=0;    
  22.   if(!$modif) {
  23.    if(!empty($ref)) {
  24.      $recherche_reference = mysql_query("SELECT xxx FROM xxxx WHERE reference = '".$ref."'" );
  25.      $resultats_reference = mysql_fetch_array($recherche_reference);
  26.      if(!empty($resultats_reference)) {
  27.        $erreur_oubli[$i] = "La Référence existe déjà";
  28.        $i++;
  29.            }
  30.      if (!preg_match("/^[0-9]+[V|A]{1}$/", $ref)) {
  31.       $erreur_oubli[$i] = "La Référence que vous avez entré n'est pas valide";
  32.       $i++;
  33.      }
  34.     }
  35.   }
  36.   if(empty($_POST['reference'])) {
  37.     $erreur_oubli[$i] = "Vous n'avez pas entré de réference";
  38.     $i++;
  39.     }
  40.   if(empty($_POST['surface_habitable']))
  41.        {
  42.       $erreur_oubli[$i] = "Vous n'avez pas précisé de surface";
  43.      $i++;
  44.      }
  45.   else{
  46.    if ( !preg_match("/^\d+$/", $_POST['surface_habitable'])) {
  47.     $erreur_oubli[$i] = "La surface que vous avez entré n'est pas valide";
  48.     $i++;
  49.     }
  50.      } 
  51.   if(!empty($_POST['annee'])) {
  52.    if ( !preg_match("/^[17|18|19|20]{2}\d{2}/", $_POST['annee'])) {
  53.     $erreur_oubli[$i] = "L'année que vous avez entré n'est pas valide";
  54.     $i++;
  55.     }
  56.      }
  57.   if(!empty($_POST['annee_renov'])) {
  58.    if ( !preg_match("/^[18|19|20]{2}\d{2}/", $_POST['annee_renov'])) {
  59.     $erreur_oubli[$i] = "L'année de rénovation que vous avez entré n'est pas valide";
  60.     $i++;
  61.     }
  62.      }
  63.   if(!isset($_POST['coup_de_coeur']) OR empty($_POST['exclusivite']) )
  64.        {
  65.       $erreur_oubli[$i] = "Vous n'avez pas coché le champs coups de coeur ou exclusivité";
  66.      $i++;
  67.      }
  68.   if(!empty($_POST['surface_terrain'])) {
  69.    if ( !preg_match("/^\d+$/", $_POST['surface_terrain'])) {
  70.     $erreur_oubli[$i] = "La surface du terrain que vous avez entrer n'est pas valide";
  71.     $i++;
  72.     }
  73.   }
  74.   if(!empty($_POST['sdb'])) {
  75.    if ( !preg_match("/^[0-9]*$/", $_POST['sdb'])) {
  76.     $erreur_oubli[$i] = "La Nombre de Salle de bain que vous avez entré n'est pas valide";
  77.     $i++;
  78.     }
  79.   }
  80.   if(!empty($_POST['wc'])) {
  81.    if ( !preg_match("/^[0-9]*$/", $_POST['wc'])) {
  82.     $erreur_oubli[$i] = "La Nombre de wc que vous avez entré n'est pas valide";
  83.     $i++;
  84.     }
  85.   }
  86.   if (!empty($_FILES['miniature'])) {
  87.    if ($erreur_mini = verif_photo ($_FILES['miniature']['name'], $_FILES['miniature']['tmp_name'], $ref)) { 
  88.     foreach ($erreur_mini as $key => $value) {
  89.      $erreur_oubli[$i] = $value;
  90.      $i++;
  91.      }
  92.    }
  93.   }
  94.   if (!empty($_FILES['miniature'])) {
  95.    if ($erreur_photos = verif_photo ($_FILES['photo']['name'], $_FILES['photo']['tmp_name'], $ref)) { 
  96.     foreach ($erreur_photos as $key => $value) {
  97.      $erreur_oubli[$i] = $value;
  98.      $i++;
  99.     }
  100.    }
  101.   }
  102.   /*===========================================================================================================================================*/
  103.  
  104. if(isset($erreur_oubli))
  105.   {
  106.   include("./../erreur_formulaire.php" ); 
  107.   }
  108.  
  109.     else
  110.   {
  111.   $type_affaire = "Transaction";
  112.   $date_annonce = date('Y-m-d');
  113.   $date_maj = date('Y-m-d');
  114.   $type_bien = mysql_real_escape_string($_POST['type_bien']);
  115.   $surface_habitable = mysql_real_escape_string($_POST['surface_habitable']);  
  116.   $surface_terrain = mysql_real_escape_string($_POST['surface_terrain']);
  117.   $annee = mysql_real_escape_string($_POST['annee']);
  118.   $annee_renov = mysql_real_escape_string($_POST['annee_renov']);
  119.   $nombre_chambres = mysql_real_escape_string($_POST['nombre_chambres']);
  120.   $nombre_pieces = mysql_real_escape_string($_POST['nombre_pieces']);
  121.   $sdb = mysql_real_escape_string($_POST['sdb']);
  122.   $wc = mysql_real_escape_string($_POST['wc']);
  123.   $vue = mysql_real_escape_string($_POST['vue']);
  124.   $etage = mysql_real_escape_string($_POST['etage']);
  125.   $exposition = mysql_real_escape_string($_POST['exposition']);
  126.   $prix = mysql_real_escape_string($_POST['prix']);
  127.   $eaux_usees = mysql_real_escape_string($_POST['eaux_usees']);
  128.   $exclusivite = mysql_real_escape_string($_POST['exclusivite']);
  129.   $coup_coeur = mysql_real_escape_string($_POST['coup_de_coeur']);
  130.   $annonce = mysql_real_escape_string(htmlentities(preg_replace("/\s+/"," ", $_POST['annonce'] )));
  131.   $ville = mysql_real_escape_string($_POST['ville']); 
  132.    if(isset($_POST['ville']))
  133.         {
  134.         $recherche_cp = mysql_query("SELECT xxxx FROM xxxx WHERE ville = '".$ville."'" );
  135.      $resultats_cp = mysql_fetch_array($recherche_cp) or die ("Pas de réusltat pour le Code Postal" );
  136.      }
  137.    else
  138.      {
  139.      $resultats_cp = "";
  140.      } 
  141.    if(isset($_POST['prestation_int']))
  142.         {
  143.           $prestation_int = $_POST['prestation_int'];
  144.           $donnee_prest_int = mysql_real_escape_string(implode (",",$prestation_int));
  145.           } 
  146.         else
  147.        {
  148.        $prestation_int = "";
  149.        $donnee_prest_int = "";
  150.        }
  151.  
  152.  
  153.          if(isset($_POST['prestation_ext']))
  154.        {
  155.           $prestation_ext = $_POST['prestation_ext'];
  156.           $donnee_prest_ext = mysql_real_escape_string(implode (",",$prestation_ext));
  157.           } 
  158.      else
  159.         {
  160.        $prestation_ext = "";
  161.           $donnee_prest_ext = "";
  162.         }
  163.    
  164.     if($modif) {
  165.   $requete = "UPDATE xxxxxx SET date_maj='".$date_maj."', type_bien ='".$type_bien."', prix='".$prix."', ville='".$ville."', ";
  166.   $requete .= "code_postal = '".$resultats_cp[0]."', surface_habitable='".$surface_habitable."', surface_terrain='".$surface_terrain."', annee='".$annee."', annee_renov='".$annee_renov."', ";
  167.   $requete .= "nombre_chambres='".$nombre_chambres."', nombre_pieces='".$nombre_pieces."', nombre_sdb='".$sdb."', nombre_wc='".$wc."', vue='".$vue."', ";
  168.   $requete .= "eaux_usees='".$eaux_usees."', etage='".$etage."', exposition='".$exposition."', prestations_ext='".$donnee_prest_ext."', prestations_int='".$donnee_prest_int."', coup_de_coeur='".$coup_coeur."', ";
  169.   $requete .= " exclusivite='".$exclusivite."' , annonce='".$annonce."' WHERE reference='".$ref."'"; 
  170.   $requeteok = mysql_query($requete) or die(mysql_error());//on recupere le mot de passe et on le compare au login
  171.   upload_photos_mini();
  172.      upload_photos();
  173.   $message = "Votre annonce a été mis à jour avec succès";
  174.  }
  175.  else {
  176.   $requete = "INSERT INTO xxx (ID, date_entree, type_bien, type_affaire, nombre_pieces, reference, code_postal, ville, surface_habitable, ";
  177.   $requete .="surface_terrain, vue, nombre_chambres, nombre_sdb, nombre_wc, prix, annee, annee_renov, eaux_usees, etage, exposition, prestations_int, prestations_ext, coup_de_coeur, exclusivite, annonce) ";
  178.   $requete .= "VALUES ('','".$date_annonce."','".$type_bien."','".$type_affaire."','".$nombre_pieces."','".$ref."','".$resultats_cp[0]."','".$ville."','".$surface_habitable."','".$surface_terrain."', ";
  179.   $requete .= "'".$vue."','".$nombre_chambres."','".$sdb."','".$wc."','".$prix."','".$annee."','".$annee_renov."','".$eaux_usees."','".$etage."','".$exposition."','".$donnee_prest_int."','".$donnee_prest_ext."','".$coup_coeur."','".$exclusivite."','".$annonce."') ";
  180.   $requeteok = mysql_query($requete) or die(mysql_error());//on recupere le mot de passe et on le compare au login;  
  181.   upload_photos_mini();
  182.   upload_photos();
  183.   $message = "Votre annonce a été enregistré avec succès";
  184.  }
  185. $url = "xxxxxx?id=".$_GET['id']."";
  186. $text_url = "Retour à la page administration";
  187. include("./../succes_formulaire.php" );
  188. }
  189. mysql_close(); // Déconnexion de MySQL
  190. }


Message édité par lilougirl8 le 09-05-2007 à 16:07:04
Reply

Marsh Posté le 10-05-2007 à 12:11:24    

personne pour me donner son avis?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed