PHP: Bootstrap, CodeIgniter - Typeahead Daten ziehen von MySQL
Ich bin versucht, SQL-Abfrage, um eine array von Werten zur Verwendung für die typeahead-und ich bin scheinbar fehlen die Grundlagen der arrays, da es nicht mir auch nur annähernd die Ergebnisse, die ich erwarte
Will ich sammeln die "Name" - Spalte von SQL für unterschiedliche Daten nur
Hier ist meine MySQL-Abfrage
$data['typeahead'] = $this->db->query('SELECT DISTINCT Name from table')->result_array();
Hier ist die Ausgabe, die es gibt auf var_dump
array(287) {
[0]=> array(1) { ["Name"]=> string(16) "'67 Shelby GT500" }
[1]=> array(1) { ["Name"]=> string(8) "Tooligan" }
[2]=> array(1) { ["Name"]=> string(24) "'67 Pontiac Firebird 400" }
[3]=> array(1) { ["Name"]=> string(17) "Volkswagen Beetle" }
}
Das einzige, was ich versuche zu tun ist, erstellen Sie ein array mit den Daten aus den Spalten. Ich bin mit CodeIgniter für Rahmen und wird mit Bootstrap der JS-Arbeit mit dem typeahead, aber ich bin fest auf dem Daten-array-Abschnitt.
Jede Hilfe wäre sehr geschätzt habe ich die zahlreichen tutorials auf, wie die Verwendung von nicht-MySQL-arrays als typeahead, aber keiner arbeitet mit MySQL.
^^ Gelöst
Problem jetzt:
Typeahead nicht ziehen Daten aus array
controller-code:
$name_array = $this->db->query('SELECT DISTINCT Name from table')->result_array();
$typeahead_string = '';
foreach ($name_array as $name)
{
$formatted_name = '"' . $name['Name'] . '", ';
$typeahead_string .= $formatted_name;
}
$option_list = "[" . rtrim($typeahead_string, ", ") . "]";
$data['typeahead'] = $option_list;
Anzeigen-Code:
<input type="text" class="span3 search-query" placeholder="Search" id="typeahead" data-provide="typeahead" data-source="<?php echo $typeahead; ?>"><button type="submit" class="btn"><i class="icon-search"></i></button>
- Das ist nicht ein array, das ein Objekt repräsentiert ein query-Ergebnis. Ich weiß nichts über CI, aber ich bin mir sicher, dass die Dokumentation erläutert, wie eine Datenbank-Abfrage.
- Sie waren korrekt, ich habe ->ergebnis_array() und jetzt bin ich ein array innerhalb eines Arrays. Ich muss nur herausfinden, wie entfernen Sie die erste Reihe komplett
- Sie könnten versuchen, und sehen, was
row_array()
kehrt anstelleresult_array()
, oder Ihre array-Daten durch die Verwendung$newArray = $oldArray[0];
. Dies stellt einfach in$newArray
einem ersten element$oldArray
(das erste element geschieht, um eine array zu). - row_array gibt 1 Eintrag also nicht $Daten['typeahead'] = $temp['0'];
Du musst angemeldet sein, um einen Kommentar abzugeben.
Konnte man Durchlaufen und die Ergebnisse, dass Ihre Anfrage derzeit ist das generieren und hinzufügen von
Name
Elementen zu einem neuen array wie dieses:Edit:
Verwenden die typeahead-Funktionalität in der Bootstrap, die Datenquelle kann eine Liste von Zeichenfolgen, zum Beispiel:
"Orange", "Apple", "Banana"
Könnten Sie weisen die
$data['typeahead']
variable ein string, eine Liste von Optionen, übergeben Sie es zur Ansicht und echo zu der entsprechenden Eigenschaft.Controller
Die Schleife unten erstellen Sie eine string-variable, die enthält alle Optionen für die typeahead. Es fügt Anführungszeichen um jedes element, und ein Komma am Ende - so
Apple
werden würde"Apple",
. Es wird dann fügen Sie jedes element in der Zeichenfolge.Ansicht
Ihrem Eingang in der Sicht sollte in etwas so Aussehen, ist der wichtige Teil, wo die Liste der Optionen ist auch:
data-source="[<?php echo $typeahead; ?>]"
Hoffentlich hilft!
rtrim($typeahead_string, ",")
statt (siehe edit oben), sollte funktionieren.immer noch nicht für mich arbeiten. wenn ich überprüfen Elemente der Daten wie diese "uncategories","php" . was bedeutet der erste ist immer spasing.
fand die Art und Weise, statt mit diesem
$formatted_name = '"' . $name['Name'] . '", ';
nur ändern, um$formatted_name = '"' . $name['Name'] . '", ';