IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez / Téléchargez Sources et Outils PHP Discussion :

Vos meilleurs codes sources


Sujet :

Contribuez / Téléchargez Sources et Outils PHP

  1. #41
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Citation Envoyé par paterson
    Comment se créé un espace membre (sans verification de l'addresse email)
    Il manque un minimum de sécurité selon moi. Le piratage du mot de passe par forcebrute ou la possibilité de créer autant de comptes que l'on veut par exemple...
    http://matthieu.developpez.com/authentification
    Mais bon, j'admets aussi qu'il n'est pas toujours possible de faire court et efficace à la fois.

    Perso, je préfère cette solution à la limite :
    http://php.developpez.com/sources/?p...te#authenthttp

    Cordialement, Sub0
    De retour parmis vous après 10 ans!!

  2. #42
    Membre averti
    Profil pro
    Ingénieur en électronique
    Inscrit en
    Septembre 2004
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur en électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 419
    Points : 333
    Points
    333
    Par défaut
    Mon ancien hébergeur , ne permétai pas d'envoyer de mail , s'est pourquoi j'avai fait comme sa , maintenant , a par l'accés admin que j'ai fait a la va vite , tout est sécuriser .... ( identification par mail .... )

    Le prochain pa , enregistrer l'ip , j'avais deja afficher , maintenant , reste plus qu'as l'enregistrer ....

    Mais la , sa va étre long , je suis passer a la programation en c des pic , et je dois finir mon project pour un bien ...

  3. #43
    Membre régulier

    Profil pro
    Inscrit en
    Février 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 10
    Points : 108
    Points
    108
    Par défaut cryptage et décryptage de texte en php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    <?php
    /*
      string  md5 ( string   str , bool   raw_output )
      md5 calcule le MD5 de la chaîne de caractères str en utilisant
      l'algorithme RSA Data Security, Inc. MD5 Message-Digest Algorithm ,
      et retourne le résultat. Le résultat est un nombre de 32 caractères hexadécimaux.
      Note :Le paramètre raw_output a été ajouté en PHP 5.0.0 et vaut par défaut FALSE .
    
      string  base64_encode ( string   data )
      base64_encode retourne data encodé en base64.
      Cet encodage est fait pour permettre aux informations binaires d'être manipulées
      par les systèmes qui ne gèrent pas correctement les 8 bits,
      comme par exemple, les corps de mail.
      Une chaîne encodée base64 prend environs 33% de plus que les données initiales.
    
       Opérateur Dénomination Effet Syntaxe Résultat
       & ET bit-à-bit Retourne 1 si les deux bits de même poids sont à 1
                                  9 & 12 (1001 & 1100)  => 8 (1000)
       | OU bit-à-bit Retourne 1 si l'un ou l'autre des deux bits de même poids est à 1 (ou les deux)
                                  9 | 12 (1001 | 1100)  => 13 (1101)
       ^ OU exclusif Retourne 1 si l'un des deux bits de même poids est à 1 (mais pas les deux)
                                  9 ^ 12 (1001 ^ 1100)  => 5 (0101)
       ~ Complément (NON) Retourne 1 si le bit est à 0 (et inversement)
                                  ~9 (~1001)            => 6 (0110)
    
       srand() initialise le générateur de nombres aléatoires avec seed
       microtime() retourne le stimestamp Unix avec les microsecondes.
    
       rand($Min,$Max) Appelée sans les options $Min et $Max ,
       rand retourne un nombre pseudo-aléatoire entre 0 et RAND_MAX
    
    */
    //-----------------------------------------------------------------
    // $bEncrypt === TRUE  => cryptage
    // $bEncrypt === FALSE => décryptage
    function EnCrypt($Text,$Cle, $bEnCrypt = FALSE, $RandMin = 0, $RandMax = 64000)
    {  $bCrypt = ($bEnCrypt === TRUE) ? FALSE : TRUE;
       while (TRUE)
       {  if ($bCrypt === TRUE)
          {  $KeyForCrypt = md5($Cle);
             $Text = ($bEnCrypt === FALSE)? base64_decode($Text) : $Text;
          }
          else
          {  srand((double)microtime()*1000000);
             $KeyForCrypt = md5(rand($RandMin,$RandMax));
          }
          for ($StrOut = "", $Cpt=0, $Pos=0; $Pos < strlen($Text); $Pos++, $Cpt++)
          {  $Cpt = ($Cpt == strlen($KeyForCrypt))? 0 : $Cpt;
             $StrOut .= ($bCrypt === FALSE)? substr($KeyForCrypt,$Cpt,1): "" ;
             $StrOut .= substr($Text,$Pos,1) ^ substr($KeyForCrypt,$Cpt,1);
          }
          if ($bCrypt === TRUE)
             break;
          $Text   = $StrOut;
          $bCrypt = TRUE;
       }
       if ($bEnCrypt === TRUE)
          return base64_encode($StrOut);
       for ($String = "", $Cpt = 0, $Pos = 1; $Pos <= strlen($StrOut); $Pos+=2, $Cpt+=2)
             $String.= (substr($StrOut,$Pos,1) ^ substr($StrOut,$Cpt,1) );
       return $String;
    }
    //-----------------------------------------------------------------
     
    //Exemple de l'appel à la fonction EnCrypt:
    $Cle = "Forum_des développeurs_PHP";
    $Text = "Mon_adresse_email@Web.net";
    $Crypt = EnCrypt($Text,$Cle,TRUE,0,1000);
    $Decrypt = EnCrypt($Crypt,$Cle);
    echo "\nTexte original [".strlen($Text)."]: $Text <Br>";
    echo "\nCle [".strlen($Cle)."]: $Cle <Br>";
    echo "\nTexte crypté[".strlen($Crypt)."] : $Crypt <Br>";
    echo "\nTexte décrypté[".strlen($Decrypt)."] : $Decrypt <Br>";
    $Crypt1 = EnCrypt($Text,$Cle,TRUE);
    $Decrypt1 = EnCrypt($Crypt1,$Cle);
    echo "\nTexte crypté[".strlen($Crypt1)."] : $Crypt1 <Br>";
    echo "\nTexte décrypté[".strlen($Decrypt1)."] : $Decrypt1 <Br>";
    ?>

  4. #44
    Membre régulier

    Profil pro
    Inscrit en
    Février 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 10
    Points : 108
    Points
    108
    Par défaut programmation récursive php
    Bonjour, ci-dessous un exemple de programmation récursive
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    ////////////////////////////////////////////////////////////////
    //programmation récursive en php:
    //enregistrement de l'aborescence des dossiers à partir de la directory 'www'
    //dans un tableau:
    //  appel de la fonction EnumFolders() qui retourne un tableau décrivant les 'path' des dossiers
    //  appel de la fonction AffichFolders qui affiche le tableau  des dossiers
    //note: l'enregistrement de l'arborescence permet de tracer un graphe, de déterminer  le 'path'
    //      pour atteindre un dossier à partir d'un autre dossier.
    ///////////////////////////////////////////////////////////////
    function AffichFolders($ArrayFolders,$Pos = 0)
    {
       for ($Space = '', $i = 1; $Pos > 0 && $i <= $Pos; $i++)
             $Space .= "&nbsp;";
       foreach ($ArrayFolders as $Key=>$Value)
       {  $Head = '['.$Key.'] = ';
          if (is_array($Value) && !empty($Value))
          {  if (is_array($Value[0]))
                AffichFolders($Value[0],strlen($Head) + $Pos);
             else
                echo $Space.$Head.$Value[0].'<br>';
             AffichFolders($Value[1],strlen($Head) + $Pos);
          }
          else
             echo $Space.$Head.$Value.'<br>';
       }
    }
     
    ////////////////////////////////////////////////////////////////////////////////
    function EnumFolders($Node)
    {  $ArrayFolders = array();
       $Count        = 0;
       if ($Dir = opendir($Node)) //open Ditectory
       {  while($File = readdir($Dir))  //open Directory
          {  $Nodebase = basename($File);
             if ($Nodebase=="." || $Nodebase=="..")
                continue;
             // La fonction is_dir() renvoit toujours faux si le handle acquit avec opendir()
             // n'est pas à partir du dossier courrant(getcwd) ;
             // l'exception s'applique à « . » et « .. ».
             $NewNode = $Node.'/'.$File;
             if(is_dir($NewNode))
                $ArrayFolders[$Count] = array($File,EnumFolders($NewNode));
             else
                $ArrayFolders[$Count] = $File;
             $Count++;
          }
       }
       closedir($Dir);
       return $ArrayFolders;
    }
    /////////////////////////////////////////////////////////////////
    $DirRoot = dirname($_SERVER['PHP_SELF']);
    $Pos     = strpos($DirRoot,'www');
    if ($Pos === FALSE)
    $Dirwww = ($Pos === FALSE)? '.' : $Dirwww = substr($DirRoot,0,$Pos + 3);
     echo "<br> Directory: '".$Dirwww."'<br>";
           $ArrayFolders = EnumFolders($Dirwww);
           AffichFolders($ArrayFolders);
    ?>

  5. #45
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut Envoyer un mail avec pièce jointe
    • Télécharger PhpMailer ici.
    • Vérifier que cette classe soit à la racine de son programme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    <?php
    require_once('class.phpmailer.php');
    $expediteur=@$_POST['expediteur'];
    $destinataire=@$_POST['destinataire'];
    set_time_limit(0);
     
    if(!empty($destinataire)){
      $mail = new PHPmailer();
      $mail->IsHTML(true);
      $mail->FromName='';
      $mail->From=$expediteur;
      $mail->AddAddress($destinataire);
      $mail->AddReplyTo($expediteur);    
      $mail->Subject=@$_POST['subject'];
      $mail->Body=htmlentities(@$_POST['message']);
      if(isset($_FILES['attach']))
        if(is_uploaded_file($_FILES['attach']['tmp_name']))
          $mail->AddAttachment($_FILES['attach']['tmp_name'],$_FILES['attach']['name']);
      if(!$mail->Send())
        echo $mail->ErrorInfo; else
        echo 'Mail envoyé avec succès.'
      echo '<br/>';
      unset($mail);  
    }
    ?>
     
    <form method="post" action="" enctype="multipart/form-data">
      Expéditeur: <input type="text" name="expediteur" value=""/><br/>
      Destinataire: <input type="text" name="destinataire" value=""/><br/>
      Sujet: <input type="text" name="subject" value=""/><br/>
      Message: <br/>
      <textarea cols="54" rows="16" name="message"></textarea><br/>
      Pièce jointe: <input name="attach" type="file"/>
      <input type="hidden" name="MAX_FILE_SIZE" value="2000000"/><br/>
      <br/>  
      <input type="submit" value="Envoyer"/><br/>
    </form>
    Note : La taille de la pièce jointe est limitée à 2Mo en général.

    En complément de cette source, voici 2 tutoriels :
    http://antoine-herault.developpez.co...ls/php/upload/
    http://stephaneey.developpez.com/tut...php/phpmailer/
    à+
    De retour parmis vous après 10 ans!!

  6. #46
    Membre régulier

    Profil pro
    Inscrit en
    Février 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 10
    Points : 108
    Points
    108
    Par défaut Les formulaires dynamiques (multi-pages) en php
    Bonjour,
    Je viens de terminer la nouvelle version (25/06/2007).
    Cette version gère le téléchargement de fichiers et d'images ainsi que l'envoi des ces fichiers et images en pièces jointes.
    Pour chaque champ ou chaque page, l'utilisateur peut ajouter des fonctions callback pour ajouter des contrôles personnalisés.
    En cas d'erreur, un debug_backtrace est affiché et est envoyé à l'auteur.
    Cette version présente un exemple de formulaire pour saisir une adresse
    postale:
    Pour la France et les DOM-TOM: vous pouvez soit:
    - Sélectionner une ville en précisant les premiers caractères
    du nom de la ville puis valider pour sélecter la ville souhaitée
    - Sélectionner une ville en précisant les premiers caractères
    du code postal (département) puis valider pour sélecter la ville souhaitée
    - Sélectionner un code poatal en précisant la ville
    puis valider pour sélecter le code postal<br>
    (lorsque la ville existe dans plusieurs codes postaux)
    La ville, le code postal et le pays (si France ou DOM-TOM seront affichés)
    Les numeros de telephone sont verifiés pour la France, les DOM-TOM, les
    USA, le Canada et les pays voisin de la CEE (Allemagne, Royaume Uni,
    Suisse, Espagne, Belgique, Monaco, etc..).
    Les numeros de Mobile sont verifiés pour la France, les DOM-TOM et
    l'Espagne.

    Ci-joint:
    les scripts et la documentation sont en libre téléchargement:
    (le fichier .zip excède la taille réglementaire) sur la page:
    http://www.pierre-laur.fr/Demo.php
    [URL="[URL="http://www.pierre-laur.fr/Demo.php"]RL]"]RL]
    Fichiers attachés Fichiers attachés

  7. #47
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 184
    Points : 77
    Points
    77
    Par défaut échantillon de texte
    Amis codeurs bonjour!

    En passant une petite fonction que j'ai humblement développé qui permet d'extraire un échantillon d'un texte sans couper le dernier mot du String en deux (le premier paramètre est la longueur max du string au final, et le second est votre String contenant votre texte) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function sampleString($maxLengthStr, $txt){
     
    		$txt = strip_tags($txt);
     
    		if(strlen($txt) < $maxLengthStr){
    			$maxLengthStr /= 2;
    		} 
     
    		  $txt = substr($txt, 0, $maxLengthStr);
    		  $lastWord = strrchr($txt, " ");
    		  $txt = substr($txt, 0, strlen($txt) - strlen($lastWord));
     
    		  return $txt;
    	}
    à noter qu'on enlève avec "strip_tags()" toute balise html, pour éviter qu'une fois cet échantillon placé dans du code html, les balises éventuellement non fermées ne viennent interférer avec le reste du code html.


  8. #48
    Membre éclairé Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    Par défaut
    c'est normal, ca?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(strlen($txt) < $maxLengthStr){
    			$maxLengthStr /= 2;
    		}
    Je ne vois pas bien l'intérêt... Si le texte à afficher est plus petit que le nombre max de caractères, ben tant mieux, non?

  9. #49
    Membre régulier

    Profil pro
    Inscrit en
    Février 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 10
    Points : 108
    Points
    108
    Par défaut Les formulaires en php (nouvelle release)
    Bonjour, ci-dessous la doc de la nouvelle release.
    Le test des scripts, la doc (US et FR) ainsi que les scripts sont en téléchargement sur la page
    http://www.pierre-laur.fr

    Merci de la sanction, Laurpierre
    en pièce jointe la doc en français
    Fichiers attachés Fichiers attachés

  10. #50
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 184
    Points : 77
    Points
    77
    Par défaut
    haltabush, çe n'est pas important ce qui compte c'est le reste du code

  11. #51
    Membre éclairé Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Points : 876
    Points
    876
    Par défaut
    Je viens de finir une petite fonction pour vérifier la validité d'une page, il existe peut être d'autre moyen, merci alors de m'en faire part
    (Utilise le module libcurl)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    function check_url($url)
    {
    	$ch = curl_init();
     
    	curl_setopt($ch, CURLOPT_URL, $url);
    	curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
    	curl_setopt($ch, CURLOPT_TIMEOUT, 5);
    	curl_setopt($ch, CURLOPT_HEADER, true);
    	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
     
     
    	$data = curl_exec($ch);
    	if (!$data) {
    		$ret = false;
    	} else {
    		$data = str_replace("\r", "", $data);
    		list($header, $data) = explode("\n", $data, 2);
     
    		$state = explode(' ', $header);
    		$state = $state[1];
     
    		if ($state != '200' && $state != '301' && $state != '302') {
    			$ret = false;
    		} else {
    			$ret = true;
    		}
    	}
    	curl_close($ch);
     
    	return $ret;
    }

  12. #52
    Membre régulier

    Profil pro
    Inscrit en
    Février 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 10
    Points : 108
    Points
    108
    Par défaut Traitement des erreurs avec Trace sur fichier Log
    Posté le: 15 Mar 2007, 13:23 Sujet du message: Trace des erreurs et écriture sur un fichier log 'Trace.log'

    --------------------------------------------------------------------------------

    Bonjour,
    Ci-joint un exemple permettant de voir un trace des fonctions qui ont abouti à une erreur. Le trace est écrit dans le fichier "Trace.log" du répertoire couurant.
    Cet exemple est opérationnel avec php5. Pour le rendre opérationnel avec php4, il est nécessaire de modifier les balise /*#V5*/ par /*#V5__ et /*#V4__ par /*#V4*/.
    La class Obj_Trace est la classe qui gère l'écriture des fonctions appelées ainsi que les valeurs des différents paramètres.
    La class Obj_GetObject permet d'accéder à toutes les attributs private ou protected des class dérivées de Obj_GetObject.
    En fin de script, un exemple permet de tester ce script (division par zéro)
    Fichiers attachés Fichiers attachés

  13. #53
    Membre averti
    Profil pro
    Ingénieur en électronique
    Inscrit en
    Septembre 2004
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur en électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 419
    Points : 333
    Points
    333
    Par défaut
    Script qui requière , l'extension GD !!!

    Redimentionner une image , en conservant ses proportion
    Ceci peux servir pour une galerie .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    <?php
    //les nom que l'on souhaite 
    $image="./tt.jpg";
    $imagem="tt2.jpg";//.JPG , pour la mignature . 
    //mesure de la taille 
    $size=getimagesize($image);
    $largeur=$size[0];
    $longeur=$size[1];
     
    //La grandeur seras au maximum de 150x150
    if($largeur>$longeur)
    	{
    	$x=150;
    	$y=$longeur*$x/$largeur;
    	}
    else
    	{
    	$y=150;
    	$x=$largeur*$y/$longeur;
    	}
     
     
    $source = imagecreatefromjpeg("$image");
    $destination = imagecreatetruecolor($x, $y); 
    $largeur_source = imagesx($source);
    $hauteur_source = imagesy($source);
    $largeur_destination = imagesx($destination);
    $hauteur_destination = imagesy($destination);
     
    // On crée la miniature
    imagecopyresampled($destination, $source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, $largeur_source, $hauteur_source);
    imagejpeg($destination, $imagem);
    // Pour observer le résultat , on peux supprimer .. 
    echo"<img src=\"$image\"><br><br><img src=\"$imagem\">";
    ?>

  14. #54
    Membre régulier Avatar de Rodrick
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2005
    Messages : 92
    Points : 83
    Points
    83
    Par défaut Conversion Des Caractères Spéciaux Dans Une Base De Données Mysql
    Ce script convertit les caractères spéciaux tel que les simple quote ou les accents ... dans tous les champs d'une base de données MySQL avec la fonction htmlentities.

    Le script prend en compte s'il y a plusieurs clés primaires mais s'il y en a aucune dans une table il passera à la table suivante.
    Il prend aussi en compte seulement les champs qui ne sont pas numériques.
    Si des personnes pouvaient me conseiller pour réduire le temps d'execution.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    <?php
    $serveur = "localhost";
    $user = "root";
    $pwd = "";
    $bd = "test";
    $conx = mysql_connect($serveur,$user,$pwd);
    mysql_select_db($bd,$conx);
    set_time_limit(0);
     
    // Liste les tables
    echo "<h3>Conversion des caractères spéciaux</h3>";
    $listtable = mysql_list_tables($bd);
    while ($ntable=mysql_fetch_array($listtable))
    {
       $tpssleep = 0;
       $tps0 = time() ;
       $nomtable= $ntable[0];
       $sql = "SELECT * FROM `$nomtable`";
       $req = mysql_query($sql);
       // Liste de tous les champs
       $i=0;
       $pkey = "";
       $chp ="";
       while ($i < mysql_num_fields($req)) {
             $resf=mysql_fetch_field($req,$i);
             // Liste de toutes les clés primaires et des champs non numériques
             if ($resf->primary_key==1){
                if (!empty($pkey))
                   $pkey .= "|";
                $pkey .= $resf->name  ;
             }
             if ($resf->numeric==0){
                if (!empty($chp))
                   $chp .= "|";
                $chp .=  $resf->name ;
             }
             $i++;
       }
       if ((!empty($chp)) && (!empty($pkey))){
          // Création de la requete de modification
          $clepri = explode("|",$pkey);
          $chp2=explode("|",$chp);
          while($res=mysql_fetch_array($req)){
              $reqU="UPDATE `$nomtable` SET ";
              $reqW= "`$clepri[0]`='" . $res[$clepri[0]] . "'";
              if (count($clepri)>1){
                 $nbrechp= count($clepri);
                 for ($i=1;$i<$nbrechp;$i++)
                     $reqW.= ",`$clepri[$i]`='" . $res[$clepri[$i]] . "'";
              }
              $reqS = "`$chp2[0]`='" . htmlentities($res[$chp2[0]], ENT_QUOTES) . "'";
              if (count($chp2)>1){
                 $nbrechp= count($chp2);
                 for ($i=1;$i<$nbrechp;$i++)
                     $reqS.= ",`$chp2[$i]`='" . htmlentities($res[$chp2[$i]], ENT_QUOTES) . "'";
              }
              $reqU .= $reqS . " WHERE " . $reqW;
              mysql_query($reqU);
          }
          $tpssleep = 5;
       }
       $tps = time() - $tps0;
       echo "<h4>TABLE : $nomtable fait en $tps secondes</h4>";
       sleep($tpssleep);
    }
    ?>
    Allez une tite bière et au boulot!!!

  15. #55
    Membre confirmé Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Points : 625
    Points
    625
    Par défaut Formulaire (HTML/PHP/JS) de contact
    Auteur : dj-julio (JuLi0)
    Utilité : Vous pouvez l'intégrer directement à vos sites web afin d'offrir un espace permettant l'envoi de message de la part des visiteurs.

    Il faut au préalable avoir une base de données (mysql) contenant la table :
    renseignements(id, date, nom, prenom, email, message) (id = autoIncrement et clé primaire, date = DATETIME, message=Texte).

    Il y a 2 pages à mettre sur le serveur :
    Je colle le code ci dessous également :

    gencode.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <?php
    header ("Content-type: image/jpeg");
     
    // Ici on choisit la taille largeur, hauteur
    $im = imagecreate (30,20);
     
    // Choix des couleurs ici ça donne du Gris
    $background_color = imagecolorallocate ($im, 217, 196, 29);
     
    // Choix de la couleur de la police, ici Noir
    $ecriture_color = imagecolorallocate ($im, 180, 80, 31);
     
    //on récupère le texte généré du formulaire
    //et sa position taille police,vertical, horizontal
    imagestring ($im, 10, 3, 2, $_GET['code'] , $ecriture_color);
    imagejpeg($im);
    ?>
    form_contact.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    <?php
    session_start();
    //Ne rien écrire avant le "session_start();"
    /*
    Formulaire de demande de renseignements.
    * Connexion à une base Mysql
    * Système anti-flood
    * Envoi de la demande par mail
    
    **Prerequis ==> Avoir une base SQL contenant une table : RENSEIGNEMENTS(id, date, nom, prenom, email, message) (id = autoIncrement et clé primaire, date = DATETIME, message=Texte)
    
    */
    //Remplissez ici vos informations de connexion.
    $server="serveur.SQL";
    $pass="pass.SQL";
    $base="base.SQL";
    $user="utilisateur.SQL";
     
    $destinataire="VotreMail@Serveur.extension"; //Entrez ici le mail qui recevra les messages
     
     
    mysql_pconnect($server, $user, $pass);
    mysql_selectdb($base); 
     
    if (isset($_POST['txtMsg']))
    {
        if($_SESSION['jeton']==$_POST['jeton']) //Système anti-flood
        {
            if($_POST['verifCode']==$_POST['verifCode2']) //a chaque refresh de la page, un nouveau jeton est créée et comparé à celui qui est en session.
            {
                $jeton=md5(uniqid(mt_rand(), true));  //Création du jeton.
                $_SESSION['jeton']=$jeton;    //Mise en session du jeton
     
                $mail=mysql_real_escape_string($_POST['txtMail']);            
                //Vérification de l'adresse email
                $carOK   = '[-a-z0-9!#$%&\'*+\\/=?^_`{|}~]';   // caractères autorisés avant l'arobase
                $domain = '([a-z0-9]([-a-z0-9]*[a-z0-9]+)?)'; // caractères autorisés après l'arobase (nom de domaine)
     
                $regex = '/^' . $carOK . '+' .   // Une ou plusieurs fois les caractères autorisés avant l'arobase
                '(\.' . $carOK . '+)*' .         // Suivis par zéro point ou plus
                                                // séparés par des caractères autorisés avant l'arobase
                '@' .                           // Suivis d'un arobase
                '(' . $domain . '{1,63}\.)+' .  // Suivis par 1 à 63 caractères autorisés pour le nom de domaine
                                                // séparés par des points
                $domain . '{2,63}$/i';          // Suivi de 2 à 63 caractères autorisés pour le nom de domaine
     
                // test de l'adresse e-mail
                if (preg_match($regex, $mail)) {    } 
                else {    $mail=""; }
     
                $nom=mysql_real_escape_string($_POST['txtNom']);                
                $prenom=mysql_real_escape_string($_POST['txtPrenom']);
                $msg=mysql_real_escape_string($_POST['txtMsg']);
                $civilite=mysql_real_escape_string($_POST['civilite']);
     
                $DateEnvoiMysql=Date("Y-m-d H:i:s");
     
                $reqInsert="INSERT INTO  renseignements (date, civilite, nom, prenom, email, message) VALUES ('".$DateEnvoiMysql."', '".$civilite."', '".$nom."', '".$prenom."', '".$mail."', '".$msg."')";
                $reqInsert=mysql_query($reqInsert);
     
                $affichMail = "";
                if($mail!="")
                {
                    $affichMail = '<br>Email du demandeur : '.stripslashes($_POST['txtMail']).'<br>';
                }
                $Date = date("d-m-Y");
                $Heure = date("H:i");
                $Mail  = 'Le '.$Date.' &agrave; '.$Heure.', vous avez re&ccedil;u une demande de renseignements !';
                $Mail .= '<br><br><strong>De : '.$_POST['civilite'].' '.stripslashes($_POST['txtNom']).', '.stripslashes($_POST['txtPrenom']).'</strong>'.$affichMail.'<br>';
                $Mail .= '<br><strong>Message : </strong><br>';
                $Mail .= nl2br(stripslashes($_POST['txtMsg']));
     
                //Préparation de l'en-tête du mail.
                $Headers = "";
                if ($mail!="")
                {
                    $mailDemandeur = mysql_real_escape_string($_POST['txtMail']);
                    $Headers .= "From: <$mailDemandeur>\n";
                }
                $Headers .= "X-Mailer: PHP\n";
                $Headers .= "Content-Type:text/html;charset=iso-8859-1\n";
                $Headers .= "Content-Transfer-Encoding: 8bit\n";
     
                //Envoi du mail avec la fonction mail() du php.
                if (mail($destinataire, "Demande de renseignements", "$Mail", "$Headers"))         {     $_SESSION['envoimail']="OK";    } //Sur la page accueil.php (page vers laquelle on est redirigé
                else    {        $_SESSION['envoimail']="BAD";    } //En lisant la valeur envoimail qui est en session, il est possible d'afficher si le message a bien été envoyé ou non.
                echo "<b>Le message à bien été envoyé, merci.</b>";
     
                //Redirection en javascript 
                echo "<SCRIPT LANGUAGE='JavaScript'>\r\nfunction redirect() {\r\n window.location='accueil.php'\r\n }\r\n setTimeout('redirect()',1); \r\n </SCRIPT>\r\n";
                //Il est également possible de la faire comme cela :
                //print '<META http-equiv="refresh" content="0;URL=accueil.php">';
            }
            else    {
                echo "<b>Erreur de code de sécurité, veuillez recommencer.</b>";
            }
        }
        else    {
            $jeton=md5(uniqid(mt_rand(), true));
            $_SESSION['jeton']=$jeton;
        }
    }
    else {
        $jeton=md5(uniqid(mt_rand(), true));
        $_SESSION['jeton']=$jeton;
    }
    ?>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <script language="javascript">
    function VerifCP() {
        if(isNaN(document.formulaire.txtCP.value))    {
            alert("N'utilisez que des chiffres pour le code postal.");
            document.formulaire.txtCP.value = "";
            document.formulaire.txtCP.focus();
            return false;
        }
    }
     
    function NbreCaractRestants() {    
        var maxlimit=300;
        if (document.formulaire.txtMsg.value.length > maxlimit)     {
            document.formulaire.txtMsg.value = document.formulaire.txtMsg.value.substring(0, maxlimit);
        }
        else    {
            document.formulaire.txtCompteur.value = maxlimit - document.formulaire.txtMsg.value.length;
        }
    }
     
    function Validation()    {
        var j="stop";    
        for (var i=0;i<=2;i=i+1)    {    
            if(document.formulaire.civilite[i].checked==true)        {        
            var j="ok";        }
        }
        if(j=="stop")    {
            alert ('veuillez sélectionner votre civilité');
            document.formulaire.civilite[0].focus();
            return false;
        }
        if(document.formulaire.txtNom.value == "")    {
            alert ('veuillez entrer votre nom');
            document.formulaire.txtNom.focus();
            return false;
        }
        if(document.formulaire.txtPrenom.value == "")    {
            alert ('veuillez entrer votre prénom');
            document.formulaire.txtPrenom.focus();
            return false;
        }
     
        if(document.formulaire.txtMsg.value == "")    {
            alert ('veuillez laisser un message');
            document.formulaire.txtMsg.focus();
            return false;
        }
     
        if(document.formulaire.verifCode.value!=document.formulaire.verifCode2.value)    {
            alert ('Vous avez entré un mauvais code, veuillez recommencer.');
            document.formulaire.verifCode.focus();
            return false;
        }
     
        else    {
            return true;
        }
    }
    </script>
    <link rel="stylesheet" media="screen" type="text/css" title="feuille_css" href="style.css" />
    <style type="text/css">
    .Style1 {font-size: x-small}
    .Style2 {font-size: 30px}
    input {    -moz-border-radius: 10px; }
    input.bouton {     border:2px outset black; font-weight:bold; cursor: pointer; }
    input.bouton:hover{ }
    input.bouton:active{ }
    input.champsMajuscule {    text-transform: uppercase; }
    #verifCode {  text-transform:uppercase; }
    </style>
     
    <link href="style.css" rel="stylesheet" type="text/css">
    <title>TITRE DE LA PAGE - Renseignements</title><table width="80%"  border="0" align="center" cellpadding="0" cellspacing="0">
      <tr>
        <td><div align="center"><strong><br>          
          <span class="H1"> &nbsp;Demande de renseignements&nbsp;</span><br>
          <br>
        </strong></div></td>
      </tr>
    </table>
    <table width="80%"  border="0" align="center" cellpadding="0" cellspacing="0">
      <tr>
        <td><form action="" method="post" name="formulaire" id="formulaire" onSubmit="return Validation();">
            <table width="400"  border="0" align="center" cellpadding="0" cellspacing="0">
              <tr>
                <td width="32%">
                  <div align="center">
                    <label>Madame              
                    <input type="radio" name="civilite" value="Madame">
                    </label>
                  </div></td>
                <td width="33%">
                  <div align="center">
                    <label>Mademoiselle              
                    <input type="radio" name="civilite" value="Mademoiselle">
                    </label>
                  </div></td>
                <td width="35%"><p align="center"><label>Monsieur              
                    <input type="radio" name="civilite" value="Monsieur">
                    <br>
                    </label>
                  </p></td>
              </tr>
            </table>
            <br>
            <table width="400"  border="0" align="center" cellpadding="0" cellspacing="0">
              <tr>
                <td><label><strong>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Nom </strong>
                    <input name="txtNom" type="text" class="champsMajuscule" id="txtNom" size="10">
                </label>              <label><strong>Prénom </strong><input name="txtPrenom" type="text" class="Capitale" id="txtPrenom" size="15">
                </label></td>
              </tr>
            </table>
            <br>
            <table width="400"  border="0" align="center" cellpadding="0" cellspacing="0">
              <tr>
                <td><label><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Email</strong>
                    <input name="txtMail" type="text" id="txtMail" size="30">
                </label></td>
              </tr>
            </table>
            <br>
            <table width="400"  border="0" align="center" cellpadding="0" cellspacing="0">
              <tr>
                <td colspan="2"><label><strong>&nbsp;&nbsp; Message </strong><textarea name="txtMsg" cols="30" rows="4" wrap="PHYSICAL" id="txtMsg" OnKeyPress="return NbreCaractRestants();"></textarea>
                    <strong>            </strong> </label>              </td>
              </tr>
              <tr>
                <td width="21%">&nbsp;</td>
                <td width="79%">Il vous reste :
                  <input name="txtCompteur" type="text" disabled id="txtCompteur" value="300" size="3" maxlength="3">
    &nbsp; caract&egrave;res </td>
              </tr>
            </table>
            <table width="80%"  border="0" align="center" cellpadding="0" cellspacing="0">
              <tr>
              </tr>
            </table>
            <div align="center"><br>
            <?php
            //Création de l'image de sécurité
    function cle() {
        //nombre de chiffres total
        $taille=3;
     
        //chaîne utilisée, on peut rajouter des lettres
        $chiffre="123456789";
        srand(time());
     
        for ($i=0;$i<$taille;$i++)    {    
            //on mélange le tout
            $key.=substr($chiffre,(rand()%(strlen($chiffre))),1);
        }    
        return($key);
    }
    $code = cle();                            
    ?>
    <img src="gencode.php?code=<?php echo $code; ?>"> Code de s&eacute;curit&eacute;, &agrave; recopier ici 
      <input name="verifCode" type="text" class="input0" id="verifCode" size="3" maxlength="3">
      <input type="hidden" name="verifCode2" value=<?php echo $code; ?>>
      <input type="hidden" name="action" value="submit">
      <p>
        <input name="btnEnvoi" type="submit" id="btnEnvoi" value="Envoyer" class="bouton">
              <strong>
              <input name="jeton" type="hidden" id="jeton" value="<?php echo $jeton; ?>">
              </strong></p>
            </div>
          </form>      
          </td>
      </tr>
    </table>
    </html>
    J'espère voir cette source sur la page des codes sources du site
    N'hésitez pas à me contacter en cas de problème avec celle-ci.

    @+

  16. #56
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2006
    Messages : 188
    Points : 151
    Points
    151
    Par défaut Renvoi JSON d'une requete
    Ce script renvoi le resultat d'une requête en JSON sous forme d'un tableau de tableaux. On peut y accéder en javascript par la suite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    function jsonResult($res){
    	$nbCol = mysql_num_fields($res);
     
    	$jsonString = '{ "Results" : [';
    	while($champs = mysql_fetch_array($res)){
     
    		$jsonString .= '[';
    		for($i = 0 ; $i < $nbCol ; $i++){
    			$jsonString .= '"'$champs[$i].'",';
    		}
    		$jsonString = substr($jsonString, 0, (strlen($jsonString) - 1));
    		$jsonString .= '],';
    	}
     
    	$jsonString = substr($jsonString, 0, (strlen($jsonString) - 1));
    	$jsonString .= ']}';
     
    	return utf8_encode($jsonString);
    }
    Pierre : abusé, regarde par la fenêtre, les gosses ils passent leur vie à faire du vélo dehors ...
    tom : ils ont pas de pc ou quoi ?

  17. #57
    Membre actif Avatar de JmL40
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 348
    Points : 246
    Points
    246
    Par défaut Intégration FEUILLE EXCEL dans une PAGE WEB
    Bonjour,

    Ce script permet d'intégrer facilement des feuilles Excel dans vos page web. Il est entièrement pesonnalisable.

    Pour intégrer ces feuilles Excel, le script génère un fichier excel contenant des données contenues dans une BD MySQL. Le fichier génère sera ensuite ouvert dans la page web correspondante. En fin d'execution, ce fichier excel sera supprimer.

    Variante :

    - Il est possible d'ouvrir un fichier excel quelconque en précisant le chemin d'accès, sans prendre en compte la création d'un fichier xls.

    - Il est possible de conserver le fichier générer en vue d'une autre utilsation

    Avantages :

    L'intégration d'une feuille excel dans une page web permet de mettre à disposition tous les outils de filtrage, de calcul que propose Excel au sein de page web.



    -------------------- Voici le code associé --------------------

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    //====================================
    // INFORMATIONS DE CONNEXION A LA  BASE DE DONNEES
    //====================================
     
    // information pour la connection à le DB
    $host = 'localhost';
    $user = 'root';
    $pass = '';
    $db = 'dbname';
     
    // connection à la DB
    $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
    mysql_select_db($db) or die ('Erreur :'.mysql_error());
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    //====================================
    // CREATION DU FICHIER EXCEL (VIERGE)
    //====================================
     
    // Pour des raisons pratiques et si le script est exécuter fréquemment on peut attribuer la dâte et l'heure à ce fichier
    /*$date = date("Y-m-d-H-i-s"); 
    $Fichier = $date;*/
     
    // sinon on attribut un nom en dur, ici test.xls
    fopen("test.xls","w+");  
    $file = ("test.xls"); 
     
    //on ouvre le fichier 
    if(!$myfile = fopen($file, "w+"))     
    {
         print("erreur: ");
         print("'$Fichier' n'existe pas!\n");
         exit;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    //====================================
    // REQUETE DE SELECTION DES DONNES (BD MYSQL)
    //====================================
    // on selectionne les enregistrements
    	$sql = "SELECT NomLignee From TbLigIdentite"; 
    	$req = mysql_query($sql,$link);
    Le traitement et l'intégration des données se fait grâce à un TABLE (et oui !) et grâce à la fonction fwrite().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    //====================================
    // TRAITEMENT DES DONNEES ET INTEGRATION DANS LA FEUILLE EXCEL
    //====================================
    // on fait une boucle qui va faire un tour pour chaque enregistrement  
    $i=0;
    $Nmax = 1000; // nombre par page
    $Ncur = 0; // n° de la fiche courante
    $Ndeb = 0; // 1ère fiche transmise par l'URL
     
    $text1 = "<table border = 1><tr>
    <td width=\"500\" height=\"100\" valign=\"top\"><font size=\"4\" face=\"Arial\"><b><strong>Colonne 1</strong></b></font></td>
    <td width=\"500\" height=\"100\" valign=\"top\"><font size=\"4\" face=\"Arial\"><b><strong>Colonne 2</strong></b></font></td>
    <td width=\"500\" height=\"100\" valign=\"top\"><font size=\"4\" face=\"Arial\"><b><strong>Colonne 3</strong></b></font></td>
    <td width=\"500\" height=\"100\" valign=\"top\"><font size=\"4\" face=\"Arial\"><b><strong>Colonne 4</strong></b></font></td>
    </tr>";
     
    fwrite($myfile,$text1,strlen($text1));
     
    while(($data = mysql_fetch_array($req,$link)) && ($Ncur<$Nmax+$Ndeb)) {
       if($Ncur>=$Ndeb) {
     
    		$donnees1=$data["data1"];
    		$donnees2=$data["data2"];
    		$donnees3=$data["data3"];
    		$donnnes4=$data["data4"];
    		$donnees5=$data["data5"];
     
    $text2 = "<table border = 1><tr>
    <td width=\"50\" valign=\"top\"><font size=\"2\" face=\"Arial, Helvetica, sans-serif\"><b>$donnees1</b></font></td>
    <td width=\"50\" valign=\"top\"><font size=\"2\" face=\"Arial, Helvetica, sans-serif\"><b>$donnees2</b></font></td>
    <td width=\"50\" valign=\"top\"><font size=\"2\" face=\"Arial, Helvetica, sans-serif\"><b>$donnees3</b></font></td>
    <td width=\"50\" valign=\"top\"><font size=\"2\" face=\"Arial, Helvetica, sans-serif\"><b>$donnees4</b></font></td>
    <td width=\"50\" valign=\"top\"><font size=\"2\" face=\"Arial, Helvetica, sans-serif\"><b>$donnees5</b></font></td>
    </tr></table>";
     
    }
       // une de plus
       $Ncur++;
       fwrite($myfile,$text2,strlen($text2));
     
    }
     
    //fermeture fichier
    fclose($myfile);   //on ferme le fichier
    chmod ("test.xls", 0777);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    //====================================
    // INTEGRATION DU FICHIER DANS LA PAGE WEB
    //====================================
    <html xmlns:v="urn: schemas-microsoft-com:vml"
        xmlns:o="urn:schemas-microsoft-com:office:office"
        xmlns:x="urn:schemas-microsoft-com:office:excel"
        xmlns="-//W3C//DTD HTML 4.0//EN">
    <body>
       <object id="MySpreadsheet">
    	 <param name="src" value="test.xls" ><a href="test.xls">EXPORTER</a>
     
       </object>
    </body>
    </html>
     
    <?php $erreur = unlink("test.xls"); ?>
    Tout y est, a vos clavier !

    Cordialement
    while (true) echo 'comique';
    Du comique de répétition ...
    Pour des questions de lisibilité, utilisez la balise [code]
    Si votre problème est résolu, n'oubliez pas le tag

  18. #58
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Intégration FEUILLE EXCEL dans une PAGE WEB
    Attention, ce n'est pas compatible avec tous les navigateurs.

  19. #59
    Membre éclairé
    Avatar de genova
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 487
    Points : 790
    Points
    790
    Par défaut
    Petite astuce pour utiliser des constructeurs et destructeurs en PHP4 (Attention, les destructeurs seront cependant appelés en fin de page, et non lors de la description d'un objet - affectation / unset).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    <?php
    /*
    ** Toutes les classes doivent étendre cette classe
    */
    class _model_
    {
    	/*
    	** En PHP4, le constructeur a le nom de la classe.
    	** Etant donné que func_get_args() copie les paramètres (et donc ne garde pas les références),
    	** on utilise une astuce necessitant des paramètres définit, mais pas forcément utilisé.
    	*/
    	function _model_($arg1 = NULL, $arg2 = NULL, $arg3 = NULL, $arg4 = NULL, $arg5 = NULL, $arg6 = NULL, $arg7 = NULL, $arg8 = NULL, $arg9 = NULL, $arg10 = NULL, $arg11 = NULL, $arg12 = NULL)
    	{
    		// Déclaration du destructeur
    		register_shutdown_function(array(&$this, '__destruct'));
     
    		$total = func_num_args();
    		if (!$total)
    		{
    			$this->__construct();
    		}
    		else
    		{
    			// Procédure visant à garder les références des arguments
    			$args = $pass = array();
    			for ($i = 1; $i <= $total && $i <= 12; $i++)
    			{
    				$args[] = &${'arg' . $i};
    				$pass[] = '$arg' . $i;
    			}
     
    			// Appel du constructeur PHP5 manuellement en PHP4
    			eval('$this->__construct(' . implode(', ', $pass) . ');');
    		}
    	}
     
    	/*
    	** En PHP5, __construct() devient le constructeur prioritaire
    	*/
    	function __construct()
    	{
    	}
     
    	/*
    	** Destructeur PHP5, appelé via register_shutdown_function pour PHP4
    	*/
    	function __destruct()
    	{
    	}
     
    	/*
    	** Affichage intéligent d'un objet, valable uniquement pour PHP5
    	*/
    	function __toString()
    	{
    		$str = '<b>Classname :</b> ' . get_class(&$this) . '<br />';
    		$str .= '<b>Properties :</b><ul style="margin: 0">';
    		foreach ($this AS $property => $value)
    		{
    			$str .= '<li><b>' . $property . '</b> = <pre style="display: inline">' . var_export($value, TRUE) . '</pre></li>';
    		}
    		$str .= '</ul>';
     
    		return ($str);
    	}
     
    	/*
    	** Affectation de propriété
    	*/
    	function _set($property, $value)
    	{
    		$this->$property = $value;
    	}
     
    	/*
    	** Valeur d'une propriété
    	*/
    	function _get($property)
    	{
    		if (property_exists(&$this, $property))
    		{
    			return ($this->$property);
    		}
    		return (NULL);
    	}
    }
     
    /*
    ** Implémentation du clonage d'objet en PHP4
    */
    if (version_compare(phpversion(), '5.0') < 0)
    {
        eval('function clone($object){return($object);}');
    }
    ?>
    A l'utilisation c'est très simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    <?php
    include('class/model.php');
     
    class Database extends _model_
    {
    	var $id;
     
    	function __construct($server, $login, $pass, $database)
    	{
    		$this->id = mysql_connect($server, $login, $pass);
    		mysql_select_db($database)
    	}
     
    	function query($sql)
    	{
    		return (mysql_query($sql) OR die(mysql_error()));
    	}
     
    	function __destruct()
    	{
    		mysql_close($this->id);
    	}
    }
     
    $db = new Database('localhost', 'root', '', 'dvp');
    $db->query('SELECT * FROM ma_table');
    ?>
    marchera aussi bien pour PHP4 que PHP5
    Testez le forum Fire Soft Board, un forum libre, gratuit et français.

    Système de template de phpBB - Lisez la FAQ PHP avant toute question si vous débuttez en PHP.

  20. #60
    Membre actif Avatar de JmL40
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 348
    Points : 246
    Points
    246
    Par défaut
    Bonjour,

    J'ai posté, il y a quelques jours une méthode permettant d'intégrer une feuille excel dans une page Web.

    Je vous propose maintenant une nouvelle méthode toujours d'intégration de feuille Excel dans une page web mais plus pratique, et surtout utilisant la classe PHPWRITEEXCEL.

    Le source est disponible ici (Cf Dernier Post):

    http://www.developpez.net/forums/sho...96#post2228896

    La classe PHPWRITEEXCEL peut se télécharger à cet url :

    http://www.bettina-attack.de/jonny/v...hp_writeexcel/
    while (true) echo 'comique';
    Du comique de répétition ...
    Pour des questions de lisibilité, utilisez la balise [code]
    Si votre problème est résolu, n'oubliez pas le tag

Discussions similaires

  1. Page code source, mettez vos sources ici !
    Par gorgonite dans le forum Langages fonctionnels
    Réponses: 157
    Dernier message: 24/02/2013, 22h29
  2. Réponses: 21
    Dernier message: 18/11/2009, 16h08
  3. Réponses: 4
    Dernier message: 14/12/2008, 20h13
  4. Page Code Source, mettez vos codes ici
    Par Bovino dans le forum Contribuez
    Réponses: 8
    Dernier message: 05/12/2008, 12h11
  5. Ajouter des commentaire à vos codes-sources
    Par Zaki_SDwin dans le forum Contribuez
    Réponses: 6
    Dernier message: 17/06/2008, 00h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo