Titre du sujet : Re: Utiliser l'api allociné dans xoopstube par seboseboss sur 26/12/2014 22:15:41
Salut
Cette fois, j'ai presque terminé, il me reste 1 problème à résoudre:
J'ai donc fait une première page pour soumettre le titre et chercher tout les résultats correspondant:
<?php
/**
* $Id: allocine.php
* Module: XoopsTube
*/
include 'header.php';
include XOOPS_ROOT_PATH . '/header.php';
include XOOPS_ROOT_PATH . '/class/xoopsformloader.php';
global $xoopsModule, $xtubemyts, $xoopsModuleConfig;
$alloform = new XoopsthemeForm(_MD_XTUBE_ALLOFORM_SEARCHTITLE, 'alloform', 'allosearch.php');
$alloform->addElement(new XoopsFormText(_MD_XTUBE_ALLOFILM_TITLE, 'filmtitle', 70, 255), false);
$button_tray = new XoopsFormElementTray('', '');
$button_tray->addElement(new XoopsFormButton('', 'submit', _SUBMIT, 'submit'));
$alloform->addElement($button_tray);
$alloform->display();
$xoopsTpl->assign('module_dir', $xoopsModule->getVar('dirname'));
include XOOPS_ROOT_PATH . '/footer.php';
?>
avec superman par exemple, ce qui nous envois à la 2e page avec les résultats:
<?php
/**
* $Id: allosearch.php
* Module: XoopsTube
*/
include 'header.php';
include XOOPS_ROOT_PATH . '/header.php';
require_once XOOPS_ROOT_PATH . '/api-allocine/api-allocine-helper.php';
global $xoopsModule, $xtubemyts, $xoopsModuleConfig;
// Construct the object
$helper = new AlloHelper;
echo '<h1>' . _MD_XTUBE_ALLOFORM_TITLE . '</h1>';
?>
<html><div class="xoopstube_cadreblock" style="overflow: auto; margin-left: 5%; margin-right: 5%;"></html>
<?php
$profile = 'small';
if (isset($_POST['submit'])) {
try {
// Envoi de la requête
$film = $_POST['filmtitle'];
$arrayMovie = $helper->search($film)->getArray();
$nombreResult = $arrayMovie['count'];
echo "<div class='xoopstube_descrblock' style='float: left; display: inline-block;'> $nombreResult résultat(s) de film(s) pour <font color=orange>$film</font></div><br /><br />";
foreach ($arrayMovie['movie'] as $key) {
if (isset($key['title']))
echo '<div class="xoopstube_descrblock" style="float: left; width: 190px; margin: 5px;margin-bottom: 20px; padding: 2px; font-size: 90%; text-align: center;"><span><img src="' . $key['poster'] . '" style="width: 190px; height: 260px; align: left;"></img></span>
<span><font style="color: orange;">' . $key['title'] . '</font><br />
<form action="alloinfos.php" method="POST">
<input type="hidden" value="'.$key['code'].'" name="filmcode">
<input type="submit" value="Selectionner">
</form></span></div>';
else
echo $key['originalTitle'] . "<br>";
}
?>
<html></div><div class="xoopstube_cadreblock" style="overflow: auto; margin-left: 5%; margin-right: 5%; margin-top: 10px;"></html>
<?php
$nombreResultSerie = $arrayMovie['results'][4]['$'];
echo "<div class='xoopstube_descrblock' style='float: left; display: inline-block;'> $nombreResultSerie résultat(s) de série(s) pour <font color=orange>$film</font></div><br /><br />";
foreach ($arrayMovie['tvseries'] as $key) {
if (isset($key['title']))
echo '<div class="xoopstube_descrblock" style="float: left; width: 190px; margin: 5px;margin-bottom: 20px; padding: 2px; font-size: 90%; text-align: center;"><span><img src="' . $key['poster'] . '" style="width: 190px; height: 260px; align: left;"></img></span>
<span><font style="color: orange;">' . $key['title'] . '</font><br />
<form action="alloinfos.php" method="POST">
<input type="hidden" value="'.$key['code'].'" name="filmcode">
<input type="submit" value="Selectionner">
</form></span></div>';
else
echo $key['originalTitle'] . "<br>";
}
}
catch (ErrorException $error) {
// En cas d'erreur
echo "Erreur n°", $error->getCode(), ": ", $error->getMessage(), PHP_EOL;
}
}
?>
<html></div></html>
<?php
$xoopsTpl->assign('module_dir', $xoopsModule->getVar('dirname'));
include XOOPS_ROOT_PATH . '/footer.php';
?>
Il suffit de cliquer sur la description qui nous intéresse pour envoyer le code film, ce qui nous renvoi à une nouvelle page qui contient le détail des infos et les enregistre dans la base de données si elles n'étaient pas déja présente.
Si les infos existaient déja, un message le précise:
<?php
/**
* $Id: alloinfos.php
* Module: XoopsTube
*/
include 'header.php';
include XOOPS_ROOT_PATH . '/header.php';
require_once XOOPS_ROOT_PATH . '/api-allocine/api-allocine-helper.php';
// Créer l'objet
$helper = new AlloHelper;
//Pour plus de clareté, on définit les paramètres à l'avance: le code du film, et la quantité d'informations à récupérer.
$code = $_POST['filmcode'];
$profile = 'medium';
//Ensuite, il est conseillé d'effectuer des requêtes dans un bloc try{} catch(){} pour gérer les erreurs.
try
{
// Envoi de la requête
$data = $helper->movie( $code, $profile );
//Convertir la durée en hh:mm:ss
$total = $data->runtime; //Nombre de secondes
$heure = intval(abs($total / 3600));
$total = $total - ($heure * 3600);
$minute = intval(abs($total / 60));
$total = $total - ($minute * 60);
$seconde = $total;
// Afficher les infos
echo "<div class='xoopstube_cadreblock'><img src=", $data->poster, " style='width: 190px; height: 260px; align: left;'></img><br />n";
echo "<b><font color=#ff7400>Code du film:</font></b> ", $data->code, "<br />n";
echo "<b><font color=#ff7400>Titre du film:</font></b> ", $data->title, "<br />n";
echo "<b><font color=#ff7400>pays:</font></b> ", $data->nationality[0]['$'], "<br />n";
echo "<b><font color=#ff7400>pays_id:</font></b> ", $data->nationality[0]['code'], "<br />n";
echo "<b><font color=#ff7400>Année de production:</font></b> ", $data->productionYear, "<br />n";
echo "<b><font color=#ff7400>Durée:</font></b> $heure H $minute min $seconde sec <br />n";
echo "<b><font color=#ff7400>Date de sortie:</font></b> ", $data->release['releaseDate'], "<br />n";
echo "<b><font color=#ff7400>Realisateur:</font></b> ", $data->castingShort['directors'], "<br />n";
echo "<b><font color=#ff7400>Acteur:</font></b> ", $data->castingShort['actors'], "<br />n";
echo "<b><font color=#ff7400>Genre:</font></b> ", $data->genre[0]['$'], "<br />n";
echo "<b><font color=#ff7400>Genre_id:</font></b> ", $data->genre[0]['code'], "<br />n";
echo "<b><font color=#ff7400>Synopsis:</font></b> ", $data->synopsis, "</div><br />n";
// Afficher toutes les données
//print_r($data->getArray());
}
catch( ErrorException $error )
{
// En cas d'erreur
echo "Erreur n°", $error->getCode(), ": ", $error->getMessage(), PHP_EOL;
}
$code_film = $xtubemyts->addslashes(ltrim($data->code));
$url_img = $xtubemyts->addslashes(ltrim($data->poster));
$title = $xtubemyts->addslashes(ltrim($data->title));
$pays_id = $xtubemyts->addslashes(ltrim($data->nationality[0]['code']));
$annee = $xtubemyts->addslashes(ltrim($data->productionYear));
$duree = $xtubemyts->addslashes(ltrim($data->runtime));
$date_sortie = $xtubemyts->addslashes(ltrim($data->release['releaseDate']));
$nom_realisateur = $xtubemyts->addslashes(ltrim($data->castingShort['directors']));
$synopsis = $xtubemyts->addslashes(ltrim($data->synopsis));
$nom_acteur = $xtubemyts->addslashes(ltrim($data->castingShort['actors']));
$nom_genre = $xtubemyts->addslashes(ltrim($data->genre[0]['$']));
$film_code = $xtubemyts->addslashes(ltrim($data->code));
$genre_id = $xtubemyts->addslashes(ltrim($data->genre[0]['code']));
$id_pays = $xtubemyts->addslashes(ltrim($data->nationality[0]['code']));
$nom_pays = $xtubemyts->addslashes(ltrim($data->nationality[0]['$']));
// Enregistrement des infos dans la base si le code n'existe pas déja..
$film = array (
'TITRE' => $title,
'CODE_FILM' => $code_film,
'PAYS' => $nom_pays,
'ANNEE' => $annee,
'GENRE' => $nom_genre,
'DUREE' => $duree,
'DATE_SORTIE' => $date_sortie,
'ACTEUR' => $nom_acteur,
'REALISATEUR' => $nom_realisateur,
'SYNOPSIS' => $synopsis
);
require ('connect.php');
require ('lib.php');
$id_film = existe_table($film['CODE_FILM'], 'FILM', 'ID_FILM', 'CODE_FILM');
if ($id_film==0){
$sql = 'INSERT INTO FILM'
. ' (id_film, code_film, url_img, titre, pays_id, annee, duree, date_sortie, nom_realisateur, synopsis) ';
$sql .= " VALUES ('', $code_film, '$url_img', '$title', $pays_id, '$annee', $duree, '$date_sortie','$nom_realisateur', '$synopsis')";
if (!$result = $xoopsDB->query($sql)) {
$_error = $xoopsDB->error() . " : " . $xoopsDB->errno();
XoopsErrorHandler_HandleError(E_USER_WARNING, $_error, __FILE__, __LINE__);
}
$sql2 = 'INSERT INTO ACTEUR'
. ' (id_acteur, nom_acteur) ';
$sql2 .= " VALUES ('', '$nom_acteur')";
if (!$result = $xoopsDB->query($sql2)) {
$_error = $xoopsDB->error() . " : " . $xoopsDB->errno();
XoopsErrorHandler_HandleError(E_USER_WARNING, $_error, __FILE__, __LINE__);
}
$sql3 = 'INSERT INTO GENRE'
. ' (id_genre, nom_genre) ';
$sql3 .= " VALUES ('', '$nom_genre')";
if (!$result = $xoopsDB->query($sql3)) {
$_error = $xoopsDB->error() . " : " . $xoopsDB->errno();
XoopsErrorHandler_HandleError(E_USER_WARNING, $_error, __FILE__, __LINE__);
}
$sql4 = 'INSERT INTO ACTEUR_FILM'
. ' (acteur_id, film_code) ';
$sql4 .= " VALUES ('', '$film_code')";
if (!$result = $xoopsDB->query($sql4)) {
$_error = $xoopsDB->error() . " : " . $xoopsDB->errno();
XoopsErrorHandler_HandleError(E_USER_WARNING, $_error, __FILE__, __LINE__);
}
$sql5 = 'INSERT INTO GENRE_FILM'
. ' (genre_id, film_id) ';
$sql5 .= " VALUES ('$genre_id', '')";
if (!$result = $xoopsDB->query($sql5)) {
$_error = $xoopsDB->error() . " : " . $xoopsDB->errno();
XoopsErrorHandler_HandleError(E_USER_WARNING, $_error, __FILE__, __LINE__);
}
$sql6 = 'INSERT INTO PAYS'
. ' (id_pays, nom_pays) ';
$sql6 .= " VALUES ('', '$nom_pays')";
if (!$result = $xoopsDB->query($sql6)) {
$_error = $xoopsDB->error() . " : " . $xoopsDB->errno();
XoopsErrorHandler_HandleError(E_USER_WARNING, $_error, __FILE__, __LINE__);
}
$sql7 = 'INSERT INTO REALISATEUR'
. ' (id_realisateur, nom_realisateur) ';
$sql7 .= " VALUES ('', '$nom_realisateur')";
if (!$result = $xoopsDB->query($sql7)) {
$_error = $xoopsDB->error() . " : " . $xoopsDB->errno();
XoopsErrorHandler_HandleError(E_USER_WARNING, $_error, __FILE__, __LINE__);
}
else {
echo '<h4>' . _MD_XTUBE_INSERT_INFOS_OK . '</h4>';
}
}else
{
echo '<h4>' . _MD_XTUBE_CODE_ALREADY_IN_BDD . '</h4>';
}
$xoopsTpl->assign('module_dir', $xoopsModule->getVar('dirname'));
include XOOPS_ROOT_PATH . '/footer.php';
?>
Donc maintenant que tout est en base de données, je vais ajouter un bouton "ajouter les infos au formulaire de soumission".(que les infos étaient déja ou non dans la base de données.)
Je sais comment faire pour envoyer 1 infos en post mais pour envoyer tout un tas d'infos en appuyant sur 1 bouton, la je sais pas.
Comment je dois procéder pour tout envoyer d'un coup?
les réceptionner pas de problème par contre.
Ensuite je veut que le formulaire de soumission (submit.php) soit entièrement prérempli. De cette façon, il reste possible de les modifier.
Par contre cette méthode va faire que les infos vont être réenregistré une deuxième fois sous forme de description pour le lien en question.
Mais j'ai pas trop le choix, vu mes connaissances.
1 exemple:
Comment on prérempli ce genre de champ?:
$sform->addElement(new XoopsFormText(_MD_XTUBE_FILETITLE, 'title', 70, 255, $title), TRUE);
AH j'ai trouvé un exemple:
$sql = 'SELECT * FROM ' . $xoopsDB->prefix('xoopstube_videos') . ' WHERE lid=' . intval($lid);
$video_array = $xoopsDB->fetchArray($xoopsDB->query($sql));
$lid = $video_array['lid'] ? $video_array['lid'] : 0;
$cid = $video_array['cid'] ? $video_array['cid'] : 0;
$title = $video_array['title'] ? $xtubemyts->htmlSpecialCharsStrip($video_array['title']) : '';
$vidid = $video_array['vidid'] ? $xtubemyts->htmlSpecialCharsStrip($video_array['vidid']) : '';
$publisher = $video_array['publisher'] ? $xtubemyts->htmlSpecialCharsStrip($video_array['publisher']) : '';
$screenshot = $video_array['screenshot'] ? $xtubemyts->htmlSpecialCharsStrip($video_array['screenshot']) : '';
$descriptionb = $video_array['description'] ? $xtubemyts->htmlSpecialCharsStrip($video_array['description']) : '';
$published = $video_array['published'] ? $video_array['published'] : 0;
$expired = $video_array['expired'] ? $video_array['expired'] : 0;
$updated = $video_array['updated'] ? $video_array['updated'] : 0;
$offline = $video_array['offline'] ? $video_array['offline'] : 0;
$vidsource = $video_array['vidsource'] ? $video_array['vidsource'] : 0;
$ipaddress = $video_array['ipaddress'] ? $video_array['ipaddress'] : 0;
$notifypub = $video_array['notifypub'] ? $video_array['notifypub'] : 0;
$vidrating = $video_array['vidrating'] ? $video_array['vidrating'] : 1;
$time = $video_array['time'] ? $xtubemyts->htmlSpecialCharsStrip($video_array['time']) : '0:00:00';
$keywords = $video_array['keywords'] ? $xtubemyts->htmlSpecialCharsStrip($video_array['keywords']) : '';
$item_tag = $video_array['item_tag'] ? $xtubemyts->htmlSpecialCharsStrip($video_array['item_tag']) : '';
$picurl = $video_array['picurl'] ? $xtubemyts->htmlSpecialCharsStrip($video_array['picurl']) : 'http://';
J'ai juste besoin de mettre mes variables à la fin de chaque ligne?
|