Fork me on GitHub

Rapport de message :*
 

Re: Utiliser l'api allociné dans xoopstube

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'70255), 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';
?>


Open in new window


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';    
?>


Open in new window


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';    
?>


Open in new window


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'70255$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?
Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

44 Personne(s) en ligne (31 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 44 | Plus ...