echo jacascript code

Status
Niet open voor verdere reacties.

That Guy

Meubilair
Lid geworden
28 nov 2006
Berichten
5.010
Beste allen,

een vraagje - ik wil dus een javascript-spelletje in een php pagina, zodat ik bijvoorbeeld de score in een database kan opslaan.

Punt: het spelletje (alleen BODY-javascript) werkt in een .html file goed, maar als ik het uit-echo in een php file, niet. Ik heb dus alle quotes ( " ) van slashes voorzien, maar dat werkt niet.

stukkie-code:
Code:
echo "<SCRIPT type=\"text/javascript\">";

echo "var enemy = new MakeArray( width_n); // enemy positions";
echo "var wtime; // wait time";
echo "var score; // points";
echo "var gameover; // in case of gameover set to true";

echo "document.write( \"<FORM NAME='fm1'>\");";
echo "document.write( \"<INPUT TYPE='text' NAME='message' SIZE=20>\");";
echo "document.write( \"</FORM>\");";
echo "document.write( \"<FORM NAME='fm2'><TABLE>\");";
echo "for( var i=0; i<height_n; i++){";
echo "document.write( \"<TR>\");";
echo "for( var j=0;j<width_n; j++){";
echo "document.write( \"<TD><CENTER><INPUT TYPE='radio'></CENTER></TD>\");";
echo "}";

in de bron van de pagina staat alle code wel (dus de echo werkte wel)
stukkie bron:
Code:
<SCRIPT type="text/javascript">function MakeArray( n){this.length = n;for (var i = 1; i <= n; i++) {this[i] = 0}return this}var d0 = new Date();var r0 = d0.getSeconds();function poor_rand(){d1 = new Date();r0 = (r0 * r0 + r0 + d1.getSeconds()) % 3721 ;return r0 % width_n;}var height_n = 8;var width_n =5;var enemy = new MakeArray( width_n);var wtime;var score;var gameover;

maar allemaal achter elkaar. Kan dat het zijn? Ik heb voor het testen eerst ook gewoon de HTML bestand ge-included, dat werkte dus wel.


V. :thumb:
 
Laatst bewerkt:
Dat het achter elkaar staat maakt niet zoveel uit aangezien Javascript weet wanneer een commando eindigd (Bij een ; weet het dat er een eind is gekomen aan een regel)

Ik heb dit geprobeerd:
PHP:
echo '
<SCRIPT type="text/javascript">
  var enemy = new MakeArray(width_n); // enemy positions
  var wtime; // wait time
  var score; // points
  var gameover; // in case of gameover set to true
  document.write(\'<FORM NAME="fm1">\');
  document.write(\'<INPUT TYPE="text" NAME="message" SIZE="20">\');
  document.write(\'</FORM>\');
  document.write(\'<FORM NAME="fm2"><TABLE>\');
  for(var i=0; i < height_n; i++) {
    document.write(\'<TR>\');
     for(var j=0;j<width_n; j++) {
       document.write(\'<TD><CENTER><INPUT TYPE="radio"></CENTER></TD>\');
     }
   }
</script>';
Het staat bij mij niet meer achter elkaar maar ik krijg geen resultaat.
Haal ik
Code:
var enemy = new MakeArray(width_n); // enemy positions
weg dan krijg ik een textveld te zien. Komt waarschijnlijk omdat ik geen object MakeArray heb en ook geen variabelen genaamd width_n en height_n.
 
Probeer het eens zo:

PHP:
echo '<SCRIPT type="text/javascript">
               var enemy = new MakeArray( width_n); // enemy positions
               var wtime; // wait time
               var score; // points
               var gameover; // in case of gameover set to true
               document.write( "<FORM NAME=\'fm1\'>");
               document.write( "<INPUT TYPE=\'text\' NAME=\'message\' SIZE=20>");
               document.write( "</FORM>");
               document.write( "<FORM NAME=\'fm2\'><TABLE>");
               for( var i=0; i<height_n; i++){
               document.write( "<TR>");
                  for( var j=0;j<width_n; j++){ 
               document.write( "<TD><CENTER><INPUT TYPE=\'radio\'></CENTER></TD>");
                  }
                } ';
 
Laatst bewerkt:
alvast bedankt voor het meedenken, maar ik heb dus nu dit:

PHP:
<?php
echo '<SCRIPT type="text/javascript">

function MakeArray( n){
this.length = n;
for (var i = 1; i <= n; i++) {
this[i] = 0
}
return this
}

var d0 = new Date();
var r0 = d0.getSeconds();
function poor_rand(){
d1 = new Date();
r0 = (r0 * r0 + r0 + d1.getSeconds()) % 3721 ;
return r0 % width_n;
}

var height_n = 8;
var width_n =5;

var enemy = new MakeArray( width_n);
var wtime;
var score;
var gameover;

document.write( "<FORM NAME=\'fm1\'>");
document.write( "<INPUT TYPE=\'text\' NAME=\'message\' SIZE=20>");
document.write( "</FORM>");
document.write( "<FORM NAME=\'fm2\'><TABLE>");
for( var i=0; i<height_n; i++){
document.write( "<TR>");
for( var j=0;j<width_n; j++){
document.write( "<TD><CENTER><INPUT TYPE=\'radio\'></CENTER></TD>");
}
document.write( "</TR>");
}
document.write( "<TR>");
for( var j=0;j<width_n; j++){
document.write( "<TD><INPUT TYPE=\'button\' VALUE=\'-x-\' onClick=\'fire(" + j + ")\'></TD>");
}
document.write( "</TR>");
document.write( "</TABLE>");
document.write( "<INPUT TYPE=\'button\' VALUE=\'START\' onClick=\'game_start()\'>");
document.write( "</FORM>");

function come(){
var n = poor_rand();
document.fm2.elements[ width_n * enemy[n+1] + n].checked = true;
enemy[n+1]++;
if( enemy[n+1] < height_n){
setTimeout("come()"
wtime);
}else{
gameover = true;
document.fm1.message.value =  "GAME OVER:" + score ;
}
}

function fire( n){
if( gameover ) return;
for( var i=0; i<enemy[n+1]; i++){
document.fm2.elements[ width_n * i + n].checked = false;
}
score += enemy[ n+1];
document.fm1.message.value = "Points:" + score;
enemy[ n+1] = 0;
if( wtime > 100){ wtime -= 10};
}

function game_start(){
for( var n=0; n<width_n; n++){
for( var i=0; i<enemy[n+1]; i++){
document.fm2.elements[ width_n * i + n].checked = false;
}
enemy[n+1] = 0;
}
wtime = 400;
score = 0;
gameover = false;
document.fm1.message.value = "Points:" + score;
setTimeout("come()" wtime);
}

// -->
</SCRIPT>';

?>

Okay, in de bron staat alles dus mooi uit-ge-echoed, maar het werkt nogsteeds niet... (vreemd :p)



V.:thumb:
 
Laatst bewerkt:
Hmm ik denk dat het handiger is als je het werkende HTML-bestand hier even plaatst aangezien je binnen het JS formulier velden aanroept voor een waarde.

Als het goed is moet hij zonder PHP werken zei je dus dan kunnen wij kijken of we hem met PHP aan de praat krijgen :)
 
randomnaampje.html

Code:
<html><head></head><body>
<SCRIPT type="text/javascript">

// ---- Make array
function MakeArray( n){
    this.length = n;
    for (var i = 1; i <= n; i++) { 
        this[i] = 0 
    }
    return this
}

// ----- poor man's random number
var d0 = new Date();
var r0 = d0.getSeconds();
function poor_rand(){
    d1 = new Date();
    r0 = (r0 * r0 + r0 + d1.getSeconds()) % 3721 ;
    return r0 % width_n;
}

// ---- Parameters of game
var height_n = 8;
var width_n =5;

// ---- state of game
var enemy = new MakeArray( width_n); // enemy positions
var wtime; // wait time
var score; // points
var gameover; // in case of gameover set to true

// ----- Make the battlefield.
document.write( "<FORM NAME='fm1'>");
document.write( "<INPUT TYPE='text' NAME='message' SIZE=20>");
document.write( "</FORM>");
document.write( "<FORM NAME='fm2'><TABLE>");
for( var i=0; i<height_n; i++){
    document.write( "<TR>");
    for( var j=0;j<width_n; j++){
        document.write( "<TD><CENTER><INPUT TYPE='radio'></CENTER></TD>");
    }
    document.write( "</TR>");
}
document.write( "<TR>");
for( var j=0;j<width_n; j++){
    document.write( "<TD><INPUT TYPE='button' VALUE='-x-' onClick='fire(" + j + ")'></TD>");
}
document.write( "</TR>");
document.write( "</TABLE>");
document.write( "<INPUT TYPE='button' VALUE='START' onClick='game_start()'>");
document.write( "</FORM>");

// ----- game main timer event 
// -----     enemy come one step
function come(){
    var n = poor_rand();
    document.fm2.elements[ width_n * enemy[n+1] + n].checked = true;
    enemy[n+1]++;
    if( enemy[n+1] < height_n){
        setTimeout("come()", wtime);
    }else{
      gameover = true;
      document.fm1.message.value =  "GAME OVER:" + score ;
    }
}

// ----- Fire the n th beam
function fire( n){
    if( gameover ) return;
    for( var i=0; i<enemy[n+1]; i++){ // clear enemy
        document.fm2.elements[ width_n * i + n].checked = false;
    }
    score += enemy[ n+1];
    document.fm1.message.value = "Points:" + score;
    enemy[ n+1] = 0;
    if( wtime > 100){ wtime -= 10};
}

// ---- initialize & start game
function game_start(){
   for( var n=0; n<width_n; n++){
        for( var i=0; i<enemy[n+1]; i++){
            document.fm2.elements[ width_n * i + n].checked = false;
        }
        enemy[n+1] = 0;
    }
    wtime = 400;
    score = 0;
    gameover = false;
    document.fm1.message.value = "Points:" + score;
    setTimeout("come()", wtime);
}

// -->
</SCRIPT>
</body></html>

arigato!
 
PHP:
<html>
<head></head><body>
<?php
echo'
<SCRIPT type="text/javascript">

// ---- Make array
function MakeArray( n){
    this.length = n;
    for (var i = 1; i <= n; i++) { 
        this[i] = 0 
    }
    return this
}

// ----- poor man\'s random number
var d0 = new Date();
var r0 = d0.getSeconds();
function poor_rand(){
    d1 = new Date();
    r0 = (r0 * r0 + r0 + d1.getSeconds()) % 3721 ;
    return r0 % width_n;
}

// ---- Parameters of game
var height_n = 8;
var width_n =5;

// ---- state of game
var enemy = new MakeArray( width_n); // enemy positions
var wtime; // wait time
var score; // points
var gameover; // in case of gameover set to true

// ----- Make the battlefield.
document.write( "<FORM NAME=fm1>");
document.write( "<INPUT TYPE=text NAME=message SIZE=20>");
document.write( "</FORM>");
document.write( "<FORM NAME=fm2><TABLE>");
for( var i=0; i<height_n; i++){
    document.write( "<TR>");
    for( var j=0;j<width_n; j++){
        document.write( "<TD><CENTER><INPUT TYPE=radio></CENTER></TD>");
    }
    document.write( "</TR>");
}
document.write( "<TR>");
for( var j=0;j<width_n; j++){
    document.write( "<TD><INPUT TYPE=button VALUE=-x- onClick=fire(" + j + ")></TD>");
}
document.write( "</TR>");
document.write( "</TABLE>");
document.write( "<INPUT TYPE=button VALUE=START onClick=game_start()>");
document.write( "</FORM>");

// ----- game main timer event 
// -----     enemy come one step
function come(){
    var n = poor_rand();
    document.fm2.elements[ width_n * enemy[n+1] + n].checked = true;
    enemy[n+1]++;
    if( enemy[n+1] < height_n){
        setTimeout("come()", wtime);
    }else{
      gameover = true;
      document.fm1.message.value =  "GAME OVER:" + score ;
    }
}

// ----- Fire the n th beam
function fire( n){
    if( gameover ) return;
    for( var i=0; i<enemy[n+1]; i++){ // clear enemy
        document.fm2.elements[ width_n * i + n].checked = false;
    }
    score += enemy[ n+1];
    document.fm1.message.value = "Points:" + score;
    enemy[ n+1] = 0;
    if( wtime > 100){ wtime -= 10};
}

// ---- initialize & start game
function game_start(){
   for( var n=0; n<width_n; n++){
        for( var i=0; i<enemy[n+1]; i++){
            document.fm2.elements[ width_n * i + n].checked = false;
        }
        enemy[n+1] = 0;
    }
    wtime = 400;
    score = 0;
    gameover = false;
    document.fm1.message.value = "Points:" + score;
    setTimeout("come()", wtime);
}

// -->
</SCRIPT>';
?>
</body></html>
 
he! het werkt! dank!

(was had je nou veranderd? ik had geloof ik hetzelfde al geprobeert =/ )


edit: alle single-quotes weggehaald? =D
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan