• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Array aus Datenbank mit JS verarbeiten

Status
Für weitere Antworten geschlossen.

yss

Mitglied
Hey
Array in JS sind ja normalerweise so ausgebaut "wert1", "wert2", "wert3"...
Also habe ich mir gedacht, dass ich die Daten gleich als fertig lesbares Array in die Datendank speichere: "main.css", "style.css"
Das ganze hole ich per AJAX und einem PHP-Script aus der Datenbank. Als Test habe ich dann das ganze mal ausgeben lassen, und raus kommt "main.css", "style.css", so weit, so gut. Doch wenn ich nun das Array in JS auslesen will, dann gibt er mir jedes einzelne Zeichen aus, warum? Muss ich das ganze noch irgendwie umwandeln?
JS:
HTML:
//Array mit CSS-Dateien holen
			request.open("GET", "php/system/apps/getFiles.php?app="+apps[i]+"&mode=css", false);
			request.send(null);
			cssarray = request.responseText;
			
			//cssarray = new Array('main.css', 'style.css');
			for (var i = 0; i < cssarray.length; i++){
				alert(cssarray[i]);
			}
PHP:
Code:
#Die ganzen Variablen...
 # Verbindung zur Datenbank aufbauen
   $database = mysql_connect(MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);
  
   if ( $database ) {
 		
		// Auswahl der Datebank
		mysql_select_db( MYSQL_DATENBANK ) or die("Auswahl der Datenbank fehlgeschlagen");
		
		# SQL-Statement um alle Lokationen (geordnet nach Namen) auszuwählen
		$sql = "
		   SELECT * FROM $table WHERE appname='$app'
		";
      $db_res = mysql_query( $sql );
      if ( ! $db_res ) { 
         die('Ungültige Abfrage: ' . mysql_error()); 
      }

      # Iteration durch alle in der Datenabnk gefundenen Ergebnisse
      while ($row = mysql_fetch_array( $db_res, MYSQL_ASSOC)) {
         if($mode == 'css'){
         	$files = $row['css']; 
         }else{
         	$files = $row['js'];
         }}
      # Ausgabe ausgeben
      echo $files;
      # Das Datenbankergebis löschen
      mysql_free_result( $db_res );
     
   } else {
     die('keine Verbindung möglich: ' . mysql_error());
   }
   # Datenbank schließen
   mysql_close($database);
 
Kurze Antwort. ja! :D Er denkt sonst du hättest einen String. Ich würde deinen Sachen normal in die Datenbank schreiben. Dir dann ein PHP Array machen und dann json_encode benutzen. Diesen "String" kannst du dann evaluieren lassen und hast ein Array am Ende.

Code:
var meinArray = eval("("+meinJsonEncodetString+")");
 
Was meinst du mit "normal"?
Naja, es ist so, dass ich PHP nicht so gut kann, habe grad mal hinbekommen, dank einem Buch, dieses Datenbank-Script zu machen, mehr brauch ich eig. auch net, da ich den Rest mit JS mache. Könntest du mir bitte deinen Vorschlag in das vorhandene Script einbauen? Vielen Dank ;-)
 
PHP:
#Die ganzen Variablen...
 # Verbindung zur Datenbank aufbauen
   $database = mysql_connect(MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);
  
   if ( $database ) {
 		
		// Auswahl der Datebank
		mysql_select_db( MYSQL_DATENBANK ) or die("Auswahl der Datenbank fehlgeschlagen");
		
		# SQL-Statement um alle Lokationen (geordnet nach Namen) auszuwählen
		$sql = "
		   SELECT * FROM $table WHERE appname='$app'
		";
      $db_res = mysql_query( $sql );
      if ( ! $db_res ) { 
         die('Ungültige Abfrage: ' . mysql_error()); 
      }

      # Iteration durch alle in der Datenabnk gefundenen Ergebnisse
      while ($row = mysql_fetch_array( $db_res, MYSQL_ASSOC)) {
         if($mode == 'css'){
         	$files = $row['css']; 
         }else{
         	$files = $row['js'];
         }}
      # Ausgabe ausgeben
      print json_encode($files);
      # Das Datenbankergebis löschen
      mysql_free_result( $db_res );
     
   } else {
     die('keine Verbindung möglich: ' . mysql_error());
   }
   # Datenbank schließen
   mysql_close($database);
Hab die Stelle bei "echo" angepasst. # ist als Kommentar in PHP im übrigen missbilligt, benutze lieber //.
 
OK, muss ich da jetzt noch was am JS machen, weil er mir immer noch alles in Zeichen ausgibt, es sind halt jetzt die Backslushes dazugekommen?
Trotzdem schonmal vielen Dank!
 
Kurze Antwort. ja! :D Er denkt sonst du hättest einen String. Ich würde deinen Sachen normal in die Datenbank schreiben. Dir dann ein PHP Array machen und dann json_encode benutzen. Diesen "String" kannst du dann evaluieren lassen und hast ein Array am Ende.

Code:
var meinArray = eval("("+meinJsonEncodetString+")");

Ich darf meinen Code mal selber zitieren ;)
 
Hab ich ja, aber er gibt mir immer noch alles in Zeichen aus.
Hier der neue Code:
HTML:
//Array mit CSS-Dateien holen
			request.open("GET", "php/system/apps/getFiles.php?app="+apps[i]+"&mode=css", false);
			request.send(null);
			cssarray = request.responseText;
			
			var cssarray = eval("("+cssarray+")");
			
			//cssarray = new Array('main.css', 'style.css');
			for (var i = 0; i < cssarray.length; i++){
				alert(cssarray[i]);
			}
 
Also, der PHP-Code gibt folgendes aus:

Und bei Javascript kommt das raus, wenn ich "cssarray" per alert() ausgebe:

Und wie gesagt, wenn ich es in der For-Schleife ausgeben lasse, wird alles einzeln ausgegeben.

Das hat nichts mit JSON zu tun. Hats du denn vorher ein Array?
Weil mit dem String kannst du nichts anfangen. nach dem Encode müsste das irgend wie so aussehen

Code:
["main.css", "style.css"]

Du hast die Sachen also sozusagen immer noch als fertiges Array in der Datenbank?
bzw als csv?
dann musst du nachdem du die value hast in php sowas machen wie
$array = explode("," $files);
und danach kannst du json_encode darauf anwenden. teste das mal aus.
Aber an deiner Stelle würde ich die Sachen einzelnd speichern und nicht schon als csv string.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben