Einfügen array in EINEM Feld in mysql
Ich einfügen möchte ein array in EINEM Feld in der mysql-Datenbank mit PHP ..
diese Arbeit ist fein :
HTML :
anotherField :<input type="text" name="anotherField" />
fax :<input type="text" name="f[]" />
email :<input type="text" name="f[]" />
phone :<input type="text" name="f[]" />
PHP (ich verwende CodeIgniter Rahmen) :
<?php
function addCustomRow($tableName)
{
$arr = $this->input->post('f');
$field = implode("|", $arr);
$data = array(
'anotherField' => $this->input->post('anotherField'),
'field' => $field
);
$this->db->insert($tableName, $data);
}
?>
und ich bekomme die Daten in mysql wie diese
fax|email|phone
ABER ..
Meine Frage ist .. ich möchte viele arrays, die im gleichen Bereich .. Wie diese :
fax|email|phone :br: fax|email|phone :br: fax|email|phone ..
Ich habe versucht, einige Sache wie diese :
Html :
First array :
fax :<input type="text" class="inp" name="f[0][0]" />
email :<input type="text" class="inp" name="f[0][1]" />
phone :<input type="text" class="inp" name="f[0][2]" />
Second array :
fax :<input type="text" class="inp" name="f[1][0]" />
email :<input type="text" class="inp" name="f[1][1]" />
phone :<input type="text" class="inp" name="f[1][2]" />
PHP :
<?php
function addCustomRow($tableName)
{
$arr = $this->input->post('f[]');
$field = implode(":br:", $arr);
$data = array(
'anotherField' => $this->input->post('anotherField'),
'field' => $field
);
$this->db->insert($tableName, $data);
}
?>
aber es sagt Falsch [ Severity: Notice Message: Arrays zu-string-Konvertierung ]
und bekomme ich Daten in mysql wie diese
array :br: array
EDIT :
Will ich tun, wie auf diese Weise, weil ich eine Tabelle Kategorien ..
und jede Katze hat eigene details ( Felder ) .. also, wenn ich die neue Katze habe ich nur einige Sache wie diese
name of cat : <input type="text" name="name" />
<!-- Fields -->
Fields //
Field 1 :
title of the filde : <input type="text" name="f[0][0]" />
type : <input type="text" name="f[0][1]" /> <!-- 1= text , 2= select , 3= textarea .. -->
default value : <textarea rows="8" cols="20" name="f[0][2]"> </textarea> <!-- if select type write value1::value2::value3 ... -->
Field 2 :
title of the filde : <input type="text" name="f[1][0]" />
type : <input type="text" name="f[1][1]" /> <!-- 1= text , 2= select , 3= textarea .. -->
default value : <textarea rows="8" cols="20" name="f[1][2]"> </textarea> <!-- if select type write value1::value2::value3 ... -->
Field 3 :
title of the filde : <input type="text" name="f[2][0]" />
type : <input type="text" name="f[2][1]" /> <!-- 1= text , 2= select , 3= textarea .. -->
default value : <textarea rows="8" cols="20" name="f[2][2]"> </textarea> <!-- if select type write value1::value2::value3 ... -->
und ich kann hinzufügen, eine beliebige Anzahl von Feldern hier ..
in der Datenbank möchte ich die Daten eingefügt, wie diese :
[nameOfBook|1|anyName :br: noOfPages|1|anyNo ]
und in die andere Katze wie diese zum Beispiel :
[colorOfcar|2|red::black::green :br: Preis|1|anyPrice ]
Hilfe ?
vielen Dank im Voraus ..
@Justin Johnson
Dank für deine Antwort, aber es funktioniert nicht.
Ich habe mit $data var einfügen alle Daten, aber ich benutze Sie beantworten, wie diese
function addCustomRow($tableName)
{
$data = array(
'name' => $this->input->post('name'),
'fields' => serialize($this->input->post('f[]'))
);
$this->db->insert($tableName, $data);
}
und ich bekomme Daten mysqyl wie dieses ( b:0; ) !!
//
@Suku Dank .. ich habe es verwendet, bevor Sie Fragen, aber ich wusste nicht, wie .. Wie kann ich es in meinem Fall hier ? ..
@Alex
weil ich die Tabelle mit dem Namen (Kategorien) und jede Katze hat eigene Felder wie :
carsCat >
type :
color:
details:
BooksCat >
nameOfbook:
writer:
numberOfpage:
usw ..
Ich finde diese Art der Beste Weg, vielleicht in meinem Fall .. irgendwelche Vorschläge?
InformationsquelleAutor me.again | 2010-02-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Speichern, ein array in einem Feld, nur serialisieren. Wenn Sie brauchen, um den Zugriff auf das array aus der Datenbank unserialize.
serialize und unserialize wird den trick tun und wie Justin Johnson auch erwähnt, ist es auch gut, sich zu normalisieren
danke .. ich habe es verwendet, bevor Sie Fragen, aber ich wusste nicht, wie .. Wie kann ich es in meinem Fall hier ?
InformationsquelleAutor Sukumar
In Erster Linie würde ich vorschlagen, dass Sie versuchen, normalisieren Ihre Tabelle Schema ein wenig mehr. Speichern von mehreren, mehrere Werte in ein Feld zu führen, dass viele Kopfschmerzen. Vielleicht so etwas wie dieses:
alt-text http://i50.tinypic.com/2heiwjb.jpg
In diesem Schema, die
contact_information
Tabelle ist im Zusammenhang mit derperson
Tabelle zum speichern einer ID (Fremdschlüssel-Referenz), um eine person, die Zeile. Auf diese Weise können Sie so viele Kontakt-Einträge für jede person, ohne zu müssen cram ein array von Daten in einem Feld.Jedenfalls, um Ihr problem zu lösen, wie es ist, versuchen Sie es mit der Serialisierung der Daten, bevor Sie Sie einfügen in die DB.
Edit: aktualisiert, um Kommentar.
Sorry, kopieren und einfügen in der falschen Stelle. Ich aktualisiert meine Antwort mit dem korrigierten code.
danke .. ich mit dem neuen code, aber auch er sagt falsch ( A Database Error Occurred Error Number: 1054 Unknown column 'anotherField' in 'field list' INSERT INTO
cats
(anotherField
,field
) VALUES (0, 'b:0;') )oh, tut mir Leid ! .. Ändere ich den Namen des Feldes (name) , die Daten werden eingefügt, aber ich bekomme diese ( b:0; ) in meinem Bereich 🙁
InformationsquelleAutor Justin Johnson
Müssen Sie möglicherweise verwenden Sie die Funktionen serialize() und unserialize() als das folgende:
und wenn Sie benötigen, um wieder das array:
sehen dies für mehr info : http://www.wpfasthelp.com/insert-php-array-into-mysql-database-table-row-field.htm
InformationsquelleAutor user3427308
Habe ich es mit einem kleinen trick 🙂
Ich fügen Sie einfach ein heddin-Eingang mit dem Wert (:br:) , und halten Sie alle Namen der Eingänge equal (f[]) .. so :
HTML :
PHP :
}
nun bekomme ich Daten in mysql so :
Beispiel :
Dann kann ich wieder die Daten aus der mysql-Datenbank einfach so :
(Ich benutze Smarty ! )
Ausgabe
** Beachten Sie, dass ich die Verwendung von 2 explodieren hier für (:br:|) und der andere für (|) ..
Dank irgendeiner Weise für Eure Hilfe ..
Ahmad ..
InformationsquelleAutor me.again
EINFÜGEN VON ARRAY-WERTEN AUS FORMULAR IN DATENBANK
InformationsquelleAutor Safdar Pathan