Hallo,
ich hab mit hilfe von implode mehrere werte in eine Spalte eingetragen.
In der Spalte Name die werte 1, 2, 3 abgespeichert.
Nun möchte ich dies aber auslesen und weiß aber nicht wie das gehn soll
Hoffe ihr könnt mir da weiter helfen
Hallo,
ich hab mit hilfe von implode mehrere werte in eine Spalte eingetragen.
In der Spalte Name die werte 1, 2, 3 abgespeichert.
Nun möchte ich dies aber auslesen und weiß aber nicht wie das gehn soll
Hoffe ihr könnt mir da weiter helfen
explode
Was wolf sagt und
ich hab mit hilfe von implode mehrere werte in eine Spalte eingetragen.
nicht gut. Leg doch 3 Spalten an.
Falsch:
name
--------
Hans Wienerschnitzel
Richtig:
vorname | nachname
----------------------------
Hans | Wienerschnitzel
hmm
irgentwie verstehe ich das nicht so ganz
http://selfphp.de/funktionsref…ng_funktionen/explode.php
Wo setze ich die variabel $row['tbkkty'] (ist die spalte wo die IDs abgespeichert wurden. Also 1, 5, 4, 7)hin und wo $row['tbktnd'] (so das die IDs ihren Namen wieder bekommen. 1 = Normal) setze ich die hin.
http://php.net/manual/de/function.explode.php siehe Parameterliste
Also wenn ich das so mache
<select multiple class="form-control" size="5" name="add_kkty[]">
<?php
$array = explode ( ',', $row['tbkkty'] );
for ( $x = 0; $x < count ( $array ); $x++ ){
extract($zeile);
// echo "<option value='".$row[5]."'";
// if($row[5] == $array){echo "selected";}
echo "<option>".$array[$x]."</option>\n";}
?>
</select>
Bekomme ich nur ein Feld und ich find den Fehler einfach nicht
Edit:
habs mitlerweile geschaft, die IDs was abgespeichert wurden in der Auswahlliste anzuzeigen.
Aber das es den eigentlichen namen anzeigt, leider noch nicht.
wolf ya.Würde dann aber json nutzen (war da nicht mal irgendwas was serlialize nicht "kann", oder n bug?).
Ansonsten ENUM oder ne Details Table.
Oder, wenn es die Version erlaubt, mysql json: https://dev.mysql.com/doc/refman/5.7/en/json.html
(hab ich selbst noch nicht ausprobiert, sieht aber gut aus)
Germanikus
Evtl hast Du den falschen Trenner:
Wenn Du implode mit ', ' (Komman Leerzeichen) nutzt, dann soltest Du auch diesen Trenner bei explode nutzen.
@cotton, ja JSON nutzen, serialize ist relativ Fehleranfällig
Wie schon geschrieben
habs mitlerweile geschaft, die IDs was abgespeichert wurden in der Auswahlliste anzuzeigen.
Aber das es den eigentlichen namen anzeigt, leider noch nicht.
Nur das mit dem Namen bekomme ich nicht hin.
ok soweit war ich auch mal.
Dachte, dass dies ein fehler sei.
Da ich Xmal den namen Ausrüstung darin stehen habe.
sory für den Push.
Aber hat jemand ne lösung?
Was ist denn (jetzt noch) das Problem?
Bei einem Select-Imput-Feld Kannst Du den angezeigten Namen, und den Schlüssel (key) als <option> angeben.
Evtl hast Du keine key-name Kombination, da Du ja schreibst, dass Du "1, 2, 3" in der Tabelle in einem Feld anlegst.
Wenn es keine weiteren Daten gibt, dann könntest Du eine key-key Kombi nutzen
So sieht das momentan aus mit dem Code
<?php
include('config.php');
$strSQL = "
SELECT
db_karten_kategorie.tb_karten_kategorie_id AS tbkkid,
db_karten_kategorie.tb_karten_kategorie_name_de AS tbkknd,
db_karten_kategorie.tb_karten_kategorie_name_en AS tbkkne,
db_karten_kategorie.tb_karten_kategorie_attribut AS tbkkat,
db_karten_kategorie.tb_karten_kategorie_typ AS tbkkty,
db_karten_attribut.tb_karten_attribut_id AS tbkaid,
db_karten_attribut.tb_karten_attribut_name_de AS tbkand,
db_karten_typ.tb_karten_typ_id AS tbktid,
db_karten_typ.tb_karten_typ_name_de AS tbktnd
FROM
db_karten_kategorie
LEFT JOIN
db_karten_attribut
ON
db_karten_attribut.tb_karten_attribut_id = db_karten_kategorie.tb_karten_kategorie_attribut
LEFT JOIN
db_karten_typ
ON
db_karten_typ.tb_karten_typ_id = db_karten_kategorie.tb_karten_kategorie_typ
ORDER BY
db_karten_kategorie.tb_karten_kategorie_name_de";
$rs = mysql_query($strSQL);
while($row = mysql_fetch_array($rs)) {
// $linEdit = "<a href='card_att_edit.php?id=".$row['tbktid']."'><button type='button' class='btn btn-default btn-sm'>
// <span class='glyphicon glyphicon-pencil' aria-hidden='true'></span> Bearbeiten
// </button></a>";
$linDele = "<a href = 'card_katogorie_add.php?id=".$row['tbkkid']."'><button type='button' class='btn btn-default btn-sm'>
<span class='glyphicon glyphicon-trash' aria-hidden='true'></span> Löschen
</button></a>";
echo "".$row['tbkkty']."";
?>
</br>
<hr>
</br>
<?PHP
// $string = 'PHP ¾ , Die Befehlsreferenz';
// echo $row['tbkkty'] . '</br>';
$array = explode ( ',', $row['tbkkty'] );
for ( $x = 0; $x < count ( $array ); $x++ )
{
echo "".$array[$x]."</br>";
}
?>
</br>
<hr>
</br>
<select multiple class="form-control" size="7" name="add_kkty">
<?php
$array = explode ( ',', $row['tbkkty'] );
for ( $x = 0; $x < count ( $array ); $x++ ){
echo "<option value='".$array[$x]."'";
if($row['tbktnd'] == $array){echo "selected";}
echo ">".$array[$x]."</option>\n";}
?>
</select>
</br>
<hr>
</br>
<select multiple class="form-control" size="7" name="add_kkty">
<?php
$array = explode ( ',', $row['tbkkty'] );
for ( $x = 0; $x < count ( $array ); $x++ ){
echo "<option value='".$row['tbktid']."'";
// if($array[$x] == $array[$x]){echo "selected";}
echo ">".$row['tbktnd']."</option>\n";}
?>
</select>
<?PHP
}
?>
Alles anzeigen
So hab nun fast 3 Std. lang rum gedoktort und im Inet rumgeschaut .
Aber ich finde da nicht viel.
Meine Code gibt nur das an, was ihr im Bild zu sehen ist.
Die erste Auswahl ist die richtige.
Aber der rest stimmt von hinten und vorne nicht und ich komme auf die blöde lösung nicht.
Habe schon versucht mit dem Arrey in eine String zu stecken aber das geht auch nicht.
Bitte schreibt mir den richtigen Code rein.
Bitte x100000
<select multiple class="form-control" size="7" name="add_kkty">
<?php
$array = explode ( ',', $row['tbkkty'] );
for ( $x = 0; $x < count ( $array ); $x++ ){
echo "<option value='".$array[$x]."'";
// if($row['tbktnd'] == $array){echo "selected";}
echo ">".$array[$x]."-".$row['tbktid']."-".$row['tbktnd']."</option>\n";}
?>
</select>
Ich weiß, was Du falsch machst. Mit Deinen seltsamen Abkürzungen wie zB tbktid komme ich gerade nicht klar.
siehe comments:
<select multiple class="form-control" size="7" name="add_kkty">
<?php
$array = explode ( ',', $row['tbkkty'] );
for ( $x = 0; $x < count ( $array ); $x++ ){
echo "<option value='".$array[$x]."'"; // hier holst du jeden x-ten wert
// if($row['tbktnd'] == $array){echo "selected";}
echo ">".$array[$x]."-".$row['tbktid']."-".$row['tbktnd']."</option>\n";} // hier gibst du immer den gleichen wert für tbktid und tbktnd aus
?>
</select>
Normalerweise hat/holt/lädt man Daten in einem Array/Object
und geht dann "foreach" durch.
Dabei hast du einen Key und eine Value.
Nun hast Du ja aber Dein "1,2,3" Datenbankfeld. Wie/Woher kommt denn da nun die Value - also der Name zum Schlüssel?
Wie gesagt - keine Ahnung, was alle Deine Werte bedeuten.
Sory den query vergessen
$strSQL = "
SELECT
db_karten_kategorie.tb_karten_kategorie_id AS tbkkid,
db_karten_kategorie.tb_karten_kategorie_name_de AS tbkknd,
db_karten_kategorie.tb_karten_kategorie_name_en AS tbkkne,
db_karten_kategorie.tb_karten_kategorie_attribut AS tbkkat,
db_karten_kategorie.tb_karten_kategorie_typ AS tbkkty,
db_karten_attribut.tb_karten_attribut_id AS tbkaid,
db_karten_attribut.tb_karten_attribut_name_de AS tbkand,
db_karten_typ.tb_karten_typ_id AS tbktid,
db_karten_typ.tb_karten_typ_name_de AS tbktnd
FROM
db_karten_kategorie
LEFT JOIN
db_karten_attribut
ON
db_karten_attribut.tb_karten_attribut_id = db_karten_kategorie.tb_karten_kategorie_attribut
LEFT JOIN
db_karten_typ
ON
db_karten_typ.tb_karten_typ_id = db_karten_kategorie.tb_karten_kategorie_typ
ORDER BY
db_karten_kategorie.tb_karten_kategorie_name_de";
$rs = mysql_query($strSQL);
while($row = mysql_fetch_array($rs)) {
Alles anzeigen
Edit:
Also ich möchte alt die werte was ich mit Explodet geteilt habe in den namen wieder verwandeln (das ist $row['tbktnd'])
Also dein Problem ist einfach das du nicht beide sachen in einem select darstellen kannst?
Bitte mal die Ausgabe posten
<?php
include('config.php');
$strSQL = "
SELECT
db_karten_kategorie.tb_karten_kategorie_id AS tbkkid,
db_karten_kategorie.tb_karten_kategorie_name_de AS tbkknd,
db_karten_kategorie.tb_karten_kategorie_name_en AS tbkkne,
db_karten_kategorie.tb_karten_kategorie_attribut AS tbkkat,
db_karten_kategorie.tb_karten_kategorie_typ AS tbkkty,
db_karten_attribut.tb_karten_attribut_id AS tbkaid,
db_karten_attribut.tb_karten_attribut_name_de AS tbkand,
db_karten_typ.tb_karten_typ_id AS tbktid,
db_karten_typ.tb_karten_typ_name_de AS tbktnd
FROM
db_karten_kategorie
LEFT JOIN
db_karten_attribut
ON
db_karten_attribut.tb_karten_attribut_id = db_karten_kategorie.tb_karten_kategorie_attribut
LEFT JOIN
db_karten_typ
ON
db_karten_typ.tb_karten_typ_id = db_karten_kategorie.tb_karten_kategorie_typ
ORDER BY
db_karten_kategorie.tb_karten_kategorie_name_de
";
$rs = mysql_query($strSQL);
while($row = mysql_fetch_array($rs)) {
echo '<pre>'. print_r($row, TRUE) .'</pre>';
}
?>
Alles anzeigen
Nicht mehr und nicht weniger, nur das was da raus kommt ist erstmal wichtig
Deine komischen abkürzbugen sind nämlich wie cottton schon sagte unverständlich.. x.x
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!
HTML-Seminar.de - mit Videos zum schnellen Lernen, wie man eine Website selbst erstellt.