Avatar billede skummet Nybegynder
18. juni 2003 - 01:12 Der er 14 kommentarer og
1 løsning

PHP & javascript problemer (overlib.js)

Hej,

Jeg prøver forgæves at bruge noget javascript onmouseover gøgl i php, med php indlejret i js delen... lyder det forvirrende? her er lidt kode der forhåbentligt forklarer det bedre:

...
while ($line = mysql_fetch_object($result, MYSQL_ASSOC))
{
...
if ($line->setlist)
{
print "<a href=\"setlist.php?num={$line->num}\" onmouseover=\"return overlib('print \"{$line->setlist}\";');\" onmouseout=\"return nd();\">S</a>";
}
else...

Mit problem er at det ikke er al koden i overlib('...') der bliver udført. {$line->setlist} virker fint, men print og " " bliver bare udskrevet som det står...

paste fra htmlen der bliver generet:
onmouseover="return overlib('print "Test af setlistfunktion;1;2;3";');"

'Test af setlistfunktion;1;2;3' kommer fra DBen

overlib er en popop ting... se den her: http://www.bosrup.com/web/overlib/
´
Håber der er en venlig sjæl der kan hjælpe med at få hele phpkoden i jsdelen udført! :)

Jeg er ny herinde, så jeg håber jeg har pointsat korrekt?
Avatar billede jakoba Nybegynder
18. juni 2003 - 01:19 #1
det du laver med php er en fil med HTML og javascript kode i. Den fil bliver så sendt til brugerens browser, og derefter er php helt ude af billedet. du kan ikke aktivere nogen php funktioner i den fil, kun javascript.

så når du skriver ordet 'print' til den fil er det præcis hvad du får ordet 'print' som der også står i filen.

mvh JakobA
Avatar billede ahv Nybegynder
18. juni 2003 - 01:19 #2
print "<a href='setlist.php?num={$line->num}' onmouseover=\"return overlib('{$line->setlist}');\" onmouseout='return nd();'>S</a>";
Avatar billede ahv Nybegynder
18. juni 2003 - 01:21 #3
print "<a href=\"setlist.php?num={$line->num}\" onmouseover=\"return overlib('{$line->setlist}');\" onmouseout=\"return nd();\">S</a>";
Avatar billede jakoba Nybegynder
18. juni 2003 - 01:21 #4
hvis du blot skriver:
  print "<a href=\"setlist.php?num={$line->num}\" onmouseover=\"return overlib('{$line->setlist}');\" onmouseout=\"return nd();\">S</a>";
tror jeg det vil virke som du ønsker.
Avatar billede skummet Nybegynder
18. juni 2003 - 01:23 #5
hehe jep.. sorry, var lidt hurtigt ude med spørgsmålet, selvfølgelig skal jeg ikke bruge print! Var netop igang med at skrive og spørge hvordan man mon trak sit spørgsmål tilbage...
MEN!
hvordan kan jeg så få den til at køre dette inde i overlib():

$string = $line->setlist;
                  $tok = strtok($string,";");
                  while ($tok) {
                  print "{$tok}<br>";
                $tok = strtok(";");

        }


(må jeg overhovedet stille et nyt spørgsmål, eller skal jeg "bare" dele points ud for de svar jeg har fået nu og så oprette et nyt?)
Avatar billede jakoba Nybegynder
18. juni 2003 - 01:26 #6
100 points er rigeligt (60 er for et SVÆRT spm) så lad os prøve nr 2 også :-)

men du kommer til at spørge så det kan forstås.  "køre dette inde i overlib()" ???

du kan som sagt overhovedet ikke udføre php-kode fra browseren. Så hvis det er det du mener, så kan du bare ikke.
Avatar billede ahv Nybegynder
18. juni 2003 - 01:27 #7
Jeg smutter i seng nu, ser lige på det imorgen, hvis Jakob skulle have løst det imellem tiden, så må du selv bestemme om du mener jeg skal have nogle for den rettede linie jeg postede.

Go'nat til alle.
Avatar billede skummet Nybegynder
18. juni 2003 - 01:38 #8
ok... Det jeg vil er: jeg har en række data i min db separeret af ; , eller whatever... jeg vil gerne have det delt op så det står fint på en liste således:

1
2
3

(istedet for 1 2 3)

til det havde jeg tænkt mig at bruge tokenizer koden jeg postede ovenfor.
Dette vil jeg så gerne have smidt ind i en popup - overlib()

Dvs stringtokenizerkoden skal erstatte {$line->setlist} inde i overlib()

Det kommer godt nok til at se lidt rodet ud men koden:

print "<a href=\"setlist.php?num={$line->num}\"
onmouseover=\"return overlib('
    $string = $line->setlist;
    $tok = strtok($string,";");
    while ($tok) {
              print "{$tok}<br><br>";
            $tok = strtok(";");

              };');\"

onmouseout=\"return nd();\">S</a>";


Giver det mening?

(godnat ahv!)
Avatar billede jakoba Nybegynder
18. juni 2003 - 01:39 #9
Et gæt igen:
din steng i  $line->setlist  indeholder ';' tegn der skal erstattes med '<br>' koder.
det gøres nemmest med funktionen str_replace
    $tok = str_replace( ";", "<br>", $line->setlist);

du kan også gøre det direkte idet du bygger den string der skal skrives med print hvis du bruger php's .-operator til at sammensætte strengen af flere små stumper:
  print "<a href=\"setlist.php?num={$line->num}\" onmouseover=\"return overlib('" . str_replace( ";", "<br>", $line->setlist) . "');\" onmouseout=\"return nd();\">S</a>";

mvh JakobA
Avatar billede skummet Nybegynder
18. juni 2003 - 01:47 #10
!!! :-D

Kender meget lidt til php og har indtil nu bare prøvet mig frem... men damn din option #2 virker perfekt! :) mange tak!

hvad siger du til 80/20 eller 70/30 point fordeling... vil ahv være tilfreds med det eller?
Avatar billede jakoba Nybegynder
18. juni 2003 - 01:48 #11
dit eget forslag kan også bruges, men på den måde skal der være 3 print sætninger til at udskrive hver sin del af den samlede streng:

print "<a href=\"setlist.php?num={$line->num}\"
onmouseover=\"return overlib('";      // første stykke af strengen

    $string = $line->setlist;
    $tok = strtok($string,";");
    while ($tok) {
        print "{$tok}<br><br>";  // de enkelte linier af htnlkode
        $tok = strtok(";");
    }                            // husk at afslutte din while {} klamme

print "');\";                        // sidste stykke

mvh JakobA
Avatar billede jakoba Nybegynder
18. juni 2003 - 01:49 #12
ahv har svaret. lad ham få dem.
Avatar billede skummet Nybegynder
18. juni 2003 - 01:51 #13
Sure? Det er jo dig der sidder oppe og sikkert ryster på hovedet af min kode ;)
Men så smider jeg pointene hans vej, men siger skam mange tak for hjælpen til dig!! :) godnat!
Avatar billede jakoba Nybegynder
18. juni 2003 - 01:57 #14
Kik på nogen af de spørgsmål andre har stillet. Det bliver trættende at ryste så meget på hovedet.

Så det jeg mere kikker efter er de spm den samme person stiller måneden efter. Det er rigtig rart når man kan se forskel :-))

mvh JakobA
Avatar billede skummet Nybegynder
18. juni 2003 - 02:01 #15
...Og med det fik du på forunderlig vis lagt et fint lille forventnings pres på mig... og jeg som troede jeg havde sommerferie nu.. ak... dk.php.net here i come! ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester