Avatar billede skovjuul Nybegynder
15. januar 2007 - 12:21 Der er 12 kommentarer og
1 løsning

Bedre visning af php end <iframe>

Hej, forholdsvis ny i php her.

Jeg har et php-dokument, der laver en tabel over en kalender jeg har i en MySql-database.
Den side vil jeg have vist, op til flere gange, på en anden hjemmeside.
Lige nu bruger jeg:
<iframe src='index.php?ugenummer=0&aftalemin=75&dagstarter=09:00:00&dagslutter=18:00:00&behandler=15&visdage=1234567' height=570 width=350></iframe><br>
<iframe src='index.php?ugenummer=1&aftalemin=60&dagstarter=08:00:00&dagslutter=17:00:00&behandler=15&visdage=1234567' height=570 width=350></iframe><br>

Men jeg synes ikke Iframe er så nem at arbejde med, der kommer en masse spild-plads rundt om og height/width skal sættes manuelt alt efter hvor stor en tabel der returneres.
Er der andre måder at vise resultatet på? Jeg prøvede med <img src...>, kan det på nogen måde lade sig gøre? Eller er der som spurgt en bedre måde jeg ikke har opdaget?

På forhånd tak
Jesper
Avatar billede coderdk Praktikant
15. januar 2007 - 14:22 #1
Du kan generere et javascript, så din kunde kan sætte:

<script type="text/javascript" src="http://dinserver.dk/'index.php?ugenummer=0&aftalemin=75&dagstarter=09:00:00&dagslutter=18:00:00&behandler=15&visdage=1234567"></script>

I den laver du så en masse document.write... Det er lidt besværligt at skulle escape alting osv, men tilgengæld er det meget fleksibelt, og det virker - Det er bl.a. også sådan reklamer som adsense virker
Avatar billede skovjuul Nybegynder
15. januar 2007 - 14:28 #2
Øh, ikke helt forstået... er det ikke nok at skrive <script type"... ></script> og så er det dét?
Lyder som om jeg skal ændre noget i index.php? Er som sagt ikke haj til det her :)
Avatar billede coderdk Praktikant
15. januar 2007 - 14:51 #3
Ja, du skal lave alt dit output om til javascript og lave sådan nogle linjer:

document.write('<div id="blah">Her er noget output</div>');

osv
Avatar billede coderdk Praktikant
15. januar 2007 - 14:51 #4
Evt. benyt ob_start/ob_get_contents/ob_end_clean til at generere det...
Avatar billede skovjuul Nybegynder
16. januar 2007 - 11:34 #5
Hmm.... jeg skal vist ha' lidt mere hjælp til det her :)

I min .php fil har jeg f.eks.

<?php
$Visdage = "1234";
//Start tabel
print "document.write('<table><tr><td>')";
print "document.write('Tider</td>')";
//Fyld første række med de rigtige dage 
for ($count = 0; $count < 7; $count++){ //alle 7 dage
    if(strpos($Visdage, strval($count+1))){
      if ($tmpNutal-1<0){
      $week2[] = strtotime(sprintf("+%u day",abs($tmpNutal-1)));//convertere minusdage til plusdage (it really really works :)
      print "document.write('<td>')";
        switch (strftime("%w",strtotime(sprintf("+%u day",abs($tmpNutal-1))))){
        case 0: print "document.write('Søn')"; break;
        case 1: print "document.write('Man')"; break;
        case 2: print "document.write('Tirs')"; break;
        case 3: print "document.write('Ons')"; break;
        case 4: print "document.write('Tors')"; break;
        case 5: print "document.write('Fre')"; break;
        case 6: print "document.write('Lør')"; break;
      }
        print "document.write('</td>')";   
    }
      else{
      $week2[] = strtotime(sprintf("-%u day",$tmpNutal-1));
      print "document.write('<td>')";
        switch (strftime("%w",strtotime(sprintf("-%u day",$tmpNutal-1)))){
        case 0: print "document.write('Søn')"; break;
        case 1: print "document.write('Man')"; break;
        case 2: print "document.write('Tirs')"; break;
        case 3: print "document.write('Ons')"; break;
        case 4: print "document.write('Tors')"; break;
        case 5: print "document.write('Fre')"; break;
        case 6: print "document.write('Lør')"; break;
      }
        print "document.write('</td>')";   
    }
  }
  $tmpNutal--;
 
}
print "document.write('</tr></table>')";

Ovenstående kode er forkortet og nogle af variablerne bliver erklæret længere oppe, men bare for at vise hvordan jeg troede det skulle gøres.

Men når jeg så kalder som dit første eksempel <script type="text/javascript" src="http://dinserver.dk/'index.php?ugenummer=0&aftalemin=75&dagstarter=09:00:00&dagslutter=18:00:00&behandler=15&visdage=1234567"></script>
er mit output bare:
document.write('')document.write('Tider ')document.write(' ')document.write('Man')document.write(' ')document.write(' ')document.write('Tirs')document.write(' ')document.write(' ')document.write('Ons')document.write(' ')document.write(' ')document.write('Tors')document.write(' ')document.write(' ')document.write('Fre')document.write(' ')document.write(' ')document.write('Lør')document.write(' ')document.write(' ')document.write('Søn')document.write(' ')document.write('
osv...

noget siger mig det kræver lidt flere ændringer i .php-filen?
Avatar billede skovjuul Nybegynder
16. januar 2007 - 11:37 #6
Hmmm.... faktisk var der slet ikke noget output, det jeg troede jeg fik ud var i min iframe nr 2. så den er faktisk helt gal :D
Avatar billede skovjuul Nybegynder
17. januar 2007 - 15:21 #7
Jeg kan simpelthen ikke få det her til at virke.

Jeg prøvet at lave en scripttest.php som jeg kalder i min main.php men det virker ikke.

Hvis jeg bare laver en scripttest.js og i den skriver document.write('test'); og kalder den fra main.php med
print "<script type='text/javascript' src='scripttest.js'></script>"; virker det fint, men jeg kan ikke få lavet noget php i scripttest.xxx og så kalde den fra en anden fil og stadig få et output... lyder måske lidt forvirrende, men er lidt frustreret.

Nogen der kan bikse et mini-eksempel sammen?

Hilsen
Jesper
Avatar billede coderdk Praktikant
17. januar 2007 - 16:23 #8
scripttest.php skal kaldes sådan:

<script type='text/javascript' src='scripttest.php'></script>

Før du skriver noget ud i scripttest.php skal du lave en content-type:

header("Content-Type: text/javascript");

:)
Avatar billede coderdk Praktikant
17. januar 2007 - 16:25 #9
<script type="text/javascript" src="http://dinserver.dk/'index.php?ugenummer=0&aftalemin=75&dagstarter=09:00:00&dagslutter=18:00:00&behandler=15&visdag

bare så du ikke laver noget med den der, så er der altså et ' for meget før index.php (min fejl)
Avatar billede skovjuul Nybegynder
17. januar 2007 - 16:56 #10
wow... jeg må være tungnem, det virker stadig ikke.

Jeg har nu scripttest.php som indeholder:
header("Content-Type: text/javascript");
<?php
  print "document.write('<b>muuh</b> og noget ikke fed');";
?>

og så har jeg vis.php som indeholder:
<?php
  print "<script type='text/javascript' src='scripttest.php'></script>";
?>

når jeg kalder vis.php sker der intet andet end en advarsel om "Done but with errors on page" i statuslinien i bunden af browseren (IE7 btw).
Avatar billede coderdk Praktikant
17. januar 2007 - 19:57 #11
scripttest.php:

<?php

  header("Content-Type: text/javascript");
  print "document.write('<b>muuh</b> og noget ikke fed');";

?>

vis.php:

<?php

  print "<script type='text/javascript' src='scripttest.php'></script>";

?>
Avatar billede skovjuul Nybegynder
17. januar 2007 - 20:44 #12
LOL ... tak for din tålmodighed coderdk, nu virker det.
Smider du et svar?

Hyg dig
Jesper
Avatar billede coderdk Praktikant
17. januar 2007 - 20:47 #13
Bare i orden :-)
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