Syntaxe fonction (avec variable php)

Eléphant du PHP | 172 Messages

30 déc. 2005, 20:36

Bonsoir à tous !!!

Désolé, encore un petit problème.

Je suis contraint d'utiliser du javascript, j'ai donc vu un topic sur une fonction qui me convient pour ce que je souhaite obtenir.

Seulement bien évidemment, ça ne fonctionne pas, je pense que c'est un problème de syntaxe, mais étant donné que je n'y connaît rien en ce domaine, si quelqu'un pouvait me dire où est mon erreur.
<?php 

if(isset($chemin))
{
		if(file_exists($chemin))
		{
				echo 
				'
				<script language="Javascript" type="text/javascript">
				function ajout(img)
				{
				document.form.desc.value += ("[")+img+("]")+' . $dest_img . '+("[/")+img+("]");
				}
				</script> 
				';
				echo $chemin;  // vérification 
				echo '<br /><input type="button" value="ajouter" style="width:150px" onclick="ajout(\'img\')" />'; 
		}
}
?>
$dest_img est une chaine de cette forme image.jpg

Merci d'avance :P

Eléphant du PHP | 90 Messages

30 déc. 2005, 20:56

Bonjour

Je t'envois ce que j'ai fais d'apres ton exemple si cela peut t'aider un tantinet.
<?php
$des_img="test.jpg";  // semblant d'image
$chemin="test";         // semblant du chemin
?>
<html>
<head>
<script language="Javascript" type="text/javascript"> 
function ajout(img,image) 
{ 
document.form.desc.value += ('[')+img+(']')+image+('[/')+img+(']'); 
} 
</script> 
</head>
<body>
<form name="form">
<?php 
if(isset($chemin)) 
{ 
if(file_exists($chemin)) 
{  
echo "<br/><input type=\"button\" value=\"ajouter\" style=\"width:150px\" onclick=\"ajout('img','".$des_img."')\">";
} 
} 
?> 
<textarea name="desc"></textarea>
</body>
</html>
@+ Dgse
Je ne tiens pas a etre un genie. J'ai suffisamment de probleme a etre un homme.

Eléphant du PHP | 172 Messages

30 déc. 2005, 21:10

Je te remercie, mais mon problème est que je dois mettre une variable php dans le javascript, je pense que mon problème se situe sur cette ligne :
document.form.desc.value += ("[")+img+("]")+' . $dest_img . '+("[/")+img+("]"); 
Car dans le code source, j'ai bien la valeur de $dest_img.

J'obtiens ceci, dans le code généré :

Code : Tout sélectionner

<SCRIPT language="Javascript" type="text/javascript"> function ajout(img) { document.form.desc.value += ("[")+img+("]")+image.jpg+("[/")+img+("]"); } </SCRIPT> <input type="button" value="ajouter" style="width:150px" onclick="ajout('img')" />
Il faut aussi mettre des quotes et des parenthèses pour image.jpg ?

Eléphant du PHP | 172 Messages

30 déc. 2005, 21:22

Ah oui, c'était ça, il fallait mettre des quotes et parenthèses pour que ça fonctionne.
document.form.desc.value += ("[")+img+("]")+("' . $dest_img . '")+("[/")+img+("]");
Merci de ton aide :wink:

Eléphant du PHP | 90 Messages

30 déc. 2005, 21:27

Bonjour

j'ai pas Pensé pas que cela fonctionnerais de cette maniere :wink:


@+ Dgse
Je ne tiens pas a etre un genie. J'ai suffisamment de probleme a etre un homme.

Eléphant du PHP | 172 Messages

30 déc. 2005, 21:37

Bah, je sais pas trop comment faire alors, car il faut que ce js ne s'affiche que si la condition est vérifiée.

En plus, j'ai pas d'erreur dans ma page, pourtant je suis en XHTML strict

De plus j'ai plusieurs page en une, c'est à dire que suivant le lien cliquez par l'utilisateur (vérification avec get), seulement le code étant dans la condition s'affichera.

Si je mets le js dans le <head> de ma page, il sera sur toutes les pages, et il n'y a qu'une seule partie de ma page qui en a besoin.

Oups, j'ai pas vu que tu avais édité, désolé.

Mammouth du PHP | 19672 Messages

30 déc. 2005, 21:47

Et pourquoi pas plus simplement:
"document.form.desc.value += '[img]". $dest_img . "[\/img]";
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 172 Messages

30 déc. 2005, 22:08

J'ai essayé comme tu as dis, mais ça ne fonctionne pas.
echo 
				'
				<SCRIPT language="Javascript" type="text/javascript">
				function ajout(img)
				{
				document.form.desc.value += [img]'.%20$dest_img%20.%20'[/img];
				}
				</SCRIPT> 
				';
J'obtiens ceci dans mon code source

Code : Tout sélectionner

<SCRIPT language="Javascript" type="text/javascript"> function ajout(img) { document.form.desc.value += [img]image.jpg[/img]; } </SCRIPT>
Ce code me sert à insérer du bbcode dans un formulaire, mais je pense que vous l'aviez compris :lol:

Mammouth du PHP | 19672 Messages

30 déc. 2005, 22:15

Ben forcément : tu as des instruction JavaScript et des chaines de caractères non isolées : Essaye comme ceci:
echo "
                <SCRIPT language=\"Javascript\" type=\"text/javascript\">
                function ajout(img)
                {
                    document.form.desc.value += '[img]". $dest_img . "[\/img]';
                }
                </SCRIPT>
                ";
Je ne suis plus très sûr d'un détail: si c'est du XHTML, tu peux faire sauter l'attribut language="JavaScript", le type est suffisant.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 172 Messages

30 déc. 2005, 22:29

Merci, ton code fonctionne :o

Par contre, j'ai pas compris pourquoi mettre un antislash dans [\/img].
Je ne suis plus très sûr d'un détail: si c'est du XHTML, tu peux faire sauter l'attribut language="JavaScript", le type est suffisant.
Oui, tu as raison, le type est obligatoire, mais ça fonctionne parfaitement si j'enlève le language.

Allez, vu que j'ai un spécialiste en face de moi :mrgreen:

Est-ce normal que lorsque je regarde mon code source, ma page se réactualise ?
J'avais envoyé des données précédemment.

Mammouth du PHP | 19672 Messages

30 déc. 2005, 22:37

Allez, vu que j'ai un spécialiste en face de moi :mrgreen:
Ben t'es pas gâté :langue:

Bon, d'abord l'anti-slash avant le slash : c'est précisément pour échapper le slash en JavaScript. Pour être tout à fait franc, j'ai jamais vraiment compris ce truc, mais c'est valide et ça fonctionne.

Si ta page se ré-actualise, c'est parce que quelque part dans ton code il y a une instruction qui ordonne de rafraichir la page, soit une balise meta, soit autre chose, mais ça ne vient sûrement pas de cette partie là.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 172 Messages

30 déc. 2005, 22:56

Bah pourtant, je n'ai pas de balises meta dans mon code qui pourrait faire, ça.
Enfin de toute façon, ce n'est pas plus gênant que ça.
Bon, d'abord l'anti-slash avant le slash : c'est précisément pour échapper le slash en JavaScript. Pour être tout à fait franc, j'ai jamais vraiment compris ce truc, mais c'est valide et ça fonctionne.
Ok, de toute façon, le principal est que ça fonctionne, mais c'est bon de le savoir quand même.

Enfin, je sais j'exagère, maintenant que tout mon "petit bbcode" fonctionne, de quelle façon, je peux récupérer dans ma chaîne de caractères ce qui est compris par exemple entre et [ /b], je me doute qu'il va falloir que je lise le texte dans une boucle sous forme de array, mais après ...

Est-ce que explode est utilisable ici ?

Merci :P

Mammouth du PHP | 19672 Messages

30 déc. 2005, 22:59

Apr<es à mon avis, un preg_replace() sera probablement plus approprié
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 172 Messages

30 déc. 2005, 23:16

En fait, je venais de partir sur str_replace(), mais preg_replace() m'à l'air bien compliqué, je vais me plonger dedans.

Merci à tous.

:wink:

Eléphant du PHP | 90 Messages

31 déc. 2005, 11:19

Bonjour

de cette maniere pour les balise simple .

Code : Tout sélectionner

$find=array("[i]","[/i]","[b]","[/b]"," [u]","[/u]","[s]","[/s]"); $repl=array("<i>","</i>","<b>","</b>","<u>","</u>","<s>","</s>"); $nom de ta chaine = str_replace($find, $repl, $nom de ta chaine);
et pour les balise [img] si elle donne sur une url.
$nom de ta chaine = preg_replace("/\[img\]((http:\/\/|ftp:\/\/)[^'\"\\:\[\]<>]+)\[\/img\]/Ui","<img src='\\1' border='0'>",$nom de ta chaine);
$nom de ta chaine = preg_replace("/\[img align=([a-z]+)\]((http:\/|ftp:\/\/)[^'\\\:\[\]<>]+)\[\/img\]/Ui","<img src='\\2' align='\\1' border='0'>",$nom de ta chaine);
Et merci Cyrano pour l'info, je faisait de la maniere que j'ai decrite :wink:

@+ Dgse
Je ne tiens pas a etre un genie. J'ai suffisamment de probleme a etre un homme.