afficher des données externes sur son site

Eléphanteau du PHP | 14 Messages

06 juil. 2012, 21:22

Bonjour à tous,
je suis un gros débutant en php, mon niveau :je bidouille des bouts de codes sur mon site joomla et phpbb !!!
je n'ai jamais développer de script, mais je souhaite profiter de l'occasion pour enfin m'y mettre et bénéficier de vrais conseils!

Mon objectif: Afficher des données d'une application externe qui envoie des données en utilisant la methode POST ou GET
Ma question: comment faire pour :
1-receptionner les données sur mon site ( envoyées depuis l'application externe sous la forme http://monsiteweb.com/script.php?donnee1=0&donne2=1........ avec la methode GET)
2-Stocker les données temporairement (je suppose qu'il faut les stocker quelque part)
3-Afficher les données dans un tableau HTML

je pense que ce que je cherche a faire s'apparente à un parseur mais je ne sais pas par où commencer!
je pense qu'il doit bien exister un ptit bout de code qui pourrait m'aider?

Merci encore pour votre aide

Eléphanteau du PHP | 14 Messages

07 juil. 2012, 09:10

Apres de bonnes lectures nocturnes, je pense avoir capté quelques trucs,mais pas très sur au sujet des durées de vie des variables

Donc admettons que je configure mon appli externe pour qu'elle envoie les infos via url en utilisant la méthode GET , et qu'à la racine de mon site, j'ai créé un fichier identite.php

identite.php
<html>
<body>
<?
$_nom = $_GET['Nom'];  
$_prenom = $_GET['Prenom'];   
echo $_nom."";   
echo $_prenom;   
?>
</body>
</html>
Si je fais générer l'envoi a mon appli de http://www.monsite.com/identite.php?nom ... renom=Jean , les variables seront elles conservées jusqu'à la prochaine mise à jour et visibles par tous les client de mon site s'ils tapent http://www.monsite.com/identite.php ?

Ca me semble trop simple pour que ca marche comme ca! :D

ViPHP
xTG
ViPHP | 7331 Messages

07 juil. 2012, 09:42

Non en effet, les variables disparaissent à la fin du script.
Il faut utiliser un stockage des données pour la persistance de ces dernières.
Une fichier ou une base de données. ;)

Et petit conseil au passage, évites d'utiliser les short_tags, ils ne sont plus activés sur PHP5 et supérieur.
Remplaces donc <? par <?php

Eléphanteau du PHP | 14 Messages

07 juil. 2012, 10:09

Merci xTG , donc si je comprend bien, les 2 "echo" ne servent à rien et je dois les remplacer par un "truc" qui enregistre mes variables passées par url dans un fichier?(genre un $docXML ? je suis un vrai débutant! )

ViPHP
xTG
ViPHP | 7331 Messages

07 juil. 2012, 10:30

Tu peux commencer par voir pour l'écriture dans un fichier, et si ton système grossi te pencher sur la modélisation d'une base de données.
http://phpdebutant.org/article58.php
(je te recommande de lire les autres articles sur le menu de droite, tu apprendras plein de chose :D)

Eléphanteau du PHP | 14 Messages

07 juil. 2012, 10:46

merci xTG

Non, ça ne grossira pas car mes données sont "temporaires" et seront écrasées à chaque nouvel envoi par url des données par l'application externe ( pour info, les variables envoyées sont des infos de statut à un instant T et mises à jour régulièrement)

Donc l'écriture dans un fichier est tout à fait la solution qu'il me faut!

Je vais me pencher sur le lien que tu m'as donné et je viendrai poster mes retours!

Eléphanteau du PHP | 14 Messages

07 juil. 2012, 11:29

Est-ce que ce script semble propre?
<?php

$date = utf8_encode(date("d/m/Y"));
$nom = utf8_encode($_POST['Nom']);
$prenom = utf8_encode($_POST['Prenom']);

$data='&date= '.$date.' & &nom= '.$nom.'& &prenom= '.$prenom.' &';
$fichierstatut= fopen('statut.txt','r+');
fputs($fichierstatut,$data);
fclose($fichierstatut);
?>

ViPHP
xTG
ViPHP | 7331 Messages

07 juil. 2012, 11:40

Avant d'utiliser des données en provenance d'un formulaire il faut tester leur existence, c'est plus propre.
Regardes du côté de la fonction isset().
Et il faut toujours vérifier le type de données qu'on reçoit, en gros si tu attends un entier faut pas recevoir un flottant.
Tu as tout un tas de fonctions pour tester cela, mais ma préféré reste encore filter_var().

Eléphanteau du PHP | 14 Messages

07 juil. 2012, 11:48

donc ça devrait ressembler à quelque chose comme ça , correct?
<?php
//1.réception des variables
$date = utf8_encode(date("d/m/Y"));
$nom = utf8_encode($_POST['Nom']);
$prenom = utf8_encode($_POST['Prenom']);

//2.Test de l' existence des variables -si ok: étape 3

//3. Verification du Format - si ok: étape 4

//4.Ecriture des données des variables dans un fichier texte
$data='&date= '.$date.' & &nom= '.$nom.'& &prenom= '.$prenom.' &';
$fichierstatut= fopen('statut.txt','r+');
fputs($fichierstatut,$data);
fclose($fichierstatut);
?>

ViPHP
xTG
ViPHP | 7331 Messages

07 juil. 2012, 11:53

Avant la récupération on teste l'existence, c'est mieux dans ce sens. :P

Eléphanteau du PHP | 14 Messages

07 juil. 2012, 12:11

<?php

//1.Test de l' existence des variables -si ok: étape 2 
if(isset($_POST['Nom']) AND isset($_POST['Prenom'])){

//2.Réception des variables
$date = utf8_encode(date("d/m/Y"));
$nom = utf8_encode($_POST['Nom']);
$prenom = utf8_encode($_POST['Prenom']);
}



//3. Verification du Format - si ok: étape 4
if(filter_var($nom, FILTER_VALIDATE_INT) AND ($prenom, FILTER_VALIDATE_INT)!== false)){
//4.Ecriture des données des variables dans un fichier texte
$data='&date= '.$date.' & &nom= '.$nom.'& &prenom= '.$prenom.' &';
$fichierstatut= fopen('statut.txt','r+');
fputs($fichierstatut,$data);
fclose($fichierstatut);
}
?>
Comme ça pour le test? et si la condition n'est pas remplie, comment faire pour lui dire de ne rien faire? Rien faire est ce une action par défaut si la condition n'est pas remplie?
Il commence à y avoir des lignes! je vais attraper le vertige! en tout cas merci pour ton aide!

ViPHP
xTG
ViPHP | 7331 Messages

07 juil. 2012, 13:24

Pour ne rien faire il suffit d'englober tout le reste du traitement dans le if.
Ainsi si la condition n'est pas respectée il ne rentre pas dans le if et donc il ne fait rien. ;)

ViPHP
AB
ViPHP | 5818 Messages

07 juil. 2012, 16:59

Remarque : Evites d'utiliser AND. C'est l'opérateur "&&" qui suit la règle de la logique commune, pas le AND. Dans bien des cas le résultat est identique mais pas toujours :
echo '<pre>';
$a = 1;
$b = null;
$c = isset($a) && isset($b);
$d = ( isset($a) AND isset($b) );
$e = isset($a,$b);
$f = isset($a) AND isset($b);
var_dump($a, $b, $c, $d, $e, $f); 
echo '</pre>';

résultat : 
int(1)
NULL
bool(false)
bool(false)
bool(false)
bool(true)

Eléphanteau du PHP | 14 Messages

11 juil. 2012, 10:49

Bonjour
j'arrive bien à générer un fichier XML que je lis ensuite avec un parseur en js et ca fonctionne nickel!
mais j'ai un souci avec l'étape 3: lorsque je fais le test filter_var (mes données sont des entiers), cela ne fonctionne pas!
j'ai cherché un peu partout mais je ne trouve pas de réponse!
<?php

//1.Test de l' existence des variables -si ok: étape 2

if(isset($_GET['Nom']) && isset($_GET['Prenom'])&& !empty($_GET['Nom']) && !empty($_GET['Prenom']));
{

//2.Réception des variables
$date = utf8_encode(date("d/m/Y"));
$nom = utf8_encode($_GET['Nom']);
$prenom = utf8_encode($_GET['Prenom']);
}

//3. Verification du Format "doit être un entier"- si ok: étape 4
if(filter_var($nom, FILTER_VALIDATE_INT) && filter_var($prenom, FILTER_VALIDATE_INT));
//4.Ecriture des données des variables dans un fichier XML
{
$fichierstatut= fopen('statut.xml','w+');
fseek($fichierstatut, 0);
fputs($fichierstatut, '<?xml version="1.0" encoding="UTF-8"?><root><STATUT><date>'.$date.'</date><nom>'.$nom.'</nom><prenom>.$prenom.'</prenom></STATUT></root>);
fclose($fichierstatut);
}
?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

11 juil. 2012, 12:32

salut,

ajoute un var_dump($_GET); avant le if (avec les filter_var) pour voir ce que contient l'url comme "variable".

tu pourras ainsi vérifier que tes données sont (ou non) cohérente avec ce que tu attends (perso nom / prénom qui doivent être des entiers métonne :D ).


+
Il en faut peu pour être heureux ......