22- PHP ( SESSIONS )

0 commentaires
SESSIONS

Principe :
       Lorsque l'on démarre une session php, le serveur lui affecte un identifiant de session nommé PHPSESSID (abréviation : SID).
       A partir de ce moment toutes les variables de session que vous allez crées dans vos scripts seront soit :
stockées sur le serveur dans un fichier ressemblant à un cookie (mais coté serveur!!). C'est l'option par défaut.

stockées dans une table de base de données que vous aurez créée à cet effet.

stockées dans les mémoires des processeurs du serveur.
Les variables enregistrées comme variables de session sont utilisables dans d'autres scripts. Les sessions vont donc servir au passage de paramètres entre scripts.

 un compteur sur une page
Ce type de compteur fonctionnera si dans php.ini : register_globals = on

<?
session_register("compteur");
$compteur++;
echo "Vous avez consulté la page $compteur fois<br>";
echo "<a href=testsession.php3>cliquez ici pour recommencer</A>"
?>

Ce type de compteur fonctionnera si dans php.ini : register_globals = off

<?
session_register("compte");
$HTTP_SESSION_VARS["compte"]++;
echo "Vous avez consulté la page ". $HTTP_SESSION_VARS["compte"] ."
fois<br>";
echo "<a href=testsession_b.php3>cliquez ici pour recommencer</A>"
?>

un compteur sur plusieurs pages
Script synthese.php3
<?
session_register("compteur1");
session_register("compteur2");
session_register("compteur3");
echo "Vous avez consulté la page 1 : $compteur1 fois<br>";
echo "Vous avez consulté la page 2 : $compteur2 fois<br>";
echo "Vous avez consulté la page 3 : $compteur3 fois<br>";
echo "| <a href=page1.php3>vers page 1</A>" ;
echo " | <a href=page2.php3>vers page 2</A>" ;
echo " | <a href=page3.php3>vers page 3</A> |" ;
?>

Script
<?
session_start();
echo "vous êtes sur la page 1<br>";
$compteur1++;
echo "| <a href=page1.php3>vers page 1</A>" ;
echo " | <a href=page2.php3>vers page 2</A>" ;
echo " | <a href=page3.php3>vers page 3</A> " ;
echo " | <a href=synthese.php3>vers synthese</A>|" ;

?>


Tableau de fonctions et significations

21- PHP ( LES COOKIES )

0 commentaires
LES COOKIES

Objectif :
    Identifier de manière durable un client, un usager du site.
Une grande partie des internautes n'ont pas leur propre adresse ip. Pour accéder à Internet ils utilisent les services d'un fournisseur d'accès (qui leur attribue une adresse ip dynamique) on ne peut donc à la seule vue de l'adresse ip identifier un usager du site.

    Les cookies sont donc des petits fichiers texte stockés sur la machine du client permettant ainsi de le reconnaître.

Cookies et php
Création d'un cookie
       Syntaxe de la fonction : setcookie(name, value,expire,path,domain,secure) Seuls les 3 premiers paramètres sont régulièrement utilisés :

name : nom donné à la variable cookie
value : informations stockées dans le cookie
expire : temps unix pendant lequel sera actif le cookie (s'exprime en secondes)

Dans le cas suivant on crée une variable cookie nommé VISITEUR qui contient l'heure de connection et qui expirera dans 1 heure.

/* création de la variable cookie VISITEUR */
setcookie("VISITEUR",date("d/m/y"),time()+3600)
/* il s'agit d'une variable on peut donc l'utiliser comme telle */
echo "Vous êtes connectés à ".$VISITEUR;

N.B: la fonction setcookie doit être appelée en début de script avant toutes instructions HTML.

N.B: le nom du cookie est écrit en majuscules.

N.B: Le script peut être stocké dans la racine de votre siteau dans ce cas il porte le nom de votre site sinon il porte le nom du dossier dans lequel il se trouve. Le nom du cookie généré sur la machine du client ontiendra de ce fait le nom du domaine visité.

Afficher le contenu d'un cookie
Les cookies sont stockés dans un tableau associatif nommé
$HTTP_COOKIE_VARS.
<?
while($valeur=each($HTTP_COOKIE_VARS)) {
$val_cook=$valeur[1];
echo $val_cook."<br>";
}
?>
Pour afficher un cookie particulier on peut aussi utliser la notation suivante :
echo $HTTP_COOKIE_VARS["nomducookie"];

Détruire un cookie
Il suffit de déclarer le cookie sans autre paramètre que le nom. (a ce moment
là, il va avoir automatiquement une durée de vie à 0)
setcookie("VISITEUR");


Exemple
Dans un premier temps nous allons créer un formulaire demandant son nom à

l'internaute se connectant à notre site.


de ce script existe un lien vers un fichier nommé cookie_lecture.php3 qui :
- affiche à l'écran l'ensemble des cookies
<?
echo "Bonjour ". $HTTP_COOKIE_VARS["INTERNAUTE"];
echo " comment allez vous depuis le ". $HTTP_COOKIE_VARS["DATE"];
?>
Etude du cookie :
(stocké dans le dossier racine du site www.lallias.com)
Sur ie : le cookie va se trouver dans le dossier cookies sous dossier de windows.


- La première valeur (internaute) est le nom du cookie. Notez que le nom du cookie n'est pas le nom du fichier (nom du fichier :
lolo@www.lallias[2].text). Si plusieurs cookies proviennent du même site ils sont tous stockés dans le même fichier (ici cela explique le 2 qui apparaît dans le nom : lolo@www.lallias[2].txt )
- La seconde valeur (Auguste+Laurence) est la valeur assignée au cookie.
- La troisième valeur (www.lallias.com/) indique d'où provient le cookie et par quel site il est utilisé.

Supprimer les 2 cookies :
Il serait possible de supprimer ces cookies tres simplement en demandant :

<?
setcookie("INTERNAUTE");
setcookie("DATE");
?>

20- PHP ( FONCTIONS MYSQL PHP )

0 commentaires
LISTE DE QUELQUES FONCTIONS MYSQL PHP

mysql_close :
int mysql_close (int link_identifier)
Retourne TRUE en cas de succès, et FALSE sinon.
mysql_close() ferme la connexion au serveur MySQL associée à l'identifiant link_identifier . Par défaut, s'applique à la dernière connexion ouverte.

NB : Cette commande n'est pas strictement nécessaire, car toutes les connexions non persistantes seront automatiquement fermées à la fin du script.

mysql_connect
int mysql_connect (string host :port, string username, string password )
Retourne un identifiant positif de connexion en cas de succès, et sinon FALSE.
mysql_connect() établit une connexion à un serveur MySQL. 3 arguments sont nécessaires pour une connection, host, username, password. Tous les arguments sont optionnels, et s'ils manquent, les valeurs par défaut sont utilisées. Le lien sera fermé lors de la fin du script automatiquement ou avec mysql_close().

host : c'est le nom d'hôte sur lequel notre base Mysql est hebergée. Par défaut le nom "localhost" sera utilisé. Le nom d'hôte peut aussi inclure un numéro de port, sous la forme : "host:port". (à partir de la version 3.0B4.)
username : c'est le nom de login autorisé à ouvrir une connexion sur cette base de donnée. Par défaut le nom du propriétaire du process sera utilisé.
password : c'est le mot de passe associé au login pour cet utilisateur de la base de donnée Par défaut le mot de passe vide sera utilisé.

N.B: Si un second appel à mysql_connect() est fait avec les mêmesarguments, PHP n' ouvre pas une nouvelle connexion, mais retourne l'identifiant de la connexion déjà ouverte.

Exemple MySQL connect
<?php
$link = mysql_connect ("kraemer", "marliesle", "secret")
or die ("Connexion impossible");
print ("Connexion réussie");
mysql_close ($link);
?>

mysql_fetch_row :

array mysql_fetch_row (int result)
Retourne un tableau énuméré qui correspond à la ligne demandée, ou FALSE si il ne reste plus de ligne.

mysql_fetch_row() va rechercher une ligne dans le résultat associé à l'identifiant de résultat spécifié. La ligne est retournée sous la forme d'un tableau. Chaque colonne est enregistré sous la forme d'un tableau
commençant à la position 0.

Les appels suivants à mysql_fetch_row() retourneront la ligne suivante dans le résultat, ou FALSE si il n'y a plus de ligne disponible.

mysql_query
int mysql_query (string query, int link_identifier )
mysql_query() retourne TRUE ou FALSE, pour indiquer le succès ou l'échec d'une requête SQL de type INSERT, DELETE ou UPDATE.

mysql_query() retourne un identifiant (pointeur) pour manipuler le résultat d'une requête SQL de type SELECT.
N.B: En cas de retour TRUE, la requête était valide et a pu être exécuté sur le serveur. Cela n'indique pas le nombre de ligne affectées, ou retournées.

Il est parfaitement possible qu'une requête valide n'affecte aucune ligne ou ne retourne aucune ligne.
mysql_query() envoie une requête SQL à la base de données actuellement active sur le serveur MysQL. Si link_identifier n'est pas précisé, la dernière connexion est utilisée. Si aucune connexion n'a été ouverte, la fonction tentera d'en ouvrir une, avec la fonction mysql_connect() mais sans aucun paramètre (c'est à dire avec les valeurs par défaut).

mysql_num_rows
int mysql_num_rows (int result)
mysql_num_rows() retourne le nombre de ligne d'un résultat.

mysql_select_db :
int mysql_select_db (string database_name, int link_identifier )
Retourne TRUE en cas de succès, FALSE sinon.

   mysql_select_db() change la base de données active sur la connexion représentée par l'identifiant de connexion. Si aucun identifiant n'est spécifié, la dernière connexion est utilisée. S'il n'y a pas de dernière connexion, la fonction tentera de se connecter seule, avec mysql_connect() et les paramètres par défaut.
  Toutes les requêtes suivantes avec mysql_query() seront faites avec la base de données active.

LISTE DE QUELQUES ELEMENTS SQL MYSQL

Insert:
insère une nouvelle ligne dans une table existante
INSERT INTO $table(chptable1,chptable2…) VALUES ('$varform1','$varform2'…)
$table : représente la variable contenant le nom de la table concernée par l'ajout.
chptable1 : représente les champs de la table qui vont être renseignés.
$varform1 : représente les variables qui sont utilisées pour mettre leur valeur dans la table.

Delete:
Le détail de la requête SQL donne:
DELETE FROM $table WHERE chptable = $identifiant
$table : représente la variable contenant le nom de la table concernée
chptable : représente le champ de la table sur lequel on désire faire la recherche
$identifiant : représente la variable contenant le mot recherché

Update:
UPDATE met à jour une ligne existante dans une table. La clause SET indique quelles colonnes modifier, et quelles valeurs mettre dans ces colonnes. La conditions WHERE permet de choisir quelles lignes sont à mettre à jour. Sinon, toutes les lignes sont mises à jour Le détail de la requête SQL donne:

UPDATE $table SET chptable = $identifiant, WHERE chptable1 = $identifiant1

$table : représente la variable contenant le nom de la table concernée
chptable : représente le champ de la table que l'on souhaite modifier
$identifiant : représente la variable contenant la valeur à utiliser
chptable : représente le champ de la table que l'on souhaite modifier

Select:
La commande SELECT permet de sélectionner des enregistrements dans une table.
Cette commande permet de récupérer tous les champs spécifiés en argument à SELECT dans une table précisée en argument à FROM répondant aux critères indiqués en argument à WHERE.

SELECT [nom_de_colonne, | *]
[FROM table_references
[WHERE where_definition]
[ORDER BY [ASC | DESC]]
[LIMIT [offset,] rows]]

permet de spécifier que l'on conservera tous les champs. Si on désire conserver uniquement certains champs il suffira de donner leurs noms séparés par une virgule.

La clause FROM table_references indique les noms des tables où les lignes seront lues. SI vous utilisez plus d'une table, vous faites une jointure. Pour plus d'informations sur les jointures, voyez JOIN.

La clause WHERE est chargée de spécifier les conditions de recherche. On peut utiliser les opérateurs de comparaison habituels (=, >, <, >=, <=, <>, !>, AND, OR, NOT) mais aussi d'autres opérateurs tels que :

LIKE qui permet de rechercher une chaîne de caractères sans tenir compte de la casse. Avec LIKE vous pouvez utiliser les deux jokers suivants :
% : Remplace n'importe quel nombre de caractères, même zéro
_ : Remplace exactement un caractère
[-] : permet de définir un intervalle de caractères

BETWEEN qui permet de rechercher une valeur dans un intervalle.

IN permet de rechercher une valeur dans une liste
La clause ORDER BY est destinée au tri par ordre croissant (asc) ou décroissant (desc) des réponses.

La clause LIMIT peut être utilisée pour limiter le nombre de lignes retournées par la commande SELECT. LIMIT prend un ou deux arguments numériques. Si deux arguments numériques sont fournis, le premier spécifie l'offset de la première ligne à retourner, et la seconde spécifie le nombre maximum de lignes à retourner. 





19- PHP ===> Insert, Select, Update, Delete

0 commentaires
Trier (Classer) toute la base :

      Si on veut présenter maintenant la table triée par ordre de nom, alors il suffit juste de rajouter à la requête SQL de base un ORDER by nomchamps ASC

Le détail de la requête SQL (cf page 128) donne:

SELECT * FROM $table ORDER by chptable ASC|DESC

$table : représente la variable contenant le nom de la table concernée
chptable : représente le champ de la table sur lequel on désire faire le tri
ASC|DESC : représente l'ordre croissant ou décroissant

/*** On cherche tous les enregistrements ***/
$query = "SELECT * FROM $table ORDER by nom ASC";
et si l'on souhaite avoir uniquement les informations du type genre – nom – adresse mail, il suffira de ne pas traiter tous les éléments du tableau renvoyé par mysql_fetch_row()…

while($row = mysql_fetch_row($result))
{
/** on affiche le genre, le nom, l'email **/
echo "
<p>\n
<b>$row[4] $row[2] $row[3]</b>\n
<p>\n
";
}

    Maintenant que l'on sait créer une base MySQL et que l'on a vu le principe d'écriture d'une requête SQL à travers la primitive php mysql_query, essayons de traiter un exemple plus complet que le simple affichage du nombre d'enregistrements existants dans une table.

Afficher toute la base dans un tableau (1° variante):
Pour présenter mieux le résultat on utilise un tableau HTML

<?
Include("connection.php3");
/*** On cherche tous les enregistrements ***/
$query = "SELECT * FROM $table";
/*** envoi de la requête à la base ***/
$result = mysql_query($query);
echo "<Table>";
while($row = mysql_fetch_row($result))
{
$id=$row[0];
$nom=$row[1];
$prenom=$row[2];
$email=$row[3];
$genre=$row[4];
echo "<tr>
<td width=22%>$id</td>
<td width=22%>$genre</td>
<td width=22%>$nom</td>
<td width=22%>$prenom</td>
<td width=34%>$email</td>
</tr>";
}
echo "</Table>";
/*** on ferme la connexion ***/
mysql_close();
?>

Afficher toute la base dans un tableau (2° variante):
Pour encore mieux présenter le résultat on utilise un tableau HTML avec des couleurs alternées automatiquement pour chaque ligne, ce qui s'obtient relativement facilement à l'aide de variables statiques, c'est à dire gardant leur valeur d'un appel à l'autre...
On avait déjà vu cet effet dans le cours sur les variables statiques (page 47 ), il n'y a donc pas grand chose à dire de plus...

function couleur()
{
static $couleur;
if ($couleur == "#dddeee")
{
$couleur = "#add8e6";
}
else
{
$couleur = "#dddeee";
}
return ($couleur);
}
puis dans le code
while($row = mysql_fetch_row($result))
{
$couleuractive = couleur();
$id=$row[0];
$nom=$row[1];
$prenom=$row[2];
$email=$row[3];
$genre=$row[4];
/** on affiche le id, legenre, le nom, le prenom, l'email **/
echo "<tr BGcolor=$couleuractive>
<td width=22%>$id</td>
<td width=22%>$genre</td>
<td width=22%>$nom</td>
<td width=22%>$prenom</td>
<td width=34%>$email</td>
</tr>";
}

    il faut déclarer la fonction couleur() faire un appel à chaque itération et se servir de la couleur pour la ligne du tableau HTML


Rechercher un enregistrement :

      On veut proposer à l'utilisateur la recherche d'un enregistrement qui contient une certaine valeur soit dans le champ nom soit dans le champ prenom...
Il faut créer un formulaire permettant la saisie du nom ou prénom à rechercher


Supprimer un enregistrement :
On veut proposer à l'utilisateur la suppression d'un enregistrement qui correspond à une valeur du champ identificateur...
Il faut créer un formulaire permettant la saisie du n° de l'enregistrement à supprimer


La création du formulaire HTML se passant sans problème (en form_supprime.htm). Il faut créer un script permettant la suppression de l'enregistrement correspondant au numéro saisi Par rapport à un script de sélection classique quelques modifications du code apparaissent.


 La requête sql : DELETE
Le détail de la requête SQL donne:

DELETE FROM $table WHERE chptable = $identifiant
$table : représente la variable contenant le nom de la table concernée
chptable : représente le champ de la table sur lequel on désire faire la recherche
$identifiant : représente la variable contenant le mot recherché.

Le détail de la requête SQL donne:

UPDATE $table SET chptable = $identifiant, WHERE chptable1 = $identifiant1
$table : représente la variable contenant le nom de la table concernée
chptable : représente le champ de la table que l'on souhaite modifier
$identifiant : représente la variable contenant la valeur à utiliser
chptable : représente le champ de la table que l'on souhaite modifier
UPDATE : met à jour une ligne existante dans une table. La clause SET indique quelles colonnes modifier, et quelles valeurs mettre dans ces colonnes. La condition WHERE permet de choisir quelles lignes sont à mettre à jour. Sinon, toutes les lignes sont mises à jour

Compléments SELECT - Filtrer une base :
     Maintenant que l'on a vu un certain nombre de manipulation de la base mysql, on peut décider de filtrer un peu les renseignements obtenus. Cela se fait bien sur à l'aide de l'instruction SELECT (cf page 128) que nous connaissons déjà…

    Mais nous pouvons aussi introduire ici une nouvelle fonction php permettant de compter le nombre d'enregistrements dans un résultat de requête. Il s'agit de la fonction php : mysql_numrows() (voir page 125)

Comme dans l'exemple ci-dessous
$query="SELECT * from $table ";
$result = mysql_query($query);
$nbenreg=mysql_numrows($result);

       Dans les extraits de script ci dessus, une requête est envoyée grâce à l'instruction mysql_query et le résultat de cette requête est stocké dans la variable $result. mysql_numrows permet de compter le nombre
d'enregistrements sélectionnés. Essayez les !

Exemple 1 :
Sélection de tous les enregistrements de la table
$query="SELECT * from $table ";
$result = mysql_query($query);
$nbenreg=mysql_numrows($result);

Exemple 2 :
Sélection de tous les enregistrements de la table dans lesquels nom=Blier
$query="SELECT * from $table where nom='Blier' ";
$result = mysql_query($query);

Exemple 3 :
Sélection de tous les enregistrements de la table dans lesquels nom commence par Du…
$query="SELECT * FROM $table where typevel like 'Du%'";
$result = mysql_query($query);

Exemple 4 :
Sélection de tous les enregistrements de la table dans lesquels nom commence par Du… et dont le genre est Madame
$query="SELECT * FROM $table where ((nom like 'Du%') AND
(genre='Madame'))";
$result = mysql_query($query);

Exemple 5 :
Sélection de tous les enregistrements de la table dans lesquels les ventes sont comprises entre 5000 et 7000
$query="SELECT * FROM $table where (ventes BETWEEN 5000 AND 7000)";
$result = mysql_query($query);

Exemple 6 :
Sélection de tous les enregistrements de la table dans lesquels figurent Mathieu et Boully
$query="SELECT * FROM $table where nom IN ('Blier', 'Durand')";
$result = mysql_query($query);

Exemple 7 :
Sélection de tous les enregistrements de la table dans lesquels
commercial=Mathieu mais récupération uniquement de la valeur des ventes
et des régions concernées
$query="SELECT vente,region FROM $table Where nom='Blier' ";
$result = mysql_query($query);



www.2rattrapage.blogspot.com
Copyright 2013 © 2 Rattrapage