creer une popup a partir d'un fichier .csv

creer une popup a partir d'un fichier .csv - HTML/CSS - Programmation

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 ?

Reply

Marsh Posté le 20-06-2008 à 09:23:11   

Reply

Marsh Posté le 20-06-2008 à 10:24:42    

up

Reply

Marsh Posté le 20-06-2008 à 10:43:35    

un truc comme ca ?

Code :
  1. <a href="javascript:window.open('test.csv', 'nom_interne_de_la_fenetre', config='height=100, width=400, toolbar=no, menubar=no, scrollbars=no, resizable=no');">test</a>


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

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

Reply

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à ....


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

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

Reply

Marsh Posté le 20-06-2008 à 11:02:49    

Une question : tu affiches ton fichier csv en passant par un script php ?


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

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

Reply

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.


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

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 !!

Reply

Marsh Posté le 20-06-2008 à 11:28:31   

Reply

Marsh Posté le 20-06-2008 à 11:31:26    

Met le bout de code qui te permet d'afficher le csv sur ta page.


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

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 ..

Reply

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.


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

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">&nbsp;</td>
                           <td width="120" class="block">';
 
                $buffer .='<br><br><b>'.$title.'</b></td>
                           <td width="10">&nbsp;</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>&nbsp;</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\">&nbsp;</td>
                    <td width=\"50%\" class=\"ligneGaucheHaute\">&nbsp;</td>";
 
                elseif($ifsize == 1)
        $buffer .= '<td width="50%" class="ligneDroite">&nbsp;</td>
             <td width="50%" class="ligneGauche">&nbsp;</td>';
 
                elseif($count == $ifsize)
        $buffer .= '<td width="50%" class="ligneDroiteHaute">&nbsp;</td>
                    <td width="50%" class="ligneGauche">&nbsp;</td>';
 
                else
        $buffer .= '<td width="50%" class="ligneDroiteHaute">&nbsp;</td>
                    <td width="50%" class="ligneGaucheHaute">&nbsp;</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">&nbsp;</td>
                                 <td width="50%" class="ligneGauche">&nbsp;</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;
        }
 
}
?>
 
 

Reply

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 ?


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

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

Reply

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...


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

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

Reply

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, ....


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

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

Reply

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

Reply

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 ?

Reply

Marsh Posté le 26-06-2008 à 09:54:59    

Il manquerait pas un deuxième anti-slash après menuBar=0 ?


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 26-06-2008 à 09:55:54    

oui mais ca ne change rien nn plus

Reply

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\" )'>


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

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

Reply

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 ?


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

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
 

Reply

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 ?


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

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

Reply

Marsh Posté le 26-06-2008 à 10:51:03    

Comme ca, ca marche chez moi :

Code :
  1. <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\"')>


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

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...

Reply

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....


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

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 ?

Reply

Marsh Posté le 26-06-2008 à 11:12:17    

Euh non, c'est parce que j'ai fait n'importe quoi  :D
Les propriétés de window.open n'ont pas besoin de quotes, donc il faut faire :

Code :
  1. <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>


Message édité par babasss le 26-06-2008 à 11:12:35

---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 26-06-2008 à 11:17:18    

ok .....je vois...toute derniere question pourquoi j'ai des " " autour de mon lien......

Reply

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.


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 26-06-2008 à 11:21:04    

ok !!! ben je te remercie beaucoup c'etait un gros ******* ce truc

Reply

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 :
  1. var liens = document.getElementById('tableLiens').getElementsByTagName('a');
  2. for (var i=0;i<liens.length;i++) {
  3.   liens[i].onclick = function() {
  4.      window.open(this.href,[tes parametres]);
  5.      return false;
  6.   }
  7. }


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 :D


Message édité par mIRROR le 26-06-2008 à 22:20:44

---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
Reply

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 [:johneh]
en pratique on evite absolument le js dans le html c ets a dire les onclick entre autres
et jamais de href vide


---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed