Re
J'ai donc été voir cette requête et je l'ai modifié pour qu'elle me sorte toutes les infos des doublons:
SELECT t1.*
FROM _xoopstube_videos AS t1
INNER JOIN
(
SELECT vidid
FROM _xoopstube_videos
GROUP BY vidid
HAVING count(vidid) > 1
)
AS t2
ON t1.vidid=t2.vidid
ORDER BY t1.vidid ASC
Pas de soucis si on veut l'utiliser directement dans sql, je l'ai fait, j'avais 27 doublons et j'ai donc pu corriger et ramener ce chiffre à 2
Avant ça j'ai essayé de convertir le tout pour xoops mais je n'arrive pas à afficher les infos, je doit couiller quelque part, j'ai pas d'erreur sql ou php juste rien ne s'affiche.
J'ai donc créé un fichier doublon.php
puis un template xoopstube_doublon.html pour pouvoir faire les essais sur une page indépendante.
J'ai ensuite modifié le fichier xoops_version.php pour y inclure le template.
Ensuitre j'ai pris exemple comme j'ai pu sur d'autres fichiers pour m'aider.
Dans un premier temps, je voulais déja éssayer d'afficher les infos sous forme de tableau tel quelles sortent sur sql.
J'ai fait la conversion sql -> php dans mysql (déja ça je suis pas sur que ça soit bon) puis utilisé tel quel en ajoutant juste les éléments xoops.
doublon.php:
<?php
/**
* $Id: doublon.php
* Module: XoopsTube
*/
include 'header.php';
$sql = " SELECT t1.*n"
. "FROM ' . $xoopsDB->prefix('xoopstube_videos') . ' AS t1 n"
. "INNER JOIN n"
. "( n"
. "SELECT vididn"
. "FROM ' . $xoopsDB->prefix('xoopstube_videos') . ' n"
. "GROUP BY vidid n"
. "HAVING count(vidid) > 1 n"
. ") n"
. "AS t2n"
. "ON t1.vidid=t2.vididn"
. "ORDER BY t1.vidid ASC ";
$result = $xoopsDB->query($sql);
$video_doublon = $xoopsDB->fetchArray($result);
/**
// on verifie si le résultat est un tableau
if (!is_array($video_doublon)) {
redirect_header('index.php', 1, _MD_XTUBE_NOVIDEOLOAD);
exit();
}
**/
// On affiche chaque entrée une à une
while ($arr = $xoopsDB->fetchArray($result)) {
$videouid['title'] = $xtubemyts->htmlSpecialCharsStrip($arr['title']);
$videouid['lid'] = $arr['lid'];
$videouid['cid'] = $arr['cid'];
$videouid['vidsource'] = $arr['vidsource'];
$videouid['published'] = xoopstube_time(formatTimestamp($arr['published'], $xoopsModuleConfig['dateformat']));
$xoopsTpl->append('video_uid', $videouid);
}
$xoopsOption['template_main'] = 'xoopstube_doublon.html';
include XOOPS_ROOT_PATH . '/header.php';
$xoopsTpl->assign('video_uid', $videouid);
// Displays Back button
$xoopsTpl->assign(
'back', '<a href="javascript:history.go(-1)"><img src="' . XOOPS_URL . '/modules/' . $xoopsModule->getvar('dirname')
. '/images/icon/back.png" /></a>'
);
$xoopsTpl->assign('module_dir', $xoopsModule->getVar('dirname'));
include XOOPS_ROOT_PATH . '/footer.php';
?>
La fin du code n'est pas bon, en fait j'ai laissé tel quel aprés avoir asséyer plusieurs truc, je sais pas trop comment afficher les infos.
et le template:
<link rel="stylesheet" type="text/css" href="<{$smarty.const.xoopstube_url}>/xtubestyle.css"/>
<{if $catarray.imageheader != ""}> <br/>
<div class="xoopstube_header"><{$catarray.imageheader}></div>
<{/if}>
<br/><br/>
<!-- Start loop -->
<div class="xo-pagact" style="font-weight: bold; font-size: 110%;"> liste des doublons
</div>
<br/>
<{foreach item=video_doublon from=$video_uid}>
<div style="margin-left: 10px;">
<a href="<{$xoops_url}>/modules/<{$video.module_dir}>/singlevideo.php?cid=<{$video_doublon.cid}>&lid=<{$video_doublon.lid}>"><{$video_doublon.title}></a>
(<{$video_doublon.published}>)
</div>
<{/foreach}>
Le résultat est une page vide.
ça va certainement vous sauter aux yeux, mais moi je capte rien, si vous pouviez me dire ou je foire mon coup, ça pourra m'aider.
Merci d'avance
ps:
A la fin de mon fichier php, est ce qu'il faut sortir chaque entré du tableau avant de pouvoir les afficher?
avec ceci:
$video['imageheader'] = xtube_imageheader();
$video['title'] = $video_doublon['tittle'];
$video['id'] = $video_doublon['lid'];
$video['cid'] = $video_doublon['cid'];
$video['vidsource'] = $video_doublon['vidsource'];
???