As2 et php

Prémisses

La table des tests

Script de création

CREATE DATABASE cours DEFAULT CHARACTER SET latin1 COLLATE latin1_general_ci;

USE DATABASE cours;

DROP TABLE IF EXISTS villes;

CREATE TABLE IF NOT EXISTS villes (

cp varchar(5) collate latin1_general_ci NOT NULL,

nom_ville varchar(50) collate latin1_general_ci NOT NULL,

PRIMARY KEY (cp)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

INSERT INTO villes (cp, nom_ville) VALUES ('06000', 'Nice'),

('59000', ''),

('69000', 'Lyon'),

('75011', 'Paris'),

('75012', 'Paris'),

('75021', 'Paris 21'),

('75022', 'Paris 22');

Ajouter un enregistrement dans une BD via un formulaire

Objectif

Insérer une nouvelle ville dans la table Villes de la base Cours.

Utiliser LoadVars et send().

Le script PHP

<?php

    $cp = $_REQUEST["cp" * ;

    $nom_ville = $_REQUEST["nom_ville" * ;

    $lien = mysql_connect("localhost","root","");

    mysql_select_db("cours",$lien);

    $ls_insert = "INSERT INTO villes(cp, nom_ville) VALUES('$cp','$nom_ville')";

    mysql_query($ls_insert, $lien);

    if(mysql_errno($lien) == 0) echo "Insertion réussie"; else echo mysql_error($lien);

?>

Syntaxes

Création d'un objet pour les attributs de la requête.

var envoi = new LoadVars();

Création d'un attribut et affectation d'une valeur.

envoi.nom_attribut = valeur;

Exécution de la requête d'envoi de valeurs avec la méthode send().

La méthode send() permet d'envoyer des valeurs.

envoi.send("url", "cible" [, "méthode" * );

L'url est composée du protocole, de l'adresse du serveur, du chemin et du document PHP.

Par exemple : http://localhost/flash_php/villes_ajout.php.

La cible prend les valeurs suivantes : "_self", "_blank", "_parent", "_top".

Les méthodes sont POST ou GET. La méthode POST est la méthode par défaut.

Démarche

Créez un nouveau .fla.

Ajouter des éléments de formulaire (Ctrl/F7).

, ,

Nommez les TextInput tb_cp et tb_nom_ville,

codez.

Code

on(click)

{

    var attributs = new LoadVars();

    

    attributs.cp = _root.tb_cp.text;

    attributs.nom_ville = _root.tb_nom_ville.text;

    attributs.send("http://localhost/flash_php/villes_ajout.php", "_self", "POST");

}

Commentaires

Cette méthode affiche un page HTML suite à l'insertion. Cf les paragraphes suivants avec les résultats dans la scène.

Visualiser un enregistrement d'une table d'une BD

Objectif

Créer une interface permettant de saisir un CP et à partir de celui-ci afficher le nom de la ville correspondante.

Utiliser LoadVars et sendAndLoad().

Le code PHP

<?php

    $cp = $_REQUEST["cp" * ;

    $lien = mysql_connect("localhost","root","");

    mysql_select_db("cours",$lien);

    $ls_sql "SELECT nom_ville FROM villes WHERE cp $cp";

    $rs = mysql_query($ls_sql, $lien);

    if(mysql_errno($lien) != 0) die(mysql_error($lien));

    $enr = mysql_fetch_array($rs);

    echo "nom_ville=" . $enr[0 * ;

?>

Le code PHP doit renvoyer une URL type attribut=valeur.

En test direct dans le navigateur le résultat est :

URL testée Résultat
http://localhost/flash_php/ville_visu.php?cp=59000 nom_ville=Lille
http://localhost/flash_php/ville_visu.php?cp=75011 nom_ville=Paris

Syntaxes

Création d'objets pour les attributs de la requête aussi bien en envoi qu'en réception.

var envoi = new LoadVars();

var resultats = new LoadVars();

Création d'un attribut et affectation d'une valeur.

envoi.nom_attribut valeur; ou resultats.nom_attribut valeur;

Exécution de la requête d'envoi et de récupération de valeurs avec la méthode sendAndLoad().

La méthode sendAndLoad() permet d'envoyer des valeurs et aussi d'en recevoir.

envoi.sendAndLoad("url", resultats, "méthode");

Récupération des résultats.

Il faut que PHP renvoie une URL type attribut=valeur.

La récupération finale est réalisée via une fonction anonyme.

resultat.onLoad = function(success)

A partir du moment où l'on utilise la méthode sendAndLoad() il faut créer une fonction anonyme de callback car il faut temporiser la réception des données du serveur. C'est seulement quand le serveur a renvoyé les données que l'on peut commencer à traiter les résultats. D'où l'utilisation de l'événement onLoad.

Démarche

Créez un nouveau .fla.

Ajoutez un Label, un InputText, un Button, un TextField.

Code

on(click)

{

    var attributs = new LoadVars();

    var resultats = new LoadVars();

    

    attributs.cp = _root.tb_cp.text;

    attributs.sendAndLoad("http://localhost/flash_php/ville_visu.php", resultats, "GET");

    

    resultats.onLoad = function(succes)

    {

        if(succes) _root.tf_nom_ville.text = "Ville : " + resultats.nom_ville;

        else _root.tf_nom_ville.text = "Echec";

    }

}

A la place de this il est possible d'utiliser la variable resultats.

Visualiser une table d'une BD

Objectif

Visualiser les enregistrements de la table Villes de la base Cours.

Le code PHP

<?php

    $lien = mysql_connect("localhost","root","");

    mysql_select_db("cours",$lien);

    $ls_sql = "SELECT cp, nom_ville FROM villes";

    $rs = mysql_query($ls_sql, $lien);

    if(mysql_errno($lien) != 0) die(mysql_error($lien));

    $sCps = "cps=";

    $sVilles = "&noms_villes=";

    while($enr = mysql_fetch_row($rs))

    {

        $sCps .= $enr[0 * . ";";

        $sVilles .= $enr[1 * . ";";

    }

    echo $sCps . $sVilles;

?>

Le résultat renvoyé est celui-ci :

cps=06000;59000;69000;75011;75012;75021;&noms_villes=Nice;Lille;Lyon;Paris;Paris;Paris 21;

donc la requête renvoie deux attributs cps et noms_villes.

Syntaxe

var tableau = chaîne.split("séparateur");

Démarche

Créez un nouveau .fla.

Ajoutez un TextArea nommé ta_villes.

Codez le scénario.

Note : il serait possible de mettre un TextField multiline à la place du TextArea mais il faudrait gérer le défilement vertical avec une barre de défilement ce qui est fait automatiquement avec le TextArea.

Code

var attributs = new LoadVars();

var resultats = new LoadVars();

_root.ta_villes.text = "";

resultats.onLoad = function(success)

{

    if(success)

    {

        var sCps = resultats.cps;

        var sNoms_Villes = resultats.noms_villes;

        var tCps = sCps.split(";");

        var tNoms_Villes = sNoms_Villes.split(";");

        for(i=0; i<tCps.length - 1; i++)

        {

            _root.ta_villes.text += tCps[i * + "-" + tNoms_Villes[i] + "\n";

        }

    }

    else _root.ta_villes.text = "Echec";

}

attributs.sendAndLoad("http://localhost/flash_php/villes_visu.php", resultats, "GET");

Commentaires

Malgré l'abscence d'attributs à envoyer, à la différence des deux précédents scripts, il faut quand même déclarer une variable d'envoi de type LoadVars().

Une erreur survient si l'URL de la requête est erronée ou si le serveur est indiponible mais si une erreur SQL survient aucun affichage. Il faut dans ce cas gérer l'erreur au niveau du PHP.

Cf paragraphe suivant.

Adresse d'origine

A voir également
Ce document intitulé « As2 et php » issu de CodeS SourceS (codes-sources.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
1 Commentaire