Meerdere gegevens uit database in een array stoppen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ad

Ad

13/11/2007 13:19:00
Quote Anchor link
Ik ben bezig met een soort van auto aanvullen voor artiesten.

De artiesten zijn nu vast gecodeerd zoals hieronder.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
    $aUsers = array(
        "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)
PHP script in nieuw venster Selecteer het PHP script
1
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 . ',';
    }


Maar waar ik niet uitkom is hoe ik het in een array krijg zoals bovenaan staat. Kan iemand mij even op weg helpen?
 
PHP hulp

PHP hulp

24/11/2024 00:28:05
 
Jan Koehoorn

Jan Koehoorn

13/11/2007 13:22:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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']);
    }

?>

Edit:
Of, nog iets netter:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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']);
        }
    }


?>
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
 
Ad

Ad

13/11/2007 13:52:00
Quote Anchor link
Het werkt toch niet op een of andere manier. Komen ze op deze manier precies zo onder elkaar te staan?

Misschien was het toch niet zo eenvoudig als ik dacht.. dit is het hele script:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>";
    }

?>


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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<input type="text" id="testinput" />


EDIT

En dit staat onderaan die pagina
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>


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
 
Jan Koehoorn

Jan Koehoorn

13/11/2007 13:58:00
Quote Anchor link
Het kan zijn dat je query fout gaat. Op regel 15 voer je hem uit, maar je controleert nergens of hij wel gelukt is. Doe eens dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
    $sql
= "SELECT * FROM artists";
    if ($res = mysql_query ($sql)) {
        echo mysql_num_rows ($res) . ' resultaten';
    }

?>

wat zie je dan?
 
Ad

Ad

13/11/2007 14:01:00
Quote Anchor link
Bedankt voor je snelle reactie steeds.

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
 
Tom

Tom

13/11/2007 14:07:00
Quote Anchor link
Als je iets print (echo mysql_num_rows....) en je roept daarna de header(...) functie aan, krijg je inderdaad de foutmelding headers already send.

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
 
Ad

Ad

13/11/2007 14:17:00
Quote Anchor link
Erg bedankt Jan! Het werkt nu wel, er zat gewoon een klein typefoutje in :) Er moest nog een $ voor data
Gewijzigd op 01/01/1970 01:00:00 door Ad
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.