Entwickler-Ecke

Programmiersprachen (Server) - Assoziatives Array in String benutzen


GerhardS - Di 08.07.14 00:56
Titel: Assoziatives Array in String benutzen
Hallo,
Es ist einfach, mit PHP eine Tabelle auszulesen und darzustellen:

PHP-Quelltext
1:
2:
3:
4:
5:
6:
while ($row = mysql_fetch_assoc($result)) {
    echo $row["id"];
  echo " ";
    echo $row["fname"];
    echo "";    
}

Neues Ziel ist aber folgender String:

PHP-Quelltext
1:
$pass = array('nov13','jan14','feb14','mar14','apr14','mai14','jun14','aug14','sep14','okt14','nov14','dez14');                    

Die Werte in der Klammer entsprechen Einträgen in der Tabelle (Spalte "fname"). Wenn ich zunächst versuche, einen String wie "'nov13','jan14','feb14','mar14','apr14','mai14','jun14','aug14','sep14','okt14','nov14','dez14'"
hiermit

PHP-Quelltext
1:
2:
3:
4:
while ($row = mysql_fetch_assoc($result)) 
{
  $myline = echo "'".$row["fname"]."'".","
}

zu erzeugen, streikt der PHP-Interpreter.
Hat jemand einen Tipp für mich?

Moderiert von user profile iconChristian S.: Code- durch PHP-Tags ersetzt


GerhardS - Di 08.07.14 05:18

Ich habe inzwischen eine Annäherung gefunden. Zunächst muss der Select-Befehl auf die interessierende Spalte beschränkt werden. Dann:

PHP-Quelltext
1:
2:
3:
4:
while ($row = mysql_fetch_assoc($result)) {
$comma_separated = implode(", "$row);
echo "'" . $comma_separated . "', ";
}

Das schreibt die Werte aus der Spalte in eine Zeile. Zwei Kleinigkeiten bleiben übrig:
1) Wie entferne ich das letzte Komma in der Zeile?
2) Wie speichere ich die Zeile als Stringvariable?

Moderiert von user profile iconChristian S.: Code- durch PHP-Tags ersetzt


GerhardS - Di 08.07.14 14:59

Hier die Lösung:

PHP-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
$myvar = "";
while ($row = mysql_fetch_assoc($result)) {
$comma_separated = implode(", "$row);
$myvar .= "'" . $comma_separated . "', ";
}
// echo $myvar; //ergibt 'nov13', 'jan14', 'feb14', 'mar14', 'apr14', 'mai14', 'jun14',
$newstr = substr($myvar0, (strlen($myvar) -2));
echo $newstr//ergibt: 'nov13', 'jan14', 'feb14', 'mar14', 'apr14', 'mai14', 'jun14'
echo "<br>";
$pass = explode(","$newstr);
//Prüfen:
echo "Foreach-Schleife: <br>";
foreach($pass AS $name)
   {
   echo $name."<br>";
   }


Moderiert von user profile iconChristian S.: Code- durch PHP-Tags ersetzt


Christian S. - Di 08.07.14 15:33

Hallo,

müsste es nicht so einfacher gehen?

PHP-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
$pass = array();
while ($row = mysql_fetch_assoc($result))
  $pass[] = $row["fname"];

$newstr = implode(", "$pass);
echo $newstr;

//Prüfen:
echo "Foreach-Schleife: <br>";
foreach($pass AS $name)
{
   echo $name."<br>";
}


Habe den Code nicht laufen lassen, aber so von der Idee her sollte es gehen.

Grüße
Christian


GerhardS - Di 15.07.14 13:59

Funktionieren tut's, aber die Anführungszeichen (') sind weg. Die braucht die gewünschte Variable
$pass=array('nov13', 'jan14', 'feb14', 'mar14', 'apr14', 'mai14', 'jun14','aug14','sep14','okt14','nov14','dez14');
aber.


Christian S. - Di 15.07.14 18:44

Die kannst Du in der ersten while-Schleife ja sehr einfach ergänzen :nixweiss: