PHProject

Un projet ENSISA

Tutorial : Php et Mysql

Le tutorial d’aujourd’hui traitera comme promis de requêtes SQL. Pour vraiment comprendre le principe, nous avons décidé de simuler une vente en ligne avec affichage des articles présents dans la base de donnée. Télécharger la base Ouvrez PHPMyAdmin et insérez le fichier. Il est important d’installer cette base sur votre serveur avec les droits root sans mot de passe, sur l’adresse localhost (tout ceci est par défaut sur WampServer). Venons-en à la connexion à la base : pour cela, nous devons disposer de trois fichiers distincts : connexion.inc.php, connexion.php, parametres.inc.php. Les fichiers disposant d’un inc permettent d’être insérés dans un autre fichier php, en l’occurrence connexion.php. Observons les codes : le code ci-dessous montre les choses suivantes : le fichier de connexion inclut directement un second fichier et lui transmet la variable $id_connex, correspondant au nom de la base ainsi que le nom du second fichier à intégrer, ce qui peut être pratique lors d’un changement de serveur. Enfin, mysql_close($id_connex) fermera la base de donnée.

<?php
include("connexion.inc.php");
$id_connex=connex("magasin","parametres");
echo "$id_connex<br />";
echo mysql_close($id_connex);
?>

On retrouve ci-dessous la variable connex instanciée plus haut avec $base et $param. Suivent les deux fonctions primordiales de php-mysql : @mysql_connect(HOST,USER,PASS) et @mysql_select_db($base). La première permet de se connecter au service mysql, et le second permet de sélectionner la base dans laquelle la requête s’effectuera. De plus, nous avons implémenté une petite fonction permettant d’afficherun message lorsque la base n’est pas trouvée.

<?php
function connex($base,$param)
{
include_once($param.".inc.php");
$idconnexion=@mysql_connect(HOST,USER,PASS);
$choix_base=@mysql_select_db($base);
if(!$idconnexion|!$choix_base)
{
echo "<script type=text/javascript>";
echo "alert('Connexion impossible à la base $base')</script>";
}
return $idconnexion;
}
?>

Le dernier fichier : parametres.php transmet le host, l’utilisateur et le pass, qui est modifiable.

<?php
define("HOST","localhost");
define("USER","root");
define("PASS","");
?>

Enfin, nous devons créer un fichier php qui effectue les requêtes sur la table. L’entête de ce fichier sera le suivant :

include("connexion.inc.php");
$id_connex=connex("magasin","parametres");
$requete="SELECT * FROM article ORDER BY prix";
$result=@mysql_query($requete,$id_connex);

Comme vous pouvez le constater, ici aussi il faut inclure le fichier connexion et transmettre la variable connex. La nouveauté ici, est la requete : il faut l’affecter à une variable (ici $requete), et transmettre celle-ci avec la fonction @mysql_query($requete,$id_connex). Le reste du code n’est qu’une mise en forme du résultat. Je vous invite à télécharger le dossier complet, car nous y avons intégré d’autres fonctions intéressantes, à savoir la recherche de clients dans une base, l’affichage des articles précis de la base… Voilà, vous savez désormais comment requêter une base SQL. Télécharger tutorial mysql

  • 0 Comments
  • Enregistré sous: Non classé
  • Voici le premier tutorial pour utilisateurs avancés : l’upload d’images (ou envoi d’images).
    Ce tutorial est un peu plus complexe que les autres publiés jusqu’à maintenant car il fait appel à une multitude de fonctions que nous tenterons d’éclaircir pour vous. Ce script sera composé de deux fichiers utiles à la gestion d’erreur. Au finale le script sera capable de : reconnaître que le fichier est une image, limiter la taille de l’image, afficher un texte d’upload raté/réussi ainsi que l’image uploadée et le lien static de celle-ci pour l’intégrer à d’autres sites par exemple.
    Débutons par le formulaire :

    Le formulaire d’envoi doit spécifier en action : action=”Envoi_images.php”. Ceci est nécessaire pour spécifier au formulaire que Envoi_images.php sera le fichier qui traitera la commande. Ensuite, nous entrons la taille maximale du fichier. Son type est à « hidden », cela signifie qu’il est invisible à l’utilisateur mais pas pour le serveur. Le reste est du HTML standard.

    <form enctype="multipart/form-data" action="Envoi_images.php" method="POST">
    <input type="hidden" name="MAX_FILE_SIZE" value="5000000">
    <input type="file" name="img" size="50">
    <p><input type="submit" name="envoi" value="Envoyer l'image">
    </form>
    

    Comme tout script PHP avec formulaire, il faut tester si le bouton « envoyer » a bien été cliqué

    if(!isset($_POST['envoi']))
    

    Si envoi a été cliqué, il faut inclure le fichier secondaire pour afficher le formulaire !

    include("formulaire_envoi.inc");
    

    Il paraît évident que si le fichier est trop grand, que ce n’est pas une image, ou qu’il y a eu une erreur quelconque, l’utilisateur doit en être informé

    	if($_FILES['img']['tmp_name'] == "none")
    	{
    		echo "<b>Il y a eu un problème. Soit votre fichier n'est pas une image, soit il dépasse les 5Mo.<br>";
    		include("formulaire_envoi.inc");
    		exit();
    	}
    	if(!ereg("image",$_FILES['img']['type']))
    	{
    		echo "<b>Le fichier n'est pas une image!</b><br>";
    		include("formulaire_envoi.inc");
    		exit();
    	}
    

    Dans le code ci-dessus,$_FILES[’img’][’tmp_name’] == “none” teste si le fichier temporaire créé lors de l’upload est disponible. S’il ne l’est pas, une erreur est survenue! On informe l’utilisateur. Ensuite, le test suivant !ereg(”image”,$_FILES[’img’][’type’]) va essayer de voir si le fichier est une image. «int ereg ( string $pattern, string $string [,array &$regs]): recherche dans la chaîne string les séquences de caractères qui correspondent au masque pattern, en tenant compte de la casse ». (PHP.net)

    Quand tous les tests ont réussis :
    Il faut dorénavant specifier la destination d’enregistrement de l’image : ici nous la mettrons à la racine du dossier dans lequel se trouve le script. Il est également de rigueur de définir un fichier temporaire lors de l’upload.

    $destination = $_FILES['img']['name'];
    $fichier_temporaire = $_FILES['img']['tmp_name'];
    

    « move_uploaded_file ( string $filename , string $destination ) s’assure que le fichier filename est un fichier téléchargé par HTTP POST. Si le fichier est valide, il est déplacé jusqu’à destination. Ce type de vérification est spécialement important s’il est possible que les fichiers téléchargés révèlent leur contenu à l’utilisateur, ou même aux utilisateurs du même système ». (PHP.net)

    move_uploaded_file($fichier_temporaire,$destination);
    

    Enfin, les quelques lignes supplémentaires sont uniquement pour la commodité de l’utilisateur : confirmation de l’envoi avec taille de fichier, affichage de l’image envoyée, affichage du lien statique de l’image (attention, ici l’image es stockée dans ../fich/upload/image.jpg, ce qui peut différer sur votre serveur!)

    echo "<p><b>L'image a bien été envoyée: </b>{$_FILES['img']['name']} ({$_FILES['img']['size']} octets)</p>";
    echo "<img src=".$destination." width='400' />";
    echo "<p>Le lien de l'image est: http://".$_SERVER["SERVER_NAME"]."/fich/upload/".$destination;
    echo "<p> <a href='Envoi_images.php'>retour</a>";
    

    Télécharger Envoi d’images

  • 0 Comments
  • Enregistré sous: Tutorial