php array in eine javascript function

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • php array in eine javascript function

    Hallo Leute!
    Ich hoffe ich habe den richtigen Thread gewählt.
    Ich habe vor ein php array in eine js function zu bringen. Jedoch soll diese function nicht einfach nur das array ausgeben sondern immer nur ein Teil. Ich weiß nicht ganz wie ich hier weiter kommen soll. Ich habe im Netz nur gefunden wie man das ganze array ausgibt. Hier mein Quellcode, der eine Reihe buttons ausgibt auf denen beim click die Werte 11,12,13...,20 stehe sollen. Momentan kommt bei einem click nur die 20 zu stande weil er sich nur das letzte Element des Arrays merkt:
    Code:
    <?php
    $array=array();
    for($i=0;$i<=10;$i++){
    	$array[$i]=$i+10;
    }
    echo "<script type='text/javascript' src='jquery.js'></script>";
    echo "<table border='1'>";
    for($i=0;$i<=10;$i++){
    	echo "<td><input type='submit' name='button[]' value='  '</td>";
    	echo "<script type='text/javascript'>
    		var Wert=".$array[$i].";
    		$(document).ready(function(){
    			$('input').click( function(){
    				$(this).attr('type','submit').val(Wert);
    			});
    		});
    		</script>";
    	}
    		
    ?>
    Zuletzt geändert von Simbo_der_Baer; 01.02.2014, 11:58.

  • #2
    Warum gibst du immer wieder den selben JavaScript-Code aus? Warum schreibst du den Wert von $array nicht einfach in eine JavaScript-Variable und verwendest diese dann? Mal davon abgesehen, dass dein HTML-Code fehlerhaft ist. Den solltest du reparieren.

    Hilfreiches Werkzeug:

    http://validator.w3.org/

    Kommentar


    • #3
      danke für die schnelle antwort aber dazu noch fragen.
      1. Du meinst also ich sollte das ganze array in javascript speichern? z.B. json_encode($array) oder meinst du ausserhalb der for-Schleife ??? aber mein Problem ist dabei das ich ja nicht das ganze array ausgibt, sondern nur den aktuellen Wert.
      2. Meinst du zum 'kaputen' HTML-code das ich bsw table nicht schließe?tr nicht öffne schließe? habe das programm nur schnell als test geschrieben.
      Zuletzt geändert von Simbo_der_Baer; 01.02.2014, 13:29.

      Kommentar


      • #4
        Zitat von Simbo_der_Baer Beitrag anzeigen
        Du meinst also ich sollte das ganze array in javascript speichern? z.B. json_encode($array) oder meinst du ausserhalb der for-Schleife ??? aber mein Problem ist dabei das ich ja nicht das ganze array ausgibt, sondern nur den aktuellen Wert.
        Doch, dadurch wird das ganze Array ausgegeben.

        Kommentar


        • #5
          genau das soll es doch nicht :/
          ich will ja auf den Buttons nur einen Wert stehen haben. Wenn ich auf den ersten klicke dann soll da '10' draufstehen bei dem letzten eine '20'.
          wenn ich mit Wert=".json_encode($array)." im javascript den wert 'Wert' fülle, dann weiß ich nicht wie ich genau den Wert ausgebe der grade geklickt wurde.
          Zuletzt geändert von Simbo_der_Baer; 01.02.2014, 15:14.

          Kommentar


          • #6
            Zitat von Simbo_der_Baer Beitrag anzeigen
            genau das soll es doch nicht :/
            ich will ja auf den Buttons nur einen Wert stehen haben. Wenn ich auf den ersten klicke dann soll da '10' draufstehen bei dem letzten eine '20'.
            wenn ich mit Wert=".json_encode($array)." im javascript den wert 'Wert' fülle, dann weiß ich nicht wie ich genau den Wert ausgebe der grade geklickt wurde.
            Dafür gibts ja Schleifen. Auch in JavaScript und nicht nur in PHP.

            Kommentar


            • #7
              Das weiß ich ja aber das Problem bleibt erhalten. Ich weiß nicht wie ich javascript sage bei welchem Element des arrays ich grade bin.

              Kommentar


              • #8
                Jetzt kommts mir erst: Warum schreibst du die Werte nicht einfach in die value-Attribute?

                Das Ganze sollte ja auch ohne JavaScript funktionieren und da musst du die Werte ja auch irgendwo hernehmen.

                Kommentar


                • #9
                  Ich möchte ja erst die Werte in den Button haben wenn ich draufklicke.
                  Ich bin grade am Minesweeper programmieren und habe alles fertig nur weiß ich nicht wie ich diesen Teil davon ausführe.
                  Mein versuch mit der Schleife in JS funktioniert auch nicht:
                  Code:
                  echo "<script type='text/javascript'>
                  		$(document).ready(function(){
                  			$('input:submit').click( function(){
                  				var Wert=".json_encode($array).";
                  				for(i=0;i<=10;i++){
                  					$(this).attr('name','button[i]').val(Wert[i]);
                  				}
                  			});
                  		});
                  		</script>";

                  Kommentar


                  • #10
                    Falls es interessiert hier der Quellcode von meinem MinesweeperEs kann sein dass noch irgendwo kontrollausgaben dabei sind)
                    Code:
                    <?php
                    print_r($_POST);
                    $x=10;
                    $y=10;
                    $minen=10;
                    function feld_erstellen($x,$y){
                    	$feld=array(array($y+2),array($x+2));
                    	for($i=0;$i<=$y+1;$i++){
                    		for($j=0;$j<=$x+1;$j++){
                    			$feld[$j][$i]=0;
                    		}
                    	}
                    	
                    	return $feld;
                    }
                    
                    function minen_erstellen($feld,$x,$y,$minen){
                    	for($i=1;$i<=$minen;$i++){
                    		$random_x=rand(1,$x);
                    		$random_y=rand(1,$y);
                    		if($feld[$random_x][$random_y] == 0){
                    			$feld[$random_x][$random_y]='x';
                    			
                    			
                    		}
                    		else{
                    			$i--;
                    			//echo $random_x." ".$random_y."  ";
                    			//echo $feld[$random_x][$random_y]."<br>";
                    			
                    		}
                    	}
                    	return $feld;
                    }
                    
                    function minen_aufsuchen($feld,$x,$y){
                    	for($i=1;$i<=10;$i++){
                    		for($j=1;$j<=10;$j++){
                    			$value=0;						//value gibt die Minen um die Zelle herum an
                    			$string="";						//tests
                    			if($feld[$j][$i]!=='x'){			//checken ob die Zelle keine Mine ist
                    				if($feld[$j-1][$i]==='x'){	//Links daneben
                    					$value++;
                    					$string=$string."L";
                    				}
                    				if($feld[$j-1][$i-1]==='x'){	//Links-unten daneben
                    					$value++;
                    					$string=$string."Lu";
                    				}
                    				if($feld[$j][$i-1]==='x'){	//Unten daneben
                    					$value++;
                    					$string=$string."U";
                    				}
                    				if($feld[$j+1][$i-1]==='x'){	//Rechts-unten daneben
                    					$value++;
                    					$string=$string."Ru";
                    				}
                    				if($feld[$j+1][$i]==='x'){	//Rechts daneben
                    					$value++;
                    					$string=$string."R";
                    				}
                    				if($feld[$j+1][$i+1]==='x'){	//Rechts-oben daneben
                    					$value++;
                    					$string=$string."Ro";
                    				}
                    				if($feld[$j][$i+1]==='x'){	//Oben daneben
                    					$value++;
                    					$string=$string."O";
                    				}
                    				if($feld[$j-1][$i+1]==='x'){	//Links-oben daneben
                    					$value++;
                    					$string=$string."Lo";
                    				}
                    				$feld[$j][$i]=$value;				//Wert der Zelle zuordnen
                    				//echo $j." ".$i."=".$value." und ".$string."<br>";
                    				//echo "<br> in function ".$feld[2][2];
                    			}
                    		}
                    	}
                    	//echo "<br> in function ".$feld[2][2];
                    	return $feld;
                    }
                    
                    function feld_ausgeben($feld,$x,$y){
                    	echo "<script type='text/javascript' src='jquery.js'></script>";
                    	echo "<table border='1'>";
                    	//echo "<form method='POST' name='press'>";
                    	for($i=$y;$i>0;$i--){
                    		echo "<tr>";
                    		$variable=$i;
                    		for($j=1;$j<=$x;$j++){
                    			echo "<td><input type='submit' name='button[]' value='  '></td>";
                    			
                    			echo	"<script type='text/javascript'>
                    						var Wert= ".$feld[$i][$j].";
                    						$(document).ready(function() {
                    							$('input').click( function(){
                    								$(this).attr('type','submit').val(Wert);
                    							});
                    						});
                    					</script>";
                    		}
                    		echo "</tr>";
                    	}
                    	//echo "</form>";
                    	echo "</table>";
                    }
                    if(empty($_POST['feld'])){
                    	$feld=feld_erstellen($x,$y);
                    	$feld=minen_erstellen($feld,$x,$y,$minen);
                    	$feld=minen_aufsuchen($feld,$x,$y);
                    	echo "<form method='POST' name='Starten'>";
                    	$i=0;
                    	for($i=0;$i<=$x+1;$i++){
                    		//$j=0;						Ausgabetests
                    		foreach($feld[$i] as $value){
                    			echo "<input type='hidden' name='feld[]' value='".$value."'>";
                    			//$j++;
                    		}
                    		//echo $j."j<br>";
                    	}
                    	
                    	
                    	echo "<input type='submit' value='Starten'>";
                    	echo '</form>';
                    	//echo "works";
                    	
                    }
                    else{
                    	$feld=array(array(),array());
                    	$i=0;
                    	foreach($_POST['feld'] as $key){
                    		$new_x=$i%($x+2);
                    		$new_y=floor($i/($x+2));
                    		$feld[$new_x][$new_y]=$key;
                    		//echo "<br>".$new_x.",".$new_y."=".$key;
                    		$i++;
                    	}
                    	//echo "works";
                    	//echo $feld[9][8];		//test
                    	$feld=minen_aufsuchen($feld,$x,$y);
                    	feld_ausgeben($feld,$x,$y);
                    }
                    	//echo $feld[1][1];
                    
                    
                    
                    
                    
                    ?>

                    Kommentar


                    • #11
                      Wozu dann überhaupt PHP? Wenn du zwingend JavaScript dafür brauchst, kannst du es ja gleich in JavaScript-Only schreiben. PHP ist dann nur ein Klotz am Bein.

                      Kommentar


                      • #12
                        Ich fühle mich mit php einfach sicherer. Javascript habe ich nur online gelernt. Ich habe das Programm auch so gut wie fertig nur fehlt halt dieser eine Teil. Wenn du eine Möglichkeit hast wie ich es auch mit PHP lösen kann, dann bin ich ganz Ohr. Ich wollte es nur nicht mit POST machen, sodass die Seite jedesmal neu lädt wenn ich einen Button klicke.

                        Kommentar


                        • #13
                          Zitat von Simbo_der_Baer Beitrag anzeigen
                          Ich fühle mich mit php einfach sicherer.
                          Dann lass JavaScript weg. Und wenns mal ohne JavaScript funktioniert, dann machst du JavaScript dazu! Stück für Stück und nicht alles auf einmal.

                          Kommentar


                          • #14
                            OffTopic:
                            Zitat von h3ll Beitrag anzeigen
                            Dann lass JavaScript weg. Und wenns mal ohne JavaScript funktioniert, dann machst du JavaScript dazu!
                            Yeah, Minesweeper server-side umgesetzt, da mach das Spielen Spaß, wenn jeder Klick erst mal neu laden der Seite erfordert
                            I don't believe in rebirth. Actually, I never did in my whole lives.

                            Kommentar


                            • #15
                              das hatte ich ja auch grad gesagt :/
                              Aber wenn ihr mir nicht helfen könnt werde ich es erstmal so versuchen. Danke soweit

                              Kommentar

                              Lädt...
                              X