Toon posts:

[PHP] array omzetten in comma-gescheiden regels

Pagina: 1
Acties:
  • 225 views

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een database welke ik wil queryen. In de voorbeeldcode staat het volgende als "SQL output" welke het script gebruikt als voorbeeld-database.

code:
1
2
3
4
$country_list = '"Sort Order","Common Name","Formal Name","Type","Sub Type","Sovereignty","Capital","ISO 4217 Currency Code","ISO 4217 Currency Name","ITU-T Telephone Code","ISO 3166-1 2 Letter Code","ISO 3166-1 3 Letter Code","ISO 3166-1 Number","IANA Country Code TLD"
"1","Afghanistan","Islamic State of Afghanistan","Independent State",,,"Kabul","AFN","Afghani","+93","AF","AFG","004",".af"
"2","Albania","Republic of Albania","Independent State",,,"Tirana","ALL","Lek","+355","AL","ALB","008",".al"
' ;



Dit is natuurlijk verre van handig omdat dat alle regels worden ingelezen en er daarna pas een selectie gemaakt wordt van wat er nodig is in het script.

Je wil dus een database gaan queryen zoals ik eerder ook al aangaf.

Dit is het volledige script overigens waar de SQL code al in stond:

code:
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
 /**
  *     Plugin for search_engine
  *     Do search on world countries
  *     
  */
  
    #@ Detect if loaded by search_engine
    if ( ! SEARCHENGINE_LOADED ) return false;
    
    #@ Category Name
    $searchCat_name = 'Countries' ;
    
    #@ Do search
    
        $databaseConnect = mysql_connect("192.168.x.x", "user", "password")
        Or die("Unable to connect to the database.");
        mysql_select_db("table", $databaseConnect); 
    
    $sql = 'SELECT * FROM users LIKE "%'.$search_engine['options']['input'].'%" 
        ORDER BY users.lastname 
        LIMIT 0, '.$search_engine['options']['search_limit'] ;
    _dumpLog("Search : query =>\n $sql \n", 0) ;
    $db->query($sql) ;
    
    
/*  #@ For example, simule return sql request
$country_list = '"Sort Order","Common Name","Formal Name","Type","Sub Type","Sovereignty","Capital","ISO 4217 Currency Code","ISO 4217 Currency Name","ITU-T Telephone Code","ISO 3166-1 2 Letter Code","ISO 3166-1 3 Letter Code","ISO 3166-1 Number","IANA Country Code TLD"
"1","Afghanistan","Islamic State of Afghanistan","Independent State",,,"Kabul","AFN","Afghani","+93","AF","AFG","004",".af"
"2","Albania","Republic of Albania","Independent State",,,"Tirana","ALL","Lek","+355","AL","ALB","008",".al"
' ;
*/

    #@ Transform txt in array
    $country_list = str_replace("\"", '', $country_list) ;
    $country_list = explode("\n", $country_list) ;
    for ( $i = 1 ; $i < count($country_list) ; $i++ ) {
        // Explode each lines
        $elements = explode(',', $country_list[$i]) ;
        // Get elements to search and display
        $id             = "countries_".trim($elements[0]) ;
        $common_name    = trim($elements[1]) ;
        $formal_name    = trim($elements[2]) ;
        $capital        = trim($elements[6]) ;
        $code           = trim($elements[11]) ;
        // Search on elements
        if ( preg_match('/'.$search_engine['options']['input'].'/i', $common_name)
            OR preg_match('/'.$search_engine['options']['input'].'/i', $code) ) {
            
            // To display
            $results['value']       = utf8_encode($common_name). ' ('.utf8_encode($code).')';
            $results['info']        = utf8_encode($capital) ;   
        
            // Store result
            $search_engine['results'][$searchCat_name][$id] = $results ;
        }
    }


Ik kwam er achter dat de output van een var_dump($search_engine) erg vreemd is. Dit is geen normale array of iets dergelijks, hier loop ik dus vast.

Ik weet van de ontwikkelaar dat hij aangeeft dat je een PHPclass moet gebruiken om je MySQL output om te zetten naar JSON, dit vind ik echter wat vreemd aangezien ik hier toch geen JSON zie en er duidelijk een soort van query gedaan wordt welke onduidelijk is.

Ik heb even wat overleg gehad met andere PHP-prutsers en die vonden het ook al een rare output van de dump, dus ik wil jullie opinie eens vragen wat hier mee te doen.

Waar bovenstaan de code uitendelijk voor gebruikt wordt is om aan de hand van de landennaam de verdere informatie te gebruiken in een dropdown, dit kun je dus ook met een query doen... echter moet ik wel een output hebben die uiteindelijk als de huidige $search_engine naar buiten komt.

Waarom er trouwen een userselect gedaan wordt weet ik niet maar dit is om de gebruiker wat wijs te maken met de mogelijke query denk ik welke gewoon ergens uit gevist is.

Acties:
  • 0 Henk 'm!

  • disjfa
  • Registratie: April 2001
  • Laatst online: 03-07 14:47

disjfa

be

Ik neem aan dat er in de $search_engine een json array van zoekmachines zit. En daar regexp je op. Wat zit er in je variabele? Over het algemeen zit er logische data in.

Dus wat zit er in? :)

disjfa - disj·fa (meneer)
disjfa.nl


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik wil je best van die informatie voorzien, maar wat denk je dat erin zit als ik vragen mag ? Klinkt als rare vraag maar ik weet niet direct op wat voor bruikbare data je bedoelt :)

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Dit mag je gaan overleggen met de maker van de code, we geven hier geen support op code van derden. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Dit topic is gesloten.