Alle resultaten van sql in één variabele
Om de gegevens uit mijn database te halen gebruik ik het volgende script:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
require_once 'db_config.php';
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$sql = "
SELECT
naam,
trefwoorden
FROM
branche
WHERE
trefwoorden LIKE '%".mysql_real_escape_string($_POST['branche_zoek'])."%'
";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
elseif(mysql_num_rows($res) == 0)
{
echo 'Geen resultaten gevonden';
}
else
{
while($row = mysql_fetch_assoc($res))
{
echo $row['naam'].'<br />';
}
}
}
?>
require_once 'db_config.php';
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$sql = "
SELECT
naam,
trefwoorden
FROM
branche
WHERE
trefwoorden LIKE '%".mysql_real_escape_string($_POST['branche_zoek'])."%'
";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
elseif(mysql_num_rows($res) == 0)
{
echo 'Geen resultaten gevonden';
}
else
{
while($row = mysql_fetch_assoc($res))
{
echo $row['naam'].'<br />';
}
}
}
?>
Nu is het zo dat elk resultaat apart wordt geëchoed, maar ik wil graag dat ik bijv. door te doen:
dat dan alle resultaten van de query worden weergegeven.
Hoop dat het een beetje duidelijk is. Iemand enig idee hoe ik dit kan aanpakken??
Als ik var_dump($row); doe, krijg ik alleen de melding: bool(false)
dit maken
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$uitkomst = array();
while($row = mysql_fetch_assoc($res))
{
$uitkomst[] = $row;
}
var_dump($uitkomst);
?>
$uitkomst = array();
while($row = mysql_fetch_assoc($res))
{
$uitkomst[] = $row;
}
var_dump($uitkomst);
?>
(Gok ik zo...)
Gewijzigd op 01/01/1970 01:00:00 door Jesper Diovo
array(6) { [0]=> array(2) { ["naam"]=> string(6) "Overig" ["trefwoorden"]=> string(0) "" } [1]=> array(2) { ["naam"]=> string(10) "Slaapkamer" ["trefwoorden"]=> string(0) "" } [2]=> array(2) { ["naam"]=> string(8) "Badkamer" ["trefwoorden"]=> string(0) "" } [3]=> array(2) { ["naam"]=> string(6) "Keuken" ["trefwoorden"]=> string(0) "" } [4]=> array(2) { ["naam"]=> string(11) "Electronica" ["trefwoorden"]=> string(0) "" } [5]=> array(2) { ["naam"]=> string(9) "Woonkamer" ["trefwoorden"]=> string(33) "Bank, lamp, kast, stoelen, tafels" } }
Hoe kan ik ervoor zorgen dat ik niet deze hele rij krijg in de variabele $row, maar alleen de namen van de branches?
Dus alleen de $row['naam'] ?
echo $row['naam'], zoals je al deed?
Jezpur schreef op 05.03.2009 19:38:
echo $row['naam'], zoals je al deed?
Ja. Inderdaad, ik snap eigenlijk ook niet echt waarom je die zooi in een andere variable wilt stoppen.
Of je doet:
$uitkomst[] = $row['naam'];
array(1) { [0]=> string(9) "Woonkamer" }
Ik wil dus niet dat array(1) { [0]=> string(9) "" } zoals je waarschijnlijk wel begrijpt, ik wil alleen dat woordje Woonkamer weergeven.
Enig idee hoe ik dit kan aanpakken??
Mijn huidige code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
require_once 'db_config.php';
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$sql = "
SELECT
naam,
trefwoorden
FROM
branche
WHERE
trefwoorden LIKE '%".mysql_real_escape_string($_POST['branche_zoek'])."%'
";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
elseif(mysql_num_rows($res) == 0)
{
echo 'Geen resultaten gevonden';
}
else
{
$uitkomst = array();
while($row = mysql_fetch_assoc($res))
{
$uitkomst[] = $row['naam'];
}
var_dump($uitkomst);
echo $row['naam'];
}
}
?>
require_once 'db_config.php';
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$sql = "
SELECT
naam,
trefwoorden
FROM
branche
WHERE
trefwoorden LIKE '%".mysql_real_escape_string($_POST['branche_zoek'])."%'
";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
elseif(mysql_num_rows($res) == 0)
{
echo 'Geen resultaten gevonden';
}
else
{
$uitkomst = array();
while($row = mysql_fetch_assoc($res))
{
$uitkomst[] = $row['naam'];
}
var_dump($uitkomst);
echo $row['naam'];
}
}
?>
Anne schreef op 05.03.2009 19:43:
Nu krijg ik inderdaad niet meer die hele reeks, maar nog wel:
array(1) { [0]=> string(9) "Woonkamer" }
Ik wil dus niet dat array(1) { [0]=> string(9) "" } zoals je waarschijnlijk wel begrijpt, ik wil alleen dat woordje Woonkamer weergeven.
Enig idee hoe ik dit kan aanpakken??
Mijn huidige code:
array(1) { [0]=> string(9) "Woonkamer" }
Ik wil dus niet dat array(1) { [0]=> string(9) "" } zoals je waarschijnlijk wel begrijpt, ik wil alleen dat woordje Woonkamer weergeven.
Enig idee hoe ik dit kan aanpakken??
Mijn huidige code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
require_once 'db_config.php';
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$sql = "
SELECT
naam,
trefwoorden
FROM
branche
WHERE
trefwoorden LIKE '%".mysql_real_escape_string($_POST['branche_zoek'])."%'
";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
elseif(mysql_num_rows($res) == 0)
{
echo 'Geen resultaten gevonden';
}
else
{
$uitkomst = array();
while($row = mysql_fetch_assoc($res))
{
$uitkomst[] = $row['naam'];
}
var_dump($uitkomst);
echo $row['naam'];
}
}
?>
require_once 'db_config.php';
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$sql = "
SELECT
naam,
trefwoorden
FROM
branche
WHERE
trefwoorden LIKE '%".mysql_real_escape_string($_POST['branche_zoek'])."%'
";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
elseif(mysql_num_rows($res) == 0)
{
echo 'Geen resultaten gevonden';
}
else
{
$uitkomst = array();
while($row = mysql_fetch_assoc($res))
{
$uitkomst[] = $row['naam'];
}
var_dump($uitkomst);
echo $row['naam'];
}
}
?>
Je hebt meer resultaten....
Verder krijg je nu gewoon een array van me, dus daarmee kan je doen wat je wil.
Dus dat als ik bijv. ergens $allebranches doe, dat ik dan gewoon alleen de namen van de branches krijg en niet dat array(1) enz. ??
Misschien zijn het domme vragen, sorry daarvoor, maar ik ben niet zo thuis met arrays...
Regel 33 verwijderen.
Anne schreef op 05.03.2009 19:55:
bedankt voor de goeie hulp! nog één vraagje: weet je een manier om die onnodige array(1) { [0]=> string(9) weg te halen?
Dus dat als ik bijv. ergens $allebranches doe, dat ik dan gewoon alleen de namen van de branches krijg en niet dat array(1) enz. ??
Misschien zijn het domme vragen, sorry daarvoor, maar ik ben niet zo thuis met arrays...
Dus dat als ik bijv. ergens $allebranches doe, dat ik dan gewoon alleen de namen van de branches krijg en niet dat array(1) enz. ??
Misschien zijn het domme vragen, sorry daarvoor, maar ik ben niet zo thuis met arrays...
Maar dan kan je dit allemaal weglaten, en terug gaan naar zoals je het eerst had.
Is er een manier om alle uitkomsten van mysql in één variabele te zetten?
P.S. als ik regel 33 weghaal worden er geen resultaten meer weergegeven...
Anne schreef op 05.03.2009 20:03:
Maar als ik terugga naar zoals ik het eerst had, kan ik niet met één variabele de alle resultaten weergeven. Zoals ik al zei worden ze dan steeds stuk voor stuk apart ge-echo-ed.
Klopt. Maar wat is het verschil met in één keer echo'en of een apart aantal keer?
Anne schreef op 05.03.2009 20:03:
Is er een manier om alle uitkomsten van mysql in één variabele te zetten?
Ja, je hebt nu een array. Omdat deze waarde (vind ik) in een array hoort (aangezien je dan later misschien weer het een en ander wilt uithalen d'r mee) krijg je een array.
Anne schreef op 05.03.2009 20:03:
P.S. als ik regel 33 weghaal worden er geen resultaten meer weergegeven...
Klopt. Kijk maar naar de var_dump
Vertel nou eens waarom je per se wilt dat het allemaal in een string terecht komt. (Want een array is ookal één variable.)
Daarom wil ik dus als het ware alle resultaten van de eerste mysql query opslaan in een string...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php
require_once 'db_config.php';
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$sql = "
SELECT
naam
FROM
branche
WHERE
trefwoorden LIKE '%".mysql_real_escape_string($_POST['branche_zoek'])."%'
";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
elseif(mysql_num_rows($res) == 0)
{
echo 'Geen resultaten gevonden';
}
else
{
$uitkomst = array();
while($row = mysql_fetch_assoc($res))
{
$uitkomst[] = $row['naam'];
}
$uitkomst = implode('<br>', $uitkomst);
}
}
// echo maar
echo $uitkomst;
?>
require_once 'db_config.php';
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$sql = "
SELECT
naam
FROM
branche
WHERE
trefwoorden LIKE '%".mysql_real_escape_string($_POST['branche_zoek'])."%'
";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
elseif(mysql_num_rows($res) == 0)
{
echo 'Geen resultaten gevonden';
}
else
{
$uitkomst = array();
while($row = mysql_fetch_assoc($res))
{
$uitkomst[] = $row['naam'];
}
$uitkomst = implode('<br>', $uitkomst);
}
}
// echo maar
echo $uitkomst;
?>
Ik heb 'trefwoorden' maar even uit de query gehaald, want die wil je blijkbaar toch niet zien.
Edit:
Gebruik van de verkeerde variabelen verbeterd.... blijkbaar ergens verkeerd gegaan in de editor.
Gewijzigd op 01/01/1970 01:00:00 door Eddy E
@Eddy: echo $resultaat; denk ik.
Jezpur schreef op 05.03.2009 20:43:
@Eddy: echo $resultaat; denk ik.
En dan ook de implode op $uitkomst graag.
Helaas krijg ik geen uitslag want met deze code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
require_once 'db_config.php';
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$sql = "
SELECT
naam
FROM
branche
WHERE
trefwoorden LIKE '%".mysql_real_escape_string($_POST['branche_zoek'])."%'
";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
elseif(mysql_num_rows($res) == 0)
{
echo 'Geen resultaten gevonden';
}
else
{
$uitkomst = array();
while($row = mysql_fetch_assoc($res))
{
$uitkomst[] = $row['naam'];
}
$uitkomt = implode('<br>', $res);
}
}
// echo maar
echo $uitkomst;
?>
require_once 'db_config.php';
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$sql = "
SELECT
naam
FROM
branche
WHERE
trefwoorden LIKE '%".mysql_real_escape_string($_POST['branche_zoek'])."%'
";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
elseif(mysql_num_rows($res) == 0)
{
echo 'Geen resultaten gevonden';
}
else
{
$uitkomst = array();
while($row = mysql_fetch_assoc($res))
{
$uitkomst[] = $row['naam'];
}
$uitkomt = implode('<br>', $res);
}
}
// echo maar
echo $uitkomst;
?>
Krijg ik alleen te zien:
Array
Doe ik misschien iets verkeerd?
En geen $res maar $uitkomst zoals eerder gemeld.