CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Espaces et Javascript

Disque-Lexique
Disque-Lexique
Niveau 10
18 juin 2008 à 16:53:59

Bonjour à tous,

Je suis en train de réaliser un page en PHP/Javascript dont voici une illustration du fonctionnement : http://images1.hiboox.com/images/2508/982b6325973d734df9579bddbfab439a.jpg

Le principe est de générer aléatoirement des éléments d'une BdD et d'afficher une courte description dans la case du bas lors du passage de la souris.

Là où j'aurais besoin d'aide, ça serait dans le passage d'un paramètre contenant des espaces à une fonction Javascript.
Pour l'instant, tout fonction lorsque la description se résume à un seul mot, mais dès que je mets plusieurs mots, donc des espaces, la fonction plante.

Voici les lignes en question :

Print "<a href='#' onmouseover=afficher('$adjectif') onmouseout='effacer()'> etc... ";

Envoie le paramètre $adjectif contenant la description

function afficher($adjectif)
{
document.form.area.value=$adjectif;
}

Fonction qui affiche la description au passage de la souris

Je précise que j'ai bien testé, et le paramètre $adjectif contient bien toute la chaine (y compris les espaces) lorsque la ligne PHP est éxécutée.J'ai aussi essayer plusieurs combinaisons de parenthèses et d'apostrophes, mais rien n'y fait.

Merci d'avance aux personnes qui pourront m'aider.

guyver2
guyver2
Niveau 10
18 juin 2008 à 17:25:10

ajoute simplement des guillemets autours de ta chaine de caracteres qui contient des espaces, ça devrait passer.

je parle de guillemets double " pas d'apostrophes '.

Disque-Lexique
Disque-Lexique
Niveau 10
18 juin 2008 à 17:38:56

Je ne peux pas mettre de guillemets, car toute l'instruction l'est déjà avec le :

Print "....";

Donc je ne peux mettre que des quotes simples.J'ai essayé d'inverser pour faire :

Print '...';

Et les variables entre guillemets, mais ça ne fonctionne pas : ça passe la chaine "$adjectif" plutôt que la valeur qu'elle contient.

guyver2
guyver2
Niveau 10
18 juin 2008 à 17:43:55

je suis sur qu'il doit etre possible "d'échaper" les caractères " dans un print.
essaye un truc dans ce genre:

Print "hier toto a dit \"salut\"";

ou alors essaye de concaténer ton texte avec ta variable. Je ne suis pas un dieu du php mais il me semble que pour concaténer deux chaine l'opéateur c'est ..
par exemple "toto".."titi" donnera "tototiti"

du coup tu peux essayer un truc comme ça :

Print"document.form.area.value=\""..$adjectif.."\"
;";

guyver2
guyver2
Niveau 10
18 juin 2008 à 17:44:45

arg la dernière et plus importante ligne est passé a la trappe...

Print"document.form.area.value=\""..$adjectif.."\"
;";

guyver2
guyver2
Niveau 10
18 juin 2008 à 17:46:58

désolé pour le triple post mais il s'avère que c'est ce satané forum qui s'amuse a deformer mes propos

il faut ecrire en une seule ligne ce qui se trouve apres le print. il ne doit pas y avoir de retour a la ligne avant le 1er point virgule.

Disque-Lexique
Disque-Lexique
Niveau 10
18 juin 2008 à 18:08:45

Oula, tu nous fais un mélange entre PHP et JavaScipt^^

Dans le Print du PHP, on met des instruction HTML seulement, pas du JavaScript.Mais je vois où tu veux en venir :-)))

En fait, je cherche bien une méthode de ce genre, mais pas pour PHP, pour JavaScript.Car j'ai bien testé, et le $adjectif envoyé par le Print en PHP fonctionne bien, avec ou sans espace.

Ce qui pose problème, c'est la réception de ce $adjectif dans la fonction JavaScript lorsque $adjectif contient un ou des espaces.

En tout cas, merci de m'aider :)

guyver2
guyver2
Niveau 10
18 juin 2008 à 18:49:34

attend, tu m'embrouille en disant que je melange javascript et php. Car ce n'est pas du tout ce que j'ai l'impression de t'avoir dis.

[relecture de tout le topic]
OK je vois ce que tu veux dire. Je n'ai juste pas pris le bon exemple.
C'est $adjectif (une variable de php) qui contient la chaine avec les espaces, c'est bien ça ? et tu voudrais l'ecrire comme paramètre d'une fonction javascript.

un truc comme ça ça fonctionne ? (en une seule ligne au cas ou le formatage sauterait)

Print "<a href='#' onmouseover=afficher(\""..$adjectif.."\") onmouseout='effacer()'> etc... ";

si ta variable $adjectif contient un truc du genre:
toto titi

alors ça va ecrire :
<a href='#' onmouseover=afficher("toto titi") onmouseout='effacer()'>

Disque-Lexique
Disque-Lexique
Niveau 10
18 juin 2008 à 18:54:25

Jusque là, on est bien d'accord.

Le problème est que la fonction afficher en question, avec "toto titi" passé en paramètre, ça donne :

function afficher(toto titi)
{
document.form.area.value=toto titi;
}

Et ça, le Javascript, il n'aime pas !

guyver2
guyver2
Niveau 10
18 juin 2008 à 19:17:01

ok, c'est donc là le point de notre mésentente.

Ce que j'essaye d'expliquer a grand coup d'exemples mal tournés c'est que tu dois mettre des guillemets autour de ta chaine de caractère passée en paramètre a ta fonction javascript:

essaye avec :
// definition de la fonction
function afficher(chaine)
{
document.form.area.value=chaine;
}

// appel de la fonction avec une chaine contenant des espace:
afficher("toto titi");

Les guillemets vont là (lors de l'appel de la fonction)

Disque-Lexique
Disque-Lexique
Niveau 10
18 juin 2008 à 19:23:13

On tourne en rond lol.

Ma fonction afficher est dans un Print, ce qui fait que je ne peux pas mettre de guillemets dans l'appel :

Print "...afficher('$adjectif')...";

Donc j'ai mis des quotes.Si je mets des guillemets, cela ne fonctionne pas, ni doubles quotes, ni doubles guillemets, ni guillemets+quotes, ni quotes+guillemets...D'où ma demande d'aide.
Je sens qu'il va falloir que je trouve un autre moyen de faire ça :o))

guyver2
guyver2
Niveau 10
18 juin 2008 à 19:58:41

d'ou ma proposition d'échaper tes guillemet avec l'antislash

essaye
Print"coucou \"phrase entre guillement\" s'affiche entre guillemets";

Disque-Lexique
Disque-Lexique
Niveau 10
18 juin 2008 à 20:12:53

Le résultat est identique.

guyver2
guyver2
Niveau 10
18 juin 2008 à 20:18:15

Sacrebleu !
pourtant tu devrais avoir les guillemets...

essaye avec la fonction echo qui à l'air de faire ce que je raconte depuis tout à l'heure.
http://www.siteduzero.com/tuto-3-68-1-premiers-pas-avec-php.html#ss_part_2
regarde le point : "Comment faire pour afficher un guillemet ?"

Disque-Lexique
Disque-Lexique
Niveau 10
18 juin 2008 à 20:26:08

Désolé, rien n'y fait.Echo ne change rien non plus.

Je reste convaincu que le problème se trouve au niveau du JavaScript, et non pas du PHP.

Disque-Lexique
Disque-Lexique
Niveau 10
18 juin 2008 à 20:28:56

Je viens de faire un test : si je passe le paramètre avec un apostrophe, ça fonctionne.C'est seulement en cas d'espace que ça ne fonctionne pas.

Mais...Si je mets un   et bien ça fonctionne aussi ! Seulement, je ne peux pas mettre des   partout, cela crée une chaine trop longue pour être gérée par PHPMyAdmin.

guyver2
guyver2
Niveau 10
18 juin 2008 à 20:31:01

c'est facile de savoir d'ou vient le probleme,
lance ta fonction "a la main" en lui donnant toi meme une chaine de caractére avec et sans guillemet:

afficher(totot titi);
afficher("totot titi");

et regarde si l'une d'elle (plutot la seconde) fonctionne
Si ça marche alors le pb vient du php, sinon il vient de ta fonction javascript.

VouVerreyDan1an
VouVerreyDan1an
Niveau 5
18 juin 2008 à 20:31:40

ben crée une variable de type chaine qui contient "&nbsp" et tu remplaces nbsp par ta variable, ca fait gagner quelques caracteres

guyver2
guyver2
Niveau 10
18 juin 2008 à 20:51:32

ou meme mieu :
si tu arrive a enregistrer correctement ta chaine avec espace dans ta BdD et que tu arrive aussi a recuperer correctement cette chaine mais que c'est juste le passage a la fonction javascript qui pose problème.

Tu peux traiter ta chaine avec espace juste apres l'avoir lue dans la BdD pour remplacer tout les espace par &nbsp.

comme ça tu n'augmente pas la taille des chaines stockées dans la base de données.

Disque-Lexique
Disque-Lexique
Niveau 10
18 juin 2008 à 20:52:38

VouVerreyDan1an :d) Pas possible, la description (contenu de $adjectif) est définie dans PHPMyAdmin, pas sur la page PHP.

guyver2 :d)

Alors, ma fonction JavaScript est :

function afficher($adjectif)
{
document.form.area.value=$adjectif;
}

Si, par exemple, le $adjectif envoyé par le PHP est "toto titi", ça donne :

function afficher(toto titi)
{
document.form.area.value=toto titi;
}

J'ai testé "à la main", et ça ne fonctionne pas.

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment