creer une popup a partir d'un fichier .csv - HTML/CSS - Programmation
Marsh Posté le 20-06-2008 à 10:43:35
un truc comme ca ?
Code :
|
Marsh Posté le 20-06-2008 à 10:46:53
je re-explique plus simplement.....
dans mon fichier textes j'ai des balises <a href> pour afficher mes liens sur ma page web......
je veux que en clickant sur un de ces liens une fenetre s'ouvre en pop up.....je fais sa avec des lines normaux mais en mettant du JS alors que la dans mon .csv sa marche pas des masses
redemande si tu veux des explications
Marsh Posté le 20-06-2008 à 10:53:56
clem1138 a écrit : redemande si tu veux des explications |
Oui, je comprends rien. Mets des exemples de ce que tu veux vraiment parce que là ....
Marsh Posté le 20-06-2008 à 10:59:09
voila le genre de truc que j'ai dans une case dans mon fichier .csv :
<a href=fiche_perso.php?id=2&nom=monnom&prenom=monprenom>Nom Prenom</a>
et donc sur ma page index.php j'affiche mes liens.....et je veux que ces liens m'envoi sur une pop up ......sauf que le javascript dans mon fichier .csv ca ne marche pas
ca va mieux ??
Marsh Posté le 20-06-2008 à 11:02:49
Une question : tu affiches ton fichier csv en passant par un script php ?
Marsh Posté le 20-06-2008 à 11:06:58
oui mais le pb c'est que c'est un organigramme qui se forme automatiquement donc si tu penses a une solution genre
echo "<a href=\"javascript:window.open('cible.php?nom=" . $nom_de_famille . "', 'nom_de_page', 'parametres_d_affichage');\">" . $nom_de_famille . "</a>";
ca ne marchera pas pour moi
Marsh Posté le 20-06-2008 à 11:20:54
Non je pense qu'il faut juste que tu ajoutes addslashes (http://fr.php.net/addslashes) pour afficher ta ligne venant du csv.
Marsh Posté le 20-06-2008 à 11:28:31
oui mais je ne peux pas faire un simple echo apres d'avoir recuperer ma ligne de mon csv...
par contre cette ligne si je pouvais la mettre directement dans mon fichier csv je pense que sa marcherais mais JS fonctionne ou pas dedans parce que meme ac plein de test je n'arrive a rien !!
Marsh Posté le 20-06-2008 à 11:31:26
Met le bout de code qui te permet d'afficher le csv sur ta page.
Marsh Posté le 20-06-2008 à 11:34:45
non mais laisse tomber mon code genere UN ORGANIGRAMME donc je ne peux pas te le montrer enfin il est tres long ..
Marsh Posté le 20-06-2008 à 11:49:38
clem1138 a écrit : non mais laisse tomber mon code genere UN ORGANIGRAMME donc je ne peux pas te le montrer enfin il est tres long .. |
Certes, mais comme je n'arrive pas à comprendre comment tu fais pour afficher ton fichier csv via ton script php, c'est dur de t'aider.
Marsh Posté le 20-06-2008 à 11:55:00
tient a tes risques et peril lol
<?php
class flowchar{
var /* private */ $isloaded;
var /* private */ $file;
var /* private */ $comma;
var /* private */ $maxlevel;
var /* private */ $arraylist;
var /* private */ $buffer;
var /* private */ $movable;
var /* private */ $param;
/* Constructeur : flowchar(String file)
* Charge le fichier qui va servir a
* generer l'organigramme.
*
* $file : chemin vers le fichier csv
*/
/* public */ function flowchar($file){
$this->comma = ';';
$this->level = 1;
$this->movable = false;
$buffer = '';
if(($this->file = @file($file)) === false)
$this->isloaded = false;
else
$this->isloaded = true;
}
/* public void setcomma(char comma);
* Defini le caractere utilisé
* comme separateur pour le
* format csv. (par defaut : ";" )
*
* $comma : caractere separateur
*/
/* public */ function setcomma($comma){
$this->comma = $comma;
}
/* public void setmaxlevel(int maxlevel)
* Defini le niveau de profondeur maximum
* de l'organigramme.
*
* $maxlevel : niveau de profondeur max
*/
/* public */ function setmaxlevel($maxlevel){
$this->maxlevel = $maxlevel;
}
/* public void scanning()
* Active l'empilement et le desempilement
* de l'organigramme. les block deviennent
* clickable. De cette maniere là, on peut
* n'afficher que la partie de l'organigrame
* qui nous interresse.
*/
/* public */ function scanning(){
$this->movable = true;
if(!isset($_GET['flowchar'])){
$this->setmaxlevel(1);
$this->param = false;
return;
}
$this->param = explode(':',$_GET['flowchar']);
$newlevel = count($this->param)+1;
if($newlevel < $this->maxlevel) $this->setmaxlevel($newlevel);
}
/* public void setlist(int[] arraylist)
* Defini la liste des colones a lire
* pour la realisation de l'organigramme.
*
* $arraylist : tableau contenant les
numero de colones
dans le fichier csv.
*/
/* public */ function setlist($arraylist){
$this->arraylist = $arraylist;
if($this->maxlevel > count($arraylist)) $this->setmaxlevel(count($arraylist));
}
/* public String createflowchar(String mainentity)
* Creation de l'organigramme.
*
* mainentity : chaine de caracteres correspondant
au point de depart de l'organigramme.
* return : le code html de l'organigramme
*/
/* public */ function createflowchar($mainentity){
if($this->isloaded === false) die('Erreur d\'ouverture du fichier.');
if(count($this->arraylist)===0) die('Liste Vide.');
$buffer = $this->loadHTMLheader();
$buffer .= $this->loadHTMLmainentity($mainentity,0);
$buffer .= $this->loadHTMLsubentity($mainentity,0,0);
$buffer .= $this->loadHTMLfooter();
return $buffer;
}
/* Methodes privé de la class! */
/* private */ function listsubentity($col,$subcol,$value){
$buffer = array();
for($i = 0;$i<count($this->file);$i++){
$array = explode($this->comma,$this->file[$i]);
$array[$subcol] = trim($array[$subcol]);
$array[$col] = trim($array[$col]);
if(empty($array[$subcol])) continue;
if($array[$col] == $value){
if(array_search($array[$subcol],$buffer) !== false) continue;
$buffer[] = $array[$subcol];
}
}
return ($buffer);
}
/* private */ function loadHTMLsubentity($title,$i,$trace){
if($this->maxlevel < 2) return;
$list = $this->listsubentity($this->arraylist[$i],$this->arraylist[$i+1],$title);
$size = count($list);
$buffer = '<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>';
for($idx=0;$idx<$size;$idx++){
if($this->movable)
if(($i+1) !== count($this->param))
if($this->param[$i+1]==$idx)
$size=1;
else
continue;
$buffer .= '<td align="center" valign="top">';
$buffer .= $this->loadHTMLupconnectingentity($title,$i,$idx+1,$size);
$buffer .= $this->loadHTMLentity($list[$idx],$trace.':'.$idx);
if($this->maxlevel > ($i+2)){
$subbuffer = $this->loadHTMLdownconnectingentity($list[$idx],$i+1);
$buffer .= $subbuffer;
if($subbuffer != '') $buffer .= $this->loadHTMLsubentity($list[$idx],$i+1,$trace.':'.$idx);
}
$buffer .= '</td>';
}
$buffer .= '</tr>
</table>'."\r\n";
return $buffer;
}
/* private */ function loadHTMLentity($title,$link=0){
if($this->movable) $title = '<a href="?flowchar='.$link.'" class="link">'.$title.'</a>';
$buffer = '<table width="140" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="10"> </td>
<td width="120" class="block">';
$buffer .='<br><br><b>'.$title.'</b></td>
<td width="10"> </td>
</tr>
</table>'."\r\n";
return($buffer);
}
/* private */ function loadHTMLheader(){
return('<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center" valign="top">'."\r\n" );
}
/* private */ function loadHTMLfooter(){
return('</td>
</tr>
<tr>
<td> </td>
</tr>
</table>'."\r\n" );
}
/* private */ function loadHTMLupconnectingentity($title,$i,$count,$ifsize = -1){
if($ifsize == -1) $ifsize = count($this->listsubentity($this->arraylist[$i],$this->arraylist[$i+1],$title));
$buffer = '<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>';
if($count == 1 && $ifsize > 1)
$buffer .= "<td width=\"50%\" class=\"ligneDroite\"> </td>
<td width=\"50%\" class=\"ligneGaucheHaute\"> </td>";
elseif($ifsize == 1)
$buffer .= '<td width="50%" class="ligneDroite"> </td>
<td width="50%" class="ligneGauche"> </td>';
elseif($count == $ifsize)
$buffer .= '<td width="50%" class="ligneDroiteHaute"> </td>
<td width="50%" class="ligneGauche"> </td>';
else
$buffer .= '<td width="50%" class="ligneDroiteHaute"> </td>
<td width="50%" class="ligneGaucheHaute"> </td>';
$buffer .= '</tr></table>'."\r\n";
return $buffer;
}
/* private */ function loadHTMLdownconnectingentity($title,$i,$ifsize = -1){
if($ifsize == -1) $ifsize = count($this->listsubentity($this->arraylist[$i],$this->arraylist[$i+1],$title));
if(($ifsize > 0) && ($this->maxlevel > 1) && ($i < $this->maxlevel))
return('<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50%" class="ligneDroite"> </td>
<td width="50%" class="ligneGauche"> </td>
</tr>
</table>'."\r\n" );
else return ('');
}
/* private */ function loadHTMLmainentity($mainentity,$i){
$buffer = $this->loadHTMLentity($mainentity);
$buffer .= $this->loadHTMLdownconnectingentity($mainentity,$i);
$buffer .= '</td>
</tr>
<tr>
<td valign="top" width="100%">'."\r\n";
return $buffer;
}
}
?>
Marsh Posté le 20-06-2008 à 12:31:47
Le code ci-dessus est juste une classe. Quels en sont les déclencheurs, quelles données envois-tu ?
Marsh Posté le 23-06-2008 à 08:48:38
$flowchar = new flowchar('C:\Program Files\EasyPHP1-8\mysql\data\girardot\autocars.csv');
$flowchar->setcomma(';');
$flowchar->setmaxlevel(5);
$flowchar->setlist(array('4','0','2','3'));
echo $flowchar->createflowchar('Autocars');
Marsh Posté le 23-06-2008 à 10:31:55
Bon déjà, étant donnée que tu pars d'un code qui ne t'appartient pas et que visiblement, tu ne peux pas / sais pas modifier, les actions sont faibles.
Cependant je reviens sur ce que disais précédemment, c'est juste un problème de quotes..
Tu veux afficher des liens du genre de celui-ci : <a href="javascript:window.open('cible.php?nom=nom_de_famille', 'nom_de_page', 'parametres_d_affichage');">nom_de_famille</a> mais tu as un problème...
Il faut que tu essayes toutes les solutions possibles en échappant tes quotes avec \ pour trouver la solution qui marche...
Marsh Posté le 23-06-2008 à 10:37:31
ah et c'est tout ??? il n'y a pas de question de non prise en compte de JS dans le fichier csv ???
Marsh Posté le 23-06-2008 à 10:41:25
clem1138 a écrit : ah et c'est tout ??? il n'y a pas de question de non prise en compte de JS dans le fichier csv ??? |
Y'a pas de raison... Php prend ton fichier csv, le lit, le "transforme" en langage client (HTML/JS/....) et c'est tout. Il s'en fout que ca soit du csv, txt, ....
Marsh Posté le 23-06-2008 à 10:48:48
ok ben merci je vais faire tous les tests possible pr que sa fonctionne et au pire je vs recontacte
Marsh Posté le 26-06-2008 à 09:28:38
alors je ressort un peu le post.....<a href="javascript:void(window.open('fiche_perso2.php?id=2&nom=YYYYY&prenom=XXXXX','',''));">XXXXX YYYYY</a>
j'ai essayé ceci....ma page principal se recharge ou je ne sais quoi...rien ne se passe et en bas a droite de cette page est marqué "erreur sur la page" mais quand je me positionne sur le lien j'obtient javascript:void(window.open en bas a droite de l'explorateur....donc est ce qu'il ne peut pas interpreter le JS ou la syntaxe est incorrect et il devrait afficher la suite derriere javascript:void(window.open???
Marsh Posté le 26-06-2008 à 09:31:54
par contre avec ceci :
<a href='fiche_perso.php?id=3&table=autocars' onClick=window.open(\\'fiche_perso.php?id=3&table=autocars\\',\\'fiche_perso\\',\\'toolbar=0,width=300,height=300, location=0, directories=0, status=0, scrollbars=0, resizable=0, copyhistory=0, menuBar=0\')>
il menvoi sur la page avec les bons resultats mais la page n'est pas une pop up...une idée parce que je rame ?
Marsh Posté le 26-06-2008 à 09:54:59
Il manquerait pas un deuxième anti-slash après menuBar=0 ?
Marsh Posté le 26-06-2008 à 10:03:55
C'est toujours un pb de quote....
Moi comme ca, ca marche : <a href=# onClick='window.open(\"fiche_perso.php?id=3&table=autocars\",\"fiche_perso\",\"toolbar=0,width=300,height=300, location=0, directories=0, status=0, scrollbars=0, resizable=0, copyhistory=0, menuBar=0\" )'>
Marsh Posté le 26-06-2008 à 10:07:40
moi sa me met un tas d'erreur qui viennent du long code que je vous ai donné ligne 113/114 mais je vois rien
Marsh Posté le 26-06-2008 à 10:14:50
Tu peux mettre une ligne entière de ton csv pour que je puisse faire des tests ?
Marsh Posté le 26-06-2008 à 10:16:39
case1:<font color='red'>Comptabilité</font>
case2: <font color='red'>Direction Générale</font><HR color='#FF0000' width=159> <i>Philippe Girardot <br>pgirardot@pelican.fr<br>tel: 255<br>Chalon Nord<HR color='#FF0000' width=159>Christophe Girardot <br>cgirardot@pelican.fr<br>tel: 256<br>Chalon Nord
case3:<i><a href=# onClick=window.open(\'fiche_perso.php?id=3&table=autocars\',\'fiche_perso\',\'toolbar=0,width=300,height=300, location=0, directories=0, status=0, scrollbars=0, resizable=0, copyhistory=0, menuBar=0\')> Marie Annick Aymard</a><br>maymard@pelican.fr<br>tel: 264<br>Chalon Nord
case4:Autocars
Marsh Posté le 26-06-2008 à 10:45:14
Tu es sur que dans ton fichier tu as ca : $flowchar->setlist(array('4','0','2','3')); et que ton fichier csv n'a que 4 colonnes ?
Marsh Posté le 26-06-2008 à 10:46:57
eu en fait j'avais une case vide ....je ne te l'ai pas enlevé ...Change la case 4 met la en 5 ou change les chiffres et ce sera bon
Marsh Posté le 26-06-2008 à 10:51:03
Comme ca, ca marche chez moi :
Code :
|
Marsh Posté le 26-06-2008 à 10:56:13
impeccable ca marche...Par contre tu peux m'expliquer un peu ...j'ai pas compris ce qu'il y avait de different...
Marsh Posté le 26-06-2008 à 10:59:22
Pb de quotes, " et ' ne sont pas pareil, n'agissent pas au même niveau et puis des espaces en trop entre les paramètres de la popup.
Dans ces cas là, il faut essayer, aller voir le code source via firefox (coloration syntaxique inside qui aide à trouver où se trouvent les erreurs), rectifier, re-essayer et à tatons, on finit par trouver la bonne formulation....
Marsh Posté le 26-06-2008 à 11:03:30
ok.....et le fait que je ne puisse pas changer la taille de la popup c'est aussi un pb de " ou ' je presume ?
Marsh Posté le 26-06-2008 à 11:12:17
Euh non, c'est parce que j'ai fait n'importe quoi
Les propriétés de window.open n'ont pas besoin de quotes, donc il faut faire :
Code :
|
Marsh Posté le 26-06-2008 à 11:17:18
ok .....je vois...toute derniere question pourquoi j'ai des " " autour de mon lien......
Marsh Posté le 26-06-2008 à 11:19:41
Parce que c'est la norme html je crois. En toute rigueur, il vaudrait mieux mettre <a href='# ' .... > dans ton csv mais après tu fais un peu comme tu veux.
Marsh Posté le 26-06-2008 à 11:21:04
ok !!! ben je te remercie beaucoup c'etait un gros ******* ce truc
Marsh Posté le 26-06-2008 à 22:16:07
hou putain la prise de tete
en deux lignes de code:
tu fous un ID sur la table dans laquelle tu inseres tes liens on va dire tableLiens
Code :
|
pas besoin d editer tout ton fichier a la main
et si son contenu doit changer ton code sera toujours bon
edit :merde, quelques fautes en allant trop vite
Marsh Posté le 26-06-2008 à 22:19:08
babasss a écrit : Parce que c'est la norme html je crois. En toute rigueur, il vaudrait mieux mettre <a href='# ' .... > dans ton csv mais après tu fais un peu comme tu veux. |
jamais
en pratique on evite absolument le js dans le html c ets a dire les onclick entre autres
et jamais de href vide
Marsh Posté le 20-06-2008 à 09:23:11
bonjour a tous,alors.....
j'ai une page ou se trouvent des liens......ces liens sont en provenance d'un fichier .csv .....sous la forme <a href> classique.....
mon but est qu'en cliquant sur ces liens, une popup s'ouvre sauf que je ne vois pas comment faire meme en tapant <script type="text/javascript" src=" dans mon fichier .csv
une idée ?