Meerdere gegevens uit database in een array stoppen
De artiesten zijn nu vast gecodeerd zoals hieronder.
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
$aUsers = array(
"Voornaam Achternaam",
"Voornaam Achternaam",
"Voornaam Achternaam",
"Voornaam Achternaam",
"Voornaam Achternaam",
"Voornaam Achternaam",
"Voornaam Achternaam"
);
"Voornaam Achternaam",
"Voornaam Achternaam",
"Voornaam Achternaam",
"Voornaam Achternaam",
"Voornaam Achternaam",
"Voornaam Achternaam",
"Voornaam Achternaam"
);
Maar de bedoeling is dus dat voornaam en achternaam uit een database komen. Die velden heten first_name en last_name en zitten in de tabel atists.
Nu heb ik dit geprobeerd:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
$sql = "SELECT * FROM artists";
$query = mysql_query($sql);
while($data = mysql_fetch_array($query)){
$firstname = $data['first_name'];
$lastname = $data['last_name'];
echo $firstname . ' ' . $lastname . ',';
}
$query = mysql_query($sql);
while($data = mysql_fetch_array($query)){
$firstname = $data['first_name'];
$lastname = $data['last_name'];
echo $firstname . ' ' . $lastname . ',';
}
Maar waar ik niet uitkom is hoe ik het in een array krijg zoals bovenaan staat. Kan iemand mij even op weg helpen?
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$sql = "SELECT * FROM artists";
$query = mysql_query($sql);
$aUsers = array ();
while($data = mysql_fetch_array($query)){
array_push ($aUsers, data['first_name'] . ' ' . $data['last_name']);
}
?>
$sql = "SELECT * FROM artists";
$query = mysql_query($sql);
$aUsers = array ();
while($data = mysql_fetch_array($query)){
array_push ($aUsers, data['first_name'] . ' ' . $data['last_name']);
}
?>
Edit:
Of, nog iets netter:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$sql = "
SELECT CONCAT(first_name, ' ', last_name) AS fullname
FROM artists
";
if (!$res = mysql_query($sql)) {
trigger_error (mysql_error ());
}
else {
$aUsers = array ();
while($data = mysql_fetch_array($query)){
array_push ($aUsers, data['fullname']);
}
}
?>
$sql = "
SELECT CONCAT(first_name, ' ', last_name) AS fullname
FROM artists
";
if (!$res = mysql_query($sql)) {
trigger_error (mysql_error ());
}
else {
$aUsers = array ();
while($data = mysql_fetch_array($query)){
array_push ($aUsers, data['fullname']);
}
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
Misschien was het toch niet zo eenvoudig als ik dacht.. dit is het hele 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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<?php
/*
note:
this is just a static test version using a hard-coded countries array.
normally you would be populating the array out of a database
the returned xml has the following structure
<results>
<rs>foo</rs>
<rs>bar</rs>
</results>
*/
include "../connect.php";
$sql = "SELECT * FROM artists";
$query = mysql_query($sql);
$aUsers = array ();
while($data = mysql_fetch_array($query)){
array_push ($aUsers, $data['first_name'] . ' ' . $data['last_name']);
}
/*
$aUsers = array(
"Voornaam Achternaam",
"Voornaam Achternaam",
"Voornaam Achternaam",
"Voornaam Achternaam",
"Voornaam Achternaam",
"Voornaam Achternaam",
"Voornaam Achternaam"
);
*/
$input = strtolower( $_GET['input'] );
$len = strlen($input);
$aResults = array();
if ($len)
{
for ($i=0;$i<count($aUsers);$i++)
{
// had to use utf_decode, here
// not necessary if the results are coming from mysql
//
if (strtolower(substr(utf8_decode($aUsers[$i]),0,$len)) == $input)
$aResults[] = array( "id"=>($i+1) ,"value"=>htmlspecialchars($aUsers[$i]), "info"=>htmlspecialchars($aInfo[$i]) );
//if (stripos(utf8_decode($aUsers[$i]), $input) !== false)
// $aResults[] = array( "id"=>($i+1) ,"value"=>htmlspecialchars($aUsers[$i]), "info"=>htmlspecialchars($aInfo[$i]) );
}
}
header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // always modified
header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header ("Pragma: no-cache"); // HTTP/1.0
if (isset($_REQUEST['json']))
{
header("Content-Type: application/json");
echo "{\"results\": [";
$arr = array();
for ($i=0;$i<count($aResults);$i++)
{
$arr[] = "{\"id\": \"".$aResults[$i]['id']."\", \"value\": \"".$aResults[$i]['value']."\", \"info\": \"\"}";
}
echo implode(", ", $arr);
echo "]}";
}
else
{
header("Content-Type: text/xml");
echo "<?xml version=\"1.0\" encoding=\"utf-8\" ?><results>";
for ($i=0;$i<count($aResults);$i++)
{
echo "<rs id=\"".$aResults[$i]['id']."\" info=\"".$aResults[$i]['info']."\">".$aResults[$i]['value']."</rs>";
}
echo "</results>";
}
?>
/*
note:
this is just a static test version using a hard-coded countries array.
normally you would be populating the array out of a database
the returned xml has the following structure
<results>
<rs>foo</rs>
<rs>bar</rs>
</results>
*/
include "../connect.php";
$sql = "SELECT * FROM artists";
$query = mysql_query($sql);
$aUsers = array ();
while($data = mysql_fetch_array($query)){
array_push ($aUsers, $data['first_name'] . ' ' . $data['last_name']);
}
/*
$aUsers = array(
"Voornaam Achternaam",
"Voornaam Achternaam",
"Voornaam Achternaam",
"Voornaam Achternaam",
"Voornaam Achternaam",
"Voornaam Achternaam",
"Voornaam Achternaam"
);
*/
$input = strtolower( $_GET['input'] );
$len = strlen($input);
$aResults = array();
if ($len)
{
for ($i=0;$i<count($aUsers);$i++)
{
// had to use utf_decode, here
// not necessary if the results are coming from mysql
//
if (strtolower(substr(utf8_decode($aUsers[$i]),0,$len)) == $input)
$aResults[] = array( "id"=>($i+1) ,"value"=>htmlspecialchars($aUsers[$i]), "info"=>htmlspecialchars($aInfo[$i]) );
//if (stripos(utf8_decode($aUsers[$i]), $input) !== false)
// $aResults[] = array( "id"=>($i+1) ,"value"=>htmlspecialchars($aUsers[$i]), "info"=>htmlspecialchars($aInfo[$i]) );
}
}
header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // always modified
header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header ("Pragma: no-cache"); // HTTP/1.0
if (isset($_REQUEST['json']))
{
header("Content-Type: application/json");
echo "{\"results\": [";
$arr = array();
for ($i=0;$i<count($aResults);$i++)
{
$arr[] = "{\"id\": \"".$aResults[$i]['id']."\", \"value\": \"".$aResults[$i]['value']."\", \"info\": \"\"}";
}
echo implode(", ", $arr);
echo "]}";
}
else
{
header("Content-Type: text/xml");
echo "<?xml version=\"1.0\" encoding=\"utf-8\" ?><results>";
for ($i=0;$i<count($aResults);$i++)
{
echo "<rs id=\"".$aResults[$i]['id']."\" info=\"".$aResults[$i]['info']."\">".$aResults[$i]['value']."</rs>";
}
echo "</results>";
}
?>
Er zit nog een .js bestand bij maar volgens mij heeft die hier geen invloed op. Op een andere pagina heb ik gewoon dit staan:
EDIT
En dit staat onderaan die pagina
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<script type="text/javascript">
var options = {
script:"artiesten.php?json=true&",
varname:"input",
json:true,
callback: function (obj) { document.getElementById('testid').value = obj.id; }
};
var as_json = new AutoSuggest('testinput', options);
var options_xml = {
script:"artiesten.php?",
varname:"input"
};
var as_xml = new AutoSuggest('testinput_xml', options_xml);
</script>
var options = {
script:"artiesten.php?json=true&",
varname:"input",
json:true,
callback: function (obj) { document.getElementById('testid').value = obj.id; }
};
var as_json = new AutoSuggest('testinput', options);
var options_xml = {
script:"artiesten.php?",
varname:"input"
};
var as_xml = new AutoSuggest('testinput_xml', options_xml);
</script>
Wanneer ik niets wijzig werkt het allemaal. Dus typ ik een A dan geeft hij de rest van de naam. Maar wanneer ik het uit de database probeer te halen doet hij niets meer. Ook niet meer 'no result'.
Word je hier wijzer van? :P
Gewijzigd op 01/01/1970 01:00:00 door Ad
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$sql = "SELECT * FROM artists";
if ($res = mysql_query ($sql)) {
echo mysql_num_rows ($res) . ' resultaten';
}
?>
$sql = "SELECT * FROM artists";
if ($res = mysql_query ($sql)) {
echo mysql_num_rows ($res) . ' resultaten';
}
?>
wat zie je dan?
Hij zegt dan:
5 resultaten (en dat klopt,er zitten vijf namen in)
Maar ook 5 foutmeldingen over headers already send op regel 57,58,59,60,79.
Gewijzigd op 01/01/1970 01:00:00 door Ad
De headers worden namelijk verzonden naar de browser wanneer je iets output.
Als je je test echo mysql_num_rows uitcomment, zijn de overige foutmeldingen qua headers weer verdwenen.
maw: die 5 foutmeldingen kun je dus negeren.
Gewijzigd op 01/01/1970 01:00:00 door Tom
Gewijzigd op 01/01/1970 01:00:00 door Ad