IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo
Sommaire > Formulaires
        Uploader des fichiers dont on a choisit l'extension
        Equivalent de magic_quotes
        Poster une selection multiple avec des checkbox
        Gérer des listes déroulantes
        Listes liées



Auteur : iubito
Version : 11/01/2006
Uploader des fichiers dont on a choisit l'extension
Les variables utilisées :
$UPLOAD_maxFileSize = 500;
// Taille maxi en Kilo octet.
// Si le serveur accepte moins, c'est la config du serveur qui sera prise en compte.

$UPLOAD_nbFiles = 1;
//Nombre de fichiers à envoyer en simultané.
//On peut décider d'envoyer 3 fichiers à la fois.

$UPLOAD_forbiddenFiles = 'php|php3|php4...';
//Liste des extensions refusées, séparées par des |
$UPLOAD_acceptedFiles = '';
//Liste des extensions acceptés, séparées par des |
//Si ça vaut une chaîne non vide, ça a la priorité sur $UPLOAD_forbiddenFiles,
//=> le script n'acceptera QUE ces fichiers. 
Le formulaire :
//Déterminer le max upload file size.
$cfgUlMaxFileSize = strtoupper(ini_get("upload_max_filesize"));
if (substr_count($cfgUlMaxFileSize, 'K'))
   $cfgUlMaxFileSize = str_replace('K', '', $cfgUlMaxFileSize) * 1024;
elseif (substr_count($cfgUlMaxFileSize, 'M'))
   $cfgUlMaxFileSize = str_replace('M', '', $cfgUlMaxFileSize) * 1024 * 1024;
$uploadSize = min($cfgUlMaxFileSize, $UPLOAD_maxFileSize*1024);

echo '<form name="upload" enctype="multipart/form-data" action="upload.php" method="post">'
   .'<input type="hidden" name="MAX_FILE_SIZE" value="'.$uploadSize.'">';

for($i=0; $i < $UPLOAD_nbFiles; $i++)
   echo '<input name="fichiers[]" type="file" /><br />';
echo '<br /><input type="submit" value="Envoyer la purée !" /><br />';

echo '<br />Extensions '.($UPLOAD_acceptedFiles=='' ? 'refusées' : 'acceptées');
echo str_replace('|', ' .*',
         ($UPLOAD_acceptedFiles==''?$UPLOAD_forbiddenFiles : $UPLOAD_acceptedFiles));
echo '<br />Taille maxi : '.$uploadSize;
echo '</form>'; 
La validation (Les fichiers seront déposés dans le dossier nommé "repertoire" au même niveau que ce script PHP) :
//Retourne l'extension d'un fichier
function extension($wfichier)
{
   return strtolower(substr($wfichier,
      strrpos($wfichier,'.') + 1,
      strlen($wfichier) - strrpos($wfichier, '.') - 1));
}


for($i=0; $i < $UPLOAD_nbFiles; $i++) //on retrouve notre variable nb de fichiers
{
   $strUpload = ''; //Les éventuels messages d'erreur ;-)
   $file = '';
   if (isset($_FILES['fichiers']['name'][$i]))
      $file = trim(stripslashes($_FILES['fichiers']['name'][$i]));
   if ($file == '')
      continue;

//Check file size
   if ($_FILES['fichiers']['size'][$i] > $_POST['MAX_FILE_SIZE'])
   {
      $strUpload .= $file.' : Trop gros !<br />';
      continue;
   }

//Check extension
   if (
      (($UPLOAD_acceptedFiles=='') && (substr_count($UPLOAD_acceptedFiles, extension($_FILES['fichiers']['name'][$i])) > 0))
   || (($UPLOAD_acceptedFiles!='') && (substr_count($UPLOAD_acceptedFiles, extension($_FILES['fichiers']['name'][$i])) == 0))
   )
   {
      $strUpload .= $file.' : Format non valide<br />';
      continue;
   }

//Check if file already exists
   if (is_file('repertoire/'.$file))
   {
      $strUpload .= $file.' : Existe déjà !<br />';
      continue;
   }

//Now it's OK, upload !
   if (@copy($_FILES['fichiers']['tmp_name'][$i], 'repertoire/'.$file))
   {
      //Si c'est une image, vérification améliorée
      if (in_array(extension($file), array('gif', 'jpg', 'png', 'swf', 'swc',
                        'psd', 'tiff', 'bmp', 'iff', 'jp2',
                        'jpx', 'jb2', 'jpc', 'xbm', 'wbmp')))
      {
         $checksize = @getimagesize('repertoire/'.$file);
         if (!$checksize)
         {
            $strUpload .= $file.' : Image incorrecte !<br />';
            @unlink($curr.'/'.$file);
            continue;
         }
      }
      $strUpload .= $file.' : OK<br />';
   }
   else
      $strUpload.= $file.' : Erreur inconnue<br />';

   //Si le fichier temporaire n'a pas été effacé par le serveur (ça arrive, aléatoirement on dirait :P)
   if (is_file($_FILES['fichiers']['tmp_name'][$i]))
      @unlink($_FILES['fichiers']['tmp_name'][$i]);

   echo $strUpload.'<br />';
} 

Auteur : genova
Version : 16/01/2006
Equivalent de magic_quotes
Valable pour php4, pour php5, utilisez fr array_walk_recursive()
$globals = array('GET', 'POST', 'COOKIE');
if( ! get_magic_quotes_gpc() )
{
   for ( $i = 0; $i < 3; $i++ )
   {
      while ( list($cle, $valeur) = each(${'HTTP_' . $globals[$i] . '_VARS'}) )
      {
         unset($$cle);
         if ( is_array($valeur) )
         {
            while ( list($cle_bis, $valeur_bis) = each($valeur) )
            {
               ${'HTTP_' . $globals[$i] . '_VARS'}[$cle][$cle_bis] = addslashes($valeur_bis);
            }
         }
         else
         {
            ${'HTTP_' . $globals[$i] . '_VARS'}[$cle] = addslashes($valeur);
         }
      }
   }
}

Auteur : Sub0
Version : 16/01/2006
Poster une selection multiple avec des checkbox
<?php
$liste=Array('Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi','Dimanche');
$cnt=count($liste);
$select=@$_POST['select'];
$ret='';
   

if(isset($_POST['valider'])){
    for($x=0;$x<$cnt;$x++)
       if(isset($select[$x]))
          $ret.=$liste[$x].'<br/>';
}


$ret.='<br/><form method="post">';
for($x=0;$x<$cnt;$x++){
   $ret.='<input type="checkbox" name="select['.$x.']"';
   if(isset($select[$x])) $ret.=' checked';
   $ret.='/>'.$liste[$x].'<br/>';
}
$ret.='<br/>'.
      '<input type="submit" name="valider" value=" ENVOYER "/>'.
      '</form>';
echo $ret;

?>

Auteur : Moloc'h
Version : 16/01/2006
Gérer des listes déroulantes
<?
    function listbox ( $name , $array_value = array() , $array_selected , $multiple = 0 , $size = 1 )
    {
        $select = '<select' . ( ( $multiple == 1 ) ? ' multiple name="' . $name . '[]"' : ' name="' . $name . '"' ) . 
' size="' . $size . '">' . "n" ;
        
            foreach ( $array_value as $key => $value )
            {
                $select .= '<option value="' . $key . '"' .
                ( ( $multiple == 1 ) ? ( in_array ( $key , $array_selected ) ? ' selected="selected"' : '' ) : 
( $key == $array_selected ? ' selected="selected"' : '' ) ) .
                '>' . $value . '</option>' . "n" ;
            }
        
        $select .= '</select>' ;
        
        return $select ;
    }
?>
Cette fonction accepte cinq arguments :
  1. $name : Le nom du l'élément select.
  2. $array_value : Le tableau des valeurs de l'élément select.
  3. $array_selected : Le tableau des valeurs sélectionnées.
  4. $multiple : Valeur bolléenne indiquant si l'élément select est multiple ou simple.
  5. $size : Taille du menu.
Mise en oeuvre :
Prenons l'exemple d'un menu déroulant des régions françaises :
Cas où les valeurs sont issues d'un tableau PHP :
<?
$region = array (
1 => 'Alsace' ,
2 => 'Aquitaine' ,
3 => 'Auvergne' ,
4 => 'Basse-Normandie' ,
5 => 'Bourgogne' ,
6 => 'Bretagne' ,
7 => 'Centre' ,
8 => 'Champagne-Ardenne' ,
9 => 'Corse' ,
10 => 'Dom-Tom' ,
11 => 'Franche-Comté' ,
12 => 'Haute-Normandie' ,
13 => 'Ile de France' ,
14 => 'Languedoc-Roussillon' ,
15 => 'Limousin' ,
16 => 'Lorraine' ,
17 => 'Midi-Pyrénées' ,
18 => 'Nord-Pas-de-Calais' ,
19 => 'Pays de la Loire' ,
20 => 'Picardie' ,
21 => 'Poitou-Charentes' ,
22 => 'PACA' ,
23 => 'Rhône-Alpes'
) ;
?> 
Dans la page HTML il suffit de faire :
Pour une liste simple
<?
echo listbox ( 'region' , $region ) ;
?>
Pour une liste simple avec une valeur pré-sélectionnée
<?
echo listbox ( 'region' , $region , 4 ) ;
?>
Pour une liste simple avec une valeur pré-sélectionnée et conservation d'une valeur après envoit
<?
echo listbox ( 'region' , $region , ( isset ( $_POST['region'] ) ? $_POST['region'] : 4 ) ) ;
?>
Pour une liste multiple
<?
echo listbox ( 'region' , $region , array() , 1 , 6 ) ; 
?>
Pour une liste multiple avec des valeurs pré-sélectionnées
<?
echo listbox ( 'region' , $region , array ( 4 , 5 , 6 , 7 ) , 1 , 6 ) ; 
?>
Pour une liste multiple avec des valeurs pré-sélectionnées et conservation des valeurs après envoit
<?
echo listbox ( 'region' , $region , 
( isset ( $_POST['region'] ) ? $_POST['region'] : array ( 4 , 5 , 6 , 7 ) ) , 1 , 6 ) ; 
?>


Cas où les valeurs sont issues de la base :
CREATE TABLE region (
id TINYINT( 4 ) NOT NULL AUTO_INCREMENT ,
name TEXT,
PRIMARY KEY ( id )
);

INSERT INTO region (name) VALUES ( 'Alsace' );
INSERT INTO region (name) VALUES ( 'Aquitaine' );
INSERT INTO region (name) VALUES ( 'Auvergne' );
INSERT INTO region (name) VALUES ( 'Basse-Normandie' );
INSERT INTO region (name) VALUES ( 'Bourgogne' );
INSERT INTO region (name) VALUES ( 'Bretagne' );
INSERT INTO region (name) VALUES ( 'Centre' );
INSERT INTO region (name) VALUES ( 'Champagne-Ardenne' );
INSERT INTO region (name) VALUES ( 'Corse' );
INSERT INTO region (name) VALUES ( 'Dom-Tom' );
INSERT INTO region (name) VALUES ( 'Franche-Comté' );
INSERT INTO region (name) VALUES ( 'Haute-Normandie' );
INSERT INTO region (name) VALUES ( 'Ile de France' );
INSERT INTO region (name) VALUES ( 'Languedoc-Roussillon' );
INSERT INTO region (name) VALUES ( 'Limousin' );
INSERT INTO region (name) VALUES ( 'Lorraine' );
INSERT INTO region (name) VALUES ( 'Midi-Pyrénées' );
INSERT INTO region (name) VALUES ( 'Nord-Pas-de-Calais' );
INSERT INTO region (name) VALUES ( 'Pays de la Loire' );
INSERT INTO region (name) VALUES ( 'Picardie' );
INSERT INTO region (name) VALUES ( 'Poitou-Charentes' );
INSERT INTO region (name) VALUES ( 'PACA' );
INSERT INTO region (name) VALUES ( 'Rhône-Alpes' );
Puis :
<?
$sql = "SELECT name FROM region" ;
$result = mysql_query ( $sql ) ;
$region = array() ;
while ( $row = mysql_fetch_assoc ( $result ) )
{
$region[] = $row['name'] ;
}
?>
Ensuite, c'est pareil ...


Auteur : frenchsting
Version : 16/01/2006
Listes liées
Il faut juste rajouter la connection à la base.
<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<script language=javascript>
function modifcombo(){
document.location.replace("essai3.php?lieux=" + document.form1.selectlieu.value );
document.form1.selectlieu.value = $lieux;
}
</script>;
</head>

<body>
<?php
if (isset($_GET['lieux'])){
  $lieux = $_GET['lieux'];
} else {
  $lieux = NULL;
}
print ">>>>" . $lieux ."<<< <br> <br> <br>";
?>
<p>Essai formulaire</p>
<form name="form1" method="post" action="">
<table width="100%" border="1">
  <tr>
    <td><div align="right">lieu :</div></td>
    <td><select name="selectlieu" class="txt16-000000" onChange="javascript : modifcombo()">
      <option value=""></option>
      <!-- Valeur vide pour forcer l'utilisateur à sélectionner  -->
      <?php
                  // Connexion à la base
                  include("../connectbase.inc") ;

       // Execution requête
     $ma_req = "SELECT * FROM lieu;";
     $res_req = mysql_query($ma_req)
     or die("Selection table \"lieu\" impossible");

     // Affectation des variables utilisées pour l'affichage
     if (mysql_num_rows($res_req)!=0) {  // résultat non vide
         while ($une_ligne = mysql_fetch_array($res_req)) {
                      $id_lieu =  $une_ligne["id_lieu"];
         $nom_lieu = $une_ligne["nom_lieu"];
         print "<option value=" . $id_lieu;
         if ($id_lieu == $lieux) {
           print " selected";
         }
         print ">" . $nom_lieu ."</option>";
     }
     }
     ?>
    </select>
</td>
  </tr>
  <tr>
    <td> <div align="right">salle : </div></td>
    <td><select name="selectsalle" class="txt16-000000">
      <option value=""></option>
      <!-- Valeur vide pour forcer l'utilisateur à sélectionner  -->
      <?php
    // Connexion à la base
    include("../connectbase.inc") ;

     // Execution requête
   $ma_req = "SELECT * FROM salle WHERE id_lieu = '$lieux';";
   $res_req = mysql_query($ma_req)
   or die("Selection table \"salle\" impossible");

   // Affectation des variables utilisées pour l'affichage
    if (mysql_num_rows($res_req)!=0) {  // résultat non vide
        while ($une_ligne = mysql_fetch_array($res_req)) {
                    $id_salle = $une_ligne["id_salle"];
       $nom_salle = $une_ligne["nom_salle"];
       print "<option value=" . "id_salle . ">"  .  "nom_salle  .  "</option>";
      }
      }
            ?>
    </select></td>
  </tr>
</table>
</form>
</body>
</html> 


Consultez les autres pages sources


Valid XHTML 1.0 TransitionalValid CSS!

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2006 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.