Un petit condensé de la grammaire de base du langage php.
Un script php est en général executé à la demande d'un navigateur web. Le serveur reçoit la demande, et execute le script. Les données de sorties de sripts sont renvoyées telles quelles au navigateur, il s'agit donc en général de code html.
On peut aussi au milieu du script php écrire directement du code html, on utilise pour cela les balises ouvrantes et fermantes de php.
Voici un exemple de structure basique d'un code php :
<?php /* Commentaire */ // commentaire mono-ligne include("menu.php"); // inclure une autre page php dans cette page ?> // pour indiquer qu'ici s'arrête le code php, peut suivre du code html <html> <?php echo "<br>"; ?> // facultatif si c'est en fin de page
- VARIABLES -
$variable une valeur est toujours précédée d'un '$'
– CONCATANATION – <?php les “ permettent d'insérer une variable au milieu du texte (' ne le permet pas) $age_du_visiteur = 17; echo “Le visiteur a $age_du_visiteur ans”; ?> <?php méthode alternative, à préferer $age_du_visiteur = 17; echo 'Le visiteur a ' . $age_du_visiteur . ' ans'; ?>
– TRANSCODAGE – $variable1 = (int) $variable2 ; pour forcer la variable 1 en int, si pas possible (ex: string), alors 0..
- CONDITIONS -
if (== AND > OR < >= ⇐ ! {
...
} elseif {
...
} else { } — <?php astuce qui permet d'insérer facilement du code php sans la fonction echo if ($variable == 23) { ?> <strong>Bravo !</strong> Vous avez trouvé le nombre mystère ! <?php } ?> — switch ($note) on indique sur quelle variable on travaille { case 0: dans le cas où $note vaut 0
echo "Tu es vraiment un gros Zér0 !!!"; break; defaut: echo '...';
} ne marche pas avec les comparaison > == etc.. ———– - BOUCLES - ———– while (condition) { instructions } for ( $i=1 ; $i⇐100 ; $i++) {
//instructions
}
- FONCTIONS -
– EXEMPLE DE FONCTIONS PRATIQUES – strlen($phrase) retourne la longueur d'une chaine de caractère str_replace('c','d',$chaine) remplace une chaine de caractère par une autre strtolower($chaine) convertit la chaine en miniscule date('Y'/m/d/H/i) renvoie l'année, le mois, le jour, l'heure, la minute
– CREATION DE FONCTION – function Nom(paramètres) {
//Instructions
}
- TABLEAUX -
$variable = array (,
..) on décrit le tableau ds son intégralité en une seule fois
$variable[0] = '..'; on choisi le contenu de chaque case
$variable[] = .. ; on laisse php créer la numérotation
echo $variable[i] ; on doit tjs préciser la case pour exploiter les infos
– TABLEAU ASSOCIATIF – $coordonnees = array ( création du tableau asociatif
'prenom' => 'François', 'nom' => 'Dupont');
$coordonnees['prenom'] = 'François'; aute moyen de créer un tableau associatif echo $coordonnees['ville']; utilisation du tableau
– PARCOURIR UN TABLEAU – utiliser une boucle for foreach($prenoms as $element) {..} le contenu de chaque ligne du tableau est stocké dans $element foreach($coordonnees as $cle ⇒ $element) pour récupérer la clé et l'élement
– AFFICHER RAPIDEMENT UN TABLEAU – echo '<pre>'; il faut rajouter les balises <pre> pour avoir les retours à la ligne entre chaque élément du tableau print_r($coordonnees); echo '</pre>';
– RECHERCHE DANS UN TABLEAU – array_key_exists vérifier si une clé existe dans le tableau in_array vérifier si une valeur existe dans le tableau array_search pour récupérer la clé d'une valeur dans un tableau
- TRANSMETTRE DES DONNEES D'UNE PAGE A L'AUTRE -
– AVEC UNE URL – page.php?param1=valeur1¶m2=valeur2 Concept '&' '&' en HTML, '&' doit être écrit '&' dans les href $_GET['param1'] la variable $_GET[] contient les valeurs écrites dans l'url isset($_GET[]) fonction qui teste si la variable existe
– AVEC UN FORMULAIRE – $_POST['nom'] procéder aux précautions d'usage concernant des infos venant de l'utilisateur
– ECHAPPER DU CODE HTML – htmlspecialchars($_POST[]) fonction php qui dit fait que les balises HTML contenues dans $_POST[] ne s'executent pas, mais sont affichées comme du texte strip_tags() fonction qui retire les balises HTML au lieu de les executer (ou les afficher par htmlspecialchars() )
– FICHIER PAR FORMULAIRE – $_FILES['nom'] le fichier est stocké dans un dossier temporaire, il faut le “vérifier” avant de le stocker définitivement : $_FILES['nom'][attribut] on utilise les attributs suplémentaires suivants : name nom du fichier type indique le type de fichier, par exemple image/gif size indique la taille en octet (pas plus de 8Mo, limité par php ..) tm_name contient l'emplacement temporaire error contient le code d'erreur de transfert, 0 = pas d'erreur pathinfo($_FILE[][name]) renvoie un array avec le nom et l'extension, ds la va $infosfichier = pathinfo($_FILES['monfichier']['name']); $extension_upload = $infosfichier['extension']; $extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png'); if (in_array($extension_upload, $extensions_autorisees)); move_upload_file() lorsque tt est bon, on déplace le fichier vers son emplacement définitif
- VARIABLES SUPERGLOBALES -
– SESSION – – COOKIES –
- LIRE ET ECRIRE DS UN FICHIER -
– OUVRIR ET FERMER LE FICHIER – $monfichier = fopen('nomfichier',attribut) permet d'ouvrir le fichier fclose($monfichier) permet de fermer le fichier attribut peut prendre les valeurs suivantes : r lecture seule r+ lecture/ecriture a écriture seule (si le fichier n'existe pas, il est créé !) a+ ecriture/lecture (fichier créé si inexistant)
– LIRE – fgetc() lire caractère par caractère fgets() lire ligne par ligne
– ECRIRE – fputs() écrit une ligne dans le fichier
– LOCALISATION DS LE FICHIER – il y a un curseur qui indique à php ou on en est ds le fichier, lecture et ecriture utilise le même curseur fseek($monfichier, 0) repositionne le curseur au début
- INTERAGIR AVEC UNE BASE DE DONNEES -
on utilisera PDO, en utilisant de la POO
– SE CONNECTER A LA BDD –
$bdd = new PDO('mysql:host=localhost;dbname=test','root',);
et pour tester la présence d'erreur (et ne pas les afficher par défaut sur la page :
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root',
,$pdo_options);
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
– EFFECTUER UNE REQUETE (LIRE DES DONNEES) – $reponse = $bdd→query('Tapez votre requête SQL ici'); retourne la réponse de Mysql, inexploitable directement en php $donnees = $reponse→fetch(); parcourt la requête, ligne par ligne (curseur virtuel, boucle…) while ($donnees = $reponse→fetch()) fetch() renvoie false lorsqu'il n'y a plus de données {
$donnees['nomColonne'];
} $reponse→closeCursor(); indique que la requête est terminée, ce qui permet d'effectuer une autre requete sans encombre
– REQUETE AVEC VARIABLE METHODE SECURISEE n°1 : ? – $req = $bdd→prepare('SELECT nom FROM jeux_video WHERE possesseur =?'); $req→execute(array($_GET['possesseur'])); il est possible de mettre plusieurs ?, il faut alors mettre plusieurs variables dans array(xx,yy)
– REQUETE AVEC VARIABLE METHODE SECURISEE n°2 : marqueur nominatif – $req = $bdd→prepare('SELECT nom, prix FROM jeux_video WHERE possesseur = :possesseur AND prix ⇐ :prixmax'); $req→execute(array('possesseur' ⇒ $_GET['possesseur'], 'prixmax'⇒ $_GET['prix_max'])); il faut bien mettre les ':' dans la préparation de la requête devant le marqueur. plus besoin des les donner dans l'ordre :)
– ECRIRE DANS UNE BDD – $bdd→exec('requete Mysql');
– ECRIRE AVEC UNE VARIABLE – mêmes fonctions et mêmes méthodes que pour lire avec une variable
echo mysql_error();
- ENTRE NAVIGATION ET SCRIPT -
header('Location: page.php'); permet de retourner à la page citée