webForumDet fria alternativet

Spara e array ur MySQL, för att senare i filen skriva ut den

PHP

7 svar · 260 visningar · startad av prey

Medlem sedan jan. 2002341 inlägg
Frågan#1

Rubriken säger väl det mesta, men ur sparar jag en tabell som hämtas ur MySQL i en variabel? Jag vill nämligen kunna hämta all information överst i php-filen, så att all "hämta-kod" är fixad när det är dags att skriva ut filen.

Just nu ser det ut så här:

<?php
/* Här hämtas informationen från databasen */

	require("./dbvars.php");

	$log_array = mysql_query("$sql");

	while($log = mysql_fetch_array($log_array)){
?>
    <tr> 
      <td width="160" valign="top" align="left"><?=$log["datum"]?><br>
    <i style="color:#DDDDDD;">(upplagd:<br>
      <?=$log["upplagd"]?>)</i></td>
      <td width="57" valign="top" align="left"><?=$log["av"]?></td>
      <td valign="top" align="left"><?=$log["text"]?></td>
    </tr>
<? } mysql_close($link); ?>

Som ni ser loopas informationen ut tillsammans med lite html-kod... Kan jag spara det här på nått sätt, istället för att skriva ut?? Så att jag längre ner i filen kan skriva nåt som t.ex.

echo min_db_array[];
Medlem sedan jan. 2000372 inlägg
#2

Ja, du kan ju bara skriva

$log = mysql_fetch_array($log_array);

i koden ovan, istället för din while-konstruktion. Senare i koden kan du då bara loopa igenom din array $log för att skriva ut resultatet.

Medlem sedan jan. 2002341 inlägg
#3

Ja, du kan ju bara skriva: $log = mysql_fetch_array($log_array);

Jag förstår inte riktigt vad du menar...

Dock vill jag kunna ansluta till MySQL, samt KOPPLA NER MySQL länken INNAN värdena skrivs ut, jag antar att jag måste spara värdena i någon PHP-array (dessutom vill jag ha HTML koden i variabeln också, fast jag vill inte behöva spara html i databasen).

Förstår ni vad jag menar? :l

Jag har tidigare sett värden sparas med hjälp av "->" tecken, fast det förstår jag mig inte riktigt på.. Ngn som känner för å förklara?

Tackar på förhand!

Medlem sedan jan. 2002341 inlägg
#4

För att förklara det lite ytterligare:

jag vill spara en array I EN ANNAN array:
$person[1] =
$detaljer["namn"] (med värdet JOHAN)
$detaljer["nummer"] (med värdet 007)

$person[2] =
................

Sen vill jag loopa ut alla personerna så att det står t.ex:

--------------------------
| JOHAN 007 |
--------------------------
| RICKARD 006 |
--------------------------
| JONAS 100 |
--------------------------
i en fin lite tabell....

Medlem sedan jan. 2000372 inlägg
#5

Alltså om du skriver:

$log = mysql_fetch_array($log_array);

så HAR du ju en "PHP-variabel" som du uttrycker det. $log är en array och du kan nu koppla ner din mySQL-koppling men ändå ha kvar dina värden i $log. Sen kan du enkelt loopa igenom din variabel med t.ex:

foreach ($log as $key => $value) {
  echo "$key = $value<br>";
  }

Testa ska du se - du kan lägga till din HTML vid loopen istället för att lägga in den i arrayen.

Medlem sedan jan. 2000372 inlägg
#6

Och för att göra det ännu klarare:

foreach ($log as $key => $value) {
  echo "<tr><td>$key</td><td>$value</td></tr>\n";
  }
Medlem sedan jan. 2002341 inlägg
#7

sjyscht! nu fattar jag :birp tror ja :)

Måste bara fråga en grej till:
Om jag ahr variabeln $log["namn"] = "ANDERS";
Innebär det att $key = "namn" samt $value = "ANDERS"?
(I just fallet: $log["namn"] = ANDERS;?)

Medlem sedan aug. 20002 975 inlägg
#8

Om jag ahr variabeln $log["namn"] = "ANDERS";
Innebär det att $key = "namn" samt $value = "ANDERS"?

Ja det stämmer.

Nu är du kanske inne på andra och bättre vägar, men för att svara på din ursprungliga fråga så kan man göra så här:

<?php
/* Här hämtas informationen från databasen */

require("./dbvars.php");

$log_array = mysql_query("$sql");

while($log = mysql_fetch_array($log_array)){

  $min_db_array[] = "<tr> 
  <td width=\"160\" valign=\"top\" align=\"left\">{$log['datum']}<br>
  <i style=\"color:#DDDDDD;\">(upplagd:<br>{$log['upplagd']})</i></td>
  <td width=\"57\" valign=\"top\" align=\"left\">{$log['av']}</td>
  <td valign=\"top\" align\="left\">{$log['text']}</td>
  </tr>\n";
} 

mysql_close($link); 

foreach ($min_db_array as $val) echo $val;

?>
255 ms totalt · 4 externa anrop · v20260731065814-full.2f471f9e
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)