Beste,

Voor het overkoepelende script is het belangrijk dat de data van meerdere MySql rijen in één variabele komt;

Ik heb het volgende geprobeerd maar bij voorbaat was eigenlijk al duidelijk dat dat niet ging werken:

<?
$antwoorden = while($rij_3 = mysql_fetch_object($sql_3)){ echo $rij_3->antwoord; };
?>

maar maakt misschien wel duidelijk hoe het zou moeten.

Ik hoop dat iemand even kan kijken.

Met vriendelijke groeten,

Jelmer
Baken schreef op 15.09.2008 19:03
Beste,

Voor het overkoepelende script is het belangrijk dat de data van meerdere MySql rijen in één variabele komt;

Gewoon een array dus?

<?php
    $data = array ();
    while (fetchfetchfetch) {
        array_push ($data, $row);
    }
?>

Kan simpeler.
<?php
$data = array ();
while ($data[] = fetchfetchfetch);
?>
Ik heb net even één en ander geprobeerd, maar ik snap hem niet helemaal, hoe kan zet ik bijvoorbeeld de query:
<? $sql_3 = mysql_query("select * FROM onderzoek_antwoord WHERE id_vraag = '".$f."'"); ?>
erin?

En hoe zorg ik ervoor dat de hele array in eenmaal wordt aangeroepen en niet een deel daarvan?

Ik snap je vraag niet.
Ik heb volgend script geschreven om data vanuit SQL naar een Excel bestand te schrijven:

<?
<?php session_start();

$gebruikersnaam = $_SESSION['gebruikersnaam'];


include("../verbinden.php");

// Kijken welke vraag het gaat en veilig stellen
$f = mysql_escape_string(htmlspecialchars($_GET['f']));


// Opzoeken om welke vraag het gaat
$sql_1 = mysql_query("select * from onderzoek_vragen WHERE id = '".$f."'");
$rij_1 = mysql_fetch_object($sql_1);

// De titel van de vraag
$titel_vraag = $rij_1->vraag;

// Kijken of de gebruiker gelijk staat aan de ingelogde
if($gebruikersnaam != $rij_1->gebruikersnaam){ header("location: http://www.onderzoekdoen.nl";); exit; }

// Query voor resultaten
$sql_3 = mysql_query("select * FROM onderzoek_antwoord WHERE id_vraag = '".$f."'");

// Een variabele maken met alle resultaten

$data = array ();
while ($data['a1'] = mysql_fetch_object($sql_3));
echo $data['a1'];


// Opzoeken om welk onderzoek het gaat
$sql_2 = mysql_query("select * from onderzoek_titels WHERE id = $rij_1->idonderzoek");
$rij_2 = mysql_fetch_object($sql_2);

//De titel van het onderzoek:
$titel_onderzoek = $rij_2->titel;


// Datum vaststellen
$maand = date("m");

if($maand == '01'){ $maand = "Januari"; };
if($maand == '02'){ $maand = "Februari"; };
if($maand == '03'){ $maand = "Maart"; };
if($maand == '04'){ $maand = "April"; };
if($maand == '05'){ $maand = "Mei"; };
if($maand == '06'){ $maand = "Juni"; };
if($maand == '07'){ $maand = "Juli"; };
if($maand == '08'){ $maand = "Augustus"; };
if($maand == '09'){ $maand = "September"; };
if($maand == '10'){ $maand = "Oktober"; };
if($maand == '11'){ $maand = "November"; };
if($maand == '12'){ $maand = "December"; };

$dag = date("j");
$jaar = date("Y");
$uren = date("G");
$minuten = date("i");


$data = "

<head>
<style>

table.menu {
width: 700px;
}

td.menu {
height: 50px;
vertical-align: top;
background-color: #0265CB;
}

div.titel { color: white; font-weight: bold; font-family: Verdana, Arial, Helvetica, sans-serif; font-size:13pt; }

</style>
</head>

<table class='menu'>

<tr>
<td class='menu'><div class='titel'>Onderzoekdoen.nl - Export Resultaten</div></td>
</tr>

<tr>
<td>Export uit onderzoek: $titel_onderzoek</td>
</tr>

<tr>
<td>Export van de vraag: $titel_vraag</td>
</tr>

<tr>
<td>Export heeft plaats gevonden op: $dag $maand $jaar; $uren:$minuten</td>
</tr>

<tr>
<td>$antwoorden</td>
</tr>

<tr>
<td>Resultaat</td>
</tr>

</table>

";

header("Content-Type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=onderzoek.xls");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
echo "$data";
?>

Echter hoe krijg ik nu de antwoorden uit diverse SQL rij'en met één gelijk onderzoekid allemaal per nu tabel-rij gepresenteerd.

Dus alle: "$antwoorden" in bovenstaande $data variabele.

Bedankt!

Jelmer
<?php
$data = array ();
while ($data['a1'] = mysql_fetch_object($sql_3));
echo $data['a1'];
?>
Deze while() heeft als index 'a1'. Deze zal dus zolang de while() loopt worden overschreven. Eindresutaat is een array() met maar één record, namelijk de laatste uit de while().

Bekijk mijn voorbeeldje nog eens.
Ja okeey.

Maar als ik jouw voorbeeld goed invoer dan krijg ik toch een array met meerdere dingen erin, maar hoe druk ik dan in een keer de hele array af?

Hoe zet ik de hele array, als onderdeel in de de variabele $data?

Jelmer
Doe eens dit:
<?php
$data = array ();
while ($data[] = fetchfetchfetch);
echo '<pre>' . print_r($data, true) . '</pre>';
?>
Dan zie wat er allemaal in zit.
SanThe schreef op 15.09.2008 19:11
Kan simpeler.
<?php
$data = array ();
while ($data[] = fetchfetchfetch);
?>


Ahh, handig.
Ik deed altijd
<?php
while ($row = mysql_fetch_assoc()) {
$data[] = $row;
}
return $data;
?>

Maar zoals jij 't zegt is 't veel handigere/korter.
Als ik doe:

<?
// Een variabele maken met alle resultaten
$data = array ();
while ($data[] = mysql_fetch_object($sql_3));

echo $data;
?>

Dan krijg ik als output: Array.

Reageren