Insertion frame dans page PHP

Petit nouveau ! | 5 Messages

30 juin 2008, 17:27

Bonjour à tous,

Je suis en train de réaliser une petite application en PHP ; en fait, il s'agit de réaliser un petit site qui affichera une liste de liens pointant vers des fichiers PDF.
J'ai déjà réalisé l'essentiel mais je ne parviens pas à ouvrir les fichiers PDF dans la même page.
Je m'explique (et je joins mon code en bas de message) : j'ai une page qui contient de l'HTML et du PHP ; le code PHP liste le contenu d'un répertoire et remplit une base SQL avec les entrées qu'il y trouve. Le résultat, c'est une liste de liens qui pointent vers des fichiers PDF ; les liens fonctionnent très bien, mais ce que je voudrais c'est que l'utilisateur ne sorte pas de la page ; j'aimerais qu'en cliquant sur le lien, le document PDF s'ouvre dans un frame dans la même page. Et c'est précisément cela que je n'arrive pas à faire !!!!!
Je vous joins mon code ci-dessous :
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//FR" "http://www.w3.org/TR/html4/strict.dtd">
<html><head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"><title>Les revues de presse de la semaine</title></head>

<body style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 209);" alink="#000099" link="#000099" vlink="#990099">

<!-- Tableau d'une cellule contenant le bandeau Intranet -->

<table style="text-align: center; width: 100%;" border="0" cellpadding="0" cellspacing="0">
<tr>
<td><img style="width: 100%; height: 84px;" alt="" src="Images/Bandeau_intranet.jpg"></td>
</tr>
</table>

<!-- Tableau d'une ligne et 3 colonnes contenant les bandeaux gauche/droite et le code PHP en partie centrale -->

<table border="0" cellpadding="0" cols="3" width="100%">

<td style="width: 15%;"><img style="width: 190px; height: 499px;" alt="" src="Images/bandeau_gauche.jpg"></td>

<td style="text-align: center; width: 70%;" border="0" cellpadding="0" cellspacing="2"><font size="+3"><span style="font-family: Lucida Grande;">

<?php

//connexion
$connectfile = "connexion.php";
require $connectfile; 



/*******************************vider la table****************************************/

/*$res3 = mysql_query("TRUNCATE TABLE revues") or exit(mysql_error("Erreur : La table n\'est pas vidée, CONTACTEZ l'administrateur "));*/

/*************************************Lister les fichiers du repertoire*******************/


//Lecture du répertoire contenant les fichiers pdf de la revue de presse et insertion des entrées dans la base

/*$dir_nom = 'C:/xampp/htdocs/Revue de presse/RS/'; // dossier listé (pour lister le répertoire courant : $dir_nom = '.'  --> ('point')
$dir = opendir($dir_nom) or die('Erreur de listage : le répertoire n\'existe pas'); // on ouvre le contenu du dossier courant
$fichier= array(); // on déclare le tableau contenant le nom des fichiers
$dossier= array(); // on déclare le tableau contenant le nom des dossiers

while($element = readdir($dir)) {
	if($element != '.' && $element != '..') {
		if (!is_dir($dir_nom.'/'.$element)) {$fichier[] = $element;}
		else {$dossier[] = $element;}
	}
}
//fermeture du repertoire 
closedir($dir);
// insertion des noms des fichiers dans la table
		foreach($fichier as $lien) {
			mysql_query("INSERT INTO revues (id,nom_fichier) VALUES ('','$lien')");
		}*/

$table ='revues';

//nombre d'enregistrement
$req = 'select * from '.$table;

$resultat_req = mysql_query($req);
$nb_enregistrement = mysql_num_rows($resultat_req) or exit(mysql_error("Erreur : dans l\'extraction du nombre de ligne, CONTACTEZ l'administrateur "));

//requete de la revue du Jour 
$requeteJ = 'select nom_fichier from '.$table.' where revues.id = '.$nb_enregistrement;

//requete des revues de la semaine 
$requeteS = 'select nom_fichier from '.$table.' where revues.id < '.$nb_enregistrement.' order by id desc limit 5';



$res = mysql_query($requeteJ) or exit(mysql_error("Erreur : dans l\'execution de la requete d\'extraction de la revue du jour, CONTACTEZ l'administrateur "));

echo '<table style="text-align: justify; width: 100%;" border="0"><tr>';

    echo '<th align=center>';
    echo 'La revue du jour';
    echo '</th>';

echo '</tr>';

while ($row = mysql_fetch_row($res)) {
    echo '<tr>';
	
    for ($j = 0; $j < count($row); $j++) {
			$max = -4;
        if (strlen($row[$j]) >= $max) {
			$row[$j] = substr($row[$j], 0, $max);

			$chaineJ = substr($row[$j], 6, 2);  // 20080613 -> 13


			$chaineM = substr($row[$j], 4, 2); // 20080613 -> 06

			$chaineA = substr($row[$j], 0, 4);  // 20080613 ->2008

 			
		}
		
	   	$date=$chaineJ.' / '.$chaineM.' / '.$chaineA;
		$nomfichier=$chaineA.$chaineM.$chaineJ;

        echo '<td align=center>';
		
		echo ($row[$j] == NULL) ? '<i>NULL</i>' : '<a href=http://localhost/Revue%20de%20presse/RS/'.$nomfichier.'.pdf>'.$date.'</a>';
        echo '</td>';
    }
   
    echo '</tr>';
}
echo '</table>';

/***********************************************************************************/


$res = mysql_query($requeteS) or exit(mysql_error("Erreur : dans l\'execution de la requete d\'extraction des revues de la semaine, CONTACTEZ l'administarteur' "));
echo '<table style="text-align: justify; width: 100%;" border="0"><tr>';

    echo '<th align=center>';
    echo 'Les revues de la semaine';
    echo '</th>';
echo '</tr>';
while ($row = mysql_fetch_row($res)) {

    echo '<tr>';

    for ($j = 0; $j < count($row); $j++) {
		$max = -4;
        if (strlen($row[$j]) >= $max) {
			$row[$j] = substr($row[$j], 0, $max);

			$chaineJ = substr($row[$j], 6, 2);  // 20080613 -> 13


			$chaineM = substr($row[$j], 4, 2); // 20080613 -> 06

			$chaineA = substr($row[$j], 0, 4);  // 20080613 ->2008

 			
		}
		
	   	$date=$chaineJ.' / '.$chaineM.' / '.$chaineA;
		$nomfichier=$chaineA.$chaineM.$chaineJ;
		
		/********************************************/
		
		//if(date("11062008 w")) echo date("w");//
		
		/*******************************************/
        echo '<td align=center>';
        echo ($row[$j] == NULL) ? '<i>NULL</i>' : '<a href=http://localhost/Revue%20de%20presse/RS/'.$nomfichier.'.pdf>'.$date.'</a>';
		
        echo '</td>';
		
    }
	
    echo '</tr>';
}
echo '</table>';
?>

</span></font></td>

<td style="width: 15%;"><img style="width: 190px; height: 499px;" alt="" src="Images/bandeau_droite.jpg"></td>

</table>

<!-- Tableau d'une cellule contenant le texte d'information -->

<table style="text-align: center; width: 100%;" border="0" cellpadding="0" cellspacing="0">
<tr style="font-style: italic; font-family: Lucida Grande;" align="center">
<td>Petit texte en base de page</td>
</tr>
</table>
</BODY>
Merci d'avance de votre aide !!!!! :wink:

Mammouth du PHP | 1668 Messages

30 juin 2008, 17:45

Bonjour,

Bah ça ressemblerais plus à un problème résolvable par JS, pourquoi tu vide ta table à chaque fois ? Tu peux faire un listing sans SQL...
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

01 juil. 2008, 09:26

Bah ça ressemblerais plus à un problème résolvable par JS
JS ? ... certes...

une iframe et un target qui va bien devrait faire l'affaire :)

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Petit nouveau ! | 5 Messages

01 juil. 2008, 10:15

Salut tout le monde !

Effectivement, j'ai songé à javascript ; mais je ne pratique pas ce langage et c'est pourquoi je cherchais une solution purement PHP ; mais je pense que je vais quand même jeter un coup d'oeil du côté de JS.
Pour répondre à ta question, katagoto, je vide ma table parce que je veux qu'elle soit mise à jour automatiquement non seulement lorsque l'on ajoute un fichier PDF, mais aussi lorsque l'on en supprime un ; mais depuis j'ai un peu modifié ma façon de faire : j'ai alissé la main à la personne qui dépose et supprime des fichiers du répertoire ; j'ai copié le code qui vide la table et la remplit dans une nouvelle page qui est appelée par un formulaire PHP comportant un bouton "Mettre à jour la table".
Mais si tu penses qu'il y a une meilleure solution pour faire un listing, je suis preneur !

Mammouth du PHP | 1668 Messages

01 juil. 2008, 10:26

Bonjour, je ne suis pas très doué en iframe...

Bref, si tu ne te sert de ta table que pour lister, ça sert à rien d'en avoir une, avec cette méthode, tu peux liste les fichiers :
<?php
if ($handle = opendir('/chemin/vers/fichiers')) {
    echo "Directory handle: $handle\n";
    echo "Files:\n";

    /* Ceci est la façon correcte de traverser un dossier. */
    while (false !== ($file = readdir($handle))) {
        echo "$file\n";
    }

    /* Ceci est la MAUVAISE façon de traverser un dossier. */
    while ($file = readdir($handle)) {
        echo "$file\n";
    }

    closedir($handle);
}
?>
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol