pblm de concatenation...sans doute ^^

pblm de concatenation...sans doute ^^ - PHP - Programmation

Marsh Posté le 20-02-2007 à 22:47:17    

onClick='window.open('

Reply

Marsh Posté le 20-02-2007 à 22:47:17   

Reply

Marsh Posté le 20-02-2007 à 22:58:15    

je te montre ou est l erreur tu corriges comme un grand apres :/

Reply

Marsh Posté le 20-02-2007 à 23:09:03    

[:spamafote]

 

t as édité entre temps
t as juste déplacé l erreur mais c est encore la meme :/


Message édité par mIRROR le 20-02-2007 à 23:11:29
Reply

Marsh Posté le 20-02-2007 à 23:30:10    

Reply

Marsh Posté le 21-02-2007 à 10:06:48    

j'aurais fais :
 

Code :
  1. echo "<td id=center><a href='#' onClick=\"window.open('employeur/cv.php?num=".$fetch_requeteur['personne_num'].",'_blank','toolbar=0, location=0, directories=0, status=0, scrollbars=1, resizable=1, copyhistory=0, menuBar=1, width=670, height=);return(false)\"><img src=images/design/donnees.png alt=voircv /> </a></td>";


 
essai de voir ?

Reply

Marsh Posté le 21-02-2007 à 10:18:20    

C'est quoi cette manie de vouloir concaténer quand y'a pas besoin ? Ensuite, avec des simples-quotes ce sera déjà plus clair :

Code :
  1. echo '<td id=center><a href="#" onClick="window.open(\'employeur/cv.php?num=', $fetch_requeteur['personne_num'], ',\'_blank\',\'toolbar=0, location=0, directories=0, status=0, scrollbars=1, resizable=1, copyhistory=0, menuBar=1, width=670, height=\');return(false)"><img src="images/design/donnees.png" alt="Voir le CV" /> </a></td>';


 
Ensuite y'a encore dix fois mieux, c'est de séparer code HTML et PHP, du style :
 

Code :
  1. // plein de code
  2. ?><td id="center"><a href="#" onClick="window.open('employeur/cv.php?num='<?php echo htmlspecialchars($fetch_requeteur['personne_num']) ?>','_blank','toolbar=0, location=0, directories=0, status=0, scrollbars=1, resizable=1, copyhistory=0, menuBar=1, width=670, height=');return(false)"><img src="images/design/donnees.png" alt="Voir le CV" /> </a></td><?php
  3.  
  4. // suite du code


 
On pourra faire un fichier template séparé du reste du code. Ensuite pour le Javascript on peut encore faire mieux, là c'est pas accessible du tout. Sinon c'est quoi le id="center" sur le <td> ? Y'a-t-il un id="center" sur plein de <td> (ce qui serait évidemment invalide et dangereux), ou est-ce qu'il est que sur un ?

Reply

Marsh Posté le 21-02-2007 à 10:29:17    

je suis d'accord avec toi mais il est parfois bien plus pratique de concaténer, personnellement, je préfère

Reply

Marsh Posté le 21-02-2007 à 10:37:07    

Mxtrem a écrit :

je suis d'accord avec toi mais il est parfois bien plus pratique de concaténer, personnellement, je préfère


Non :/ Ca sert à rien de concaténer si on peut afficher directement... Et si faut vraiment concaténer, surtout pour du gros HTML, le mieux et de passer par de l'output buffering, ce sera beaucoup plus rapide...

Reply

Marsh Posté le 21-02-2007 à 10:38:07    

Ca m'intéresse ce que tu dis FlorentG, tu peux expliquer en 3 mots en quoi consiste l'output buffering ?

Reply

Marsh Posté le 21-02-2007 à 10:41:23    

Genre prend une boucle de base :

Code :
  1. $string = '';
  2. for($i = 0; $i < 1000; $i++) {
  3.  $string .= 'pouet';
  4. }


 
Vraiment pas performant, je t'explique pas. Avec output buffering, ça devient :

Code :
  1. for($i = 0; $i < 1000; $i++) {
  2.  echo 'pouet';
  3. }
  4. $string = ob_get_contents();


Beaucoup plus performant (pour d'importantes concaténations)

Reply

Marsh Posté le 21-02-2007 à 10:41:23   

Reply

Marsh Posté le 21-02-2007 à 10:43:51    

Compris :jap: ( enfin pas pourquoi, mais le principe )

Reply

Marsh Posté le 21-02-2007 à 10:48:23    

La concaténation de base va allouer de la mémoire pour chaque concaténation. Tu te retrouve avec une nouvelle allocation à chaque passage de la boucle, pas top.
 
L'output buffer lui initialise à la base un buffer de 40 Ko, renouvellable par tranches de 10 Ko, donc beaucoup plus efficient. Maintenant si c'est deux pauvres trucs à concaténer, c'est pas intéressant évidemment.

Reply

Marsh Posté le 21-02-2007 à 10:51:28    

Ok, merci pour l'explication.

Reply

Marsh Posté le 21-02-2007 à 11:38:45    

FlorentG a écrit :

La concaténation de base va allouer de la mémoire pour chaque concaténation. Tu te retrouve avec une nouvelle allocation à chaque passage de la boucle, pas top.
 
L'output buffer lui initialise à la base un buffer de 40 Ko, renouvellable par tranches de 10 Ko, donc beaucoup plus efficient. Maintenant si c'est deux pauvres trucs à concaténer, c'est pas intéressant évidemment.


 
 
je ne savais pas, merci :jap:

Reply

Marsh Posté le 21-02-2007 à 15:41:42    

Salut!
J'utilise des pop up dans mon appli et j'ai pas mal galéré...dc je devrai pouvoir t'aider.Essaye avec ce code
en remplaçant les bonnes valeurs...

Code :
  1. <form method=post action="popup.php" onsubmit="return open_popup(this);">
  2. ....
  3.   <a href=\"popup.php?query_id=$query_id\" onclick=\"return !window.open(this.href,null,'width=595,height=690, status=no, directories=no, toolbar=no, location=no, menubar=no, scrollbars=no, resizable=yes');\"><font color=\"blue\">voir mon cv</font></a> 
  4. ...
  5. </form>


et je te donne la fonction js:

Code :
  1. <script type="text/javascript">
  2. <!-- <![CDATA[
  3. function open_popup(t) {
  4.   t.target="odp";
  5.   odp = window.open("","odp","toolbar=no,menubar=no,scrollbars=yes,resizable=yes,height=700,width=620" );
  6.   odp.moveTo(0, 0)
  7.   odp.focus();
  8.   return true;
  9. }
  10. // ]]> -->
  11. </script>


Chez moi ça marche nickel, si tu as des questions n'hésite pas...
Avedici!;-)

Reply

Marsh Posté le 21-02-2007 à 18:03:22    

Là on voit tout l'intérer de séparer encore plus les couches : structure et comportement.

 

Il faudrait que le lien soit de la forme :

Code :
  1. <a href="employeur/cv.php?num=1" class="popup"><img src="images/design/donnees.png" alt="Voir le CV"></a>
 

Ensuite un JS parcourerait tous les liens, et si une classe popup y est, ajouterait automatiquement l'évènement onclick et tout.

 

La règle est du même style que "on ne mixe pas la présentation et le code HTML". Si on utilise du CSS pour la présentation, on utilisera du JS __séparé__ pour le comportement. C'est-à-dire zéro onclick ou onmouseover ou truc du style, juste certaines class spécifiques qui seraient gérées par un JS externe. Et on oublie pas de gérer aussi un évènement au clavier, parce que la il ne se passe rien si on appuie sur entrée alors que le focus est sur le lien ;) ;)


Message édité par FlorentG le 21-02-2007 à 19:00:34
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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