Hallo zusammen,
ich verzweifel gerade bei einer, sicherlich recht einfachen Sache, für jemanden der mit PHP fitter ist als ich.
Ich habe zu einer Person Merkmale als Zahl in meiner DB und der User Tabelle hinterlegt - Schema 1;7;4;10;11;
Diese Werte werden beim eintragen nicht sortiert.
Es gibt eine weitere Tabelle in meiner DB (MERKMALE), die IDs und die Bezeichnung dieses Merkmals enthält.
Ich habe dies so gelöst, damit ich die Merkmale später beliebig erweitern kann, und dann eben IDs automatisch zugefügt werde und ich nur die Bezeichnung eintragen muss.
Bis dato bin ich in meinem kleinen Test-Projekt damit gut zu Rande gekommen und es hat überall alles funktioniert, wo ich nur die Zahlen abrufe und/oder verarbeite.
Nun habe ich auf einer Seite das Bedürfnis, die Werte/Merkmale zur Person auszulesen und dann nicht die ID/Zahl, sondern das entsprechende Wort zurück zu geben.
Ich habe mir dazu bereits schon mal eine Funktion geschrieben, die ich genutzt habe. Man war ich stolz, hat MICH viel überlegung gekoste, weil ich auch hier nicht auf die Lösung kam...
Meine Werte wurden von 1;4;8; in mein gewünschtes Format Auto, Boot, Maske umgewandelt.
Sprich kommagetrennte Worte und hinter dem letzen Wort kein Komma und Leerzeichen mehr.
Nur leider geht das ganze nun in die Brüche, wo ich mit den IDs im zweistelligen Bereich angelangt bin.
Nun wird nämlich aus der 10, ein Auto0 und aus einer 11 wird AutoAuto.
Hier meine Funktion
Ich habe schon sehr viel probiert. Habe versucht meinen String als Array zu konvertieren und dann mit preg_replace() oder array_replace() zu hantieren. Leider bin ich bis dato zu keinem Ergebnis gekommen.
Hat dazu noch jemand eine brauchbare Idee?
Vielen Dank für eure Hilfe
ich verzweifel gerade bei einer, sicherlich recht einfachen Sache, für jemanden der mit PHP fitter ist als ich.
Ich habe zu einer Person Merkmale als Zahl in meiner DB und der User Tabelle hinterlegt - Schema 1;7;4;10;11;
Diese Werte werden beim eintragen nicht sortiert.
Es gibt eine weitere Tabelle in meiner DB (MERKMALE), die IDs und die Bezeichnung dieses Merkmals enthält.
1 | Auto |
2 | Baum |
3 | Haus |
4 | Boot |
5 | Drachen |
6 | Schule |
7 | Teil |
8 | Maske |
9 | Edding |
10 | Wort |
11 | Farbe |
12 | Scheune |
Bis dato bin ich in meinem kleinen Test-Projekt damit gut zu Rande gekommen und es hat überall alles funktioniert, wo ich nur die Zahlen abrufe und/oder verarbeite.
Nun habe ich auf einer Seite das Bedürfnis, die Werte/Merkmale zur Person auszulesen und dann nicht die ID/Zahl, sondern das entsprechende Wort zurück zu geben.
Ich habe mir dazu bereits schon mal eine Funktion geschrieben, die ich genutzt habe. Man war ich stolz, hat MICH viel überlegung gekoste, weil ich auch hier nicht auf die Lösung kam...
Meine Werte wurden von 1;4;8; in mein gewünschtes Format Auto, Boot, Maske umgewandelt.
Sprich kommagetrennte Worte und hinter dem letzen Wort kein Komma und Leerzeichen mehr.
Nur leider geht das ganze nun in die Brüche, wo ich mit den IDs im zweistelligen Bereich angelangt bin.
Nun wird nämlich aus der 10, ein Auto0 und aus einer 11 wird AutoAuto.
Hier meine Funktion
PHP-Code:
function id_zu_namen($intxt){
global $db_pre;
$sql = "SELECT * FROM merkmale ORDER BY id ASC";
$result = $db_pre->query($sql) OR die(mysqli_error());
$list = array();
while ($row = $result->fetch_assoc()) {
$list[] = $row;
}
$var_name = array();
foreach ($list as $i => $record) {
$var_name[] = $record['bezeichnung'];
}
$var_id = array();
foreach ($list as $i => $record) {
$var_id[] = $record['id'];
}
$intxt = str_replace($var_id, $var_name, $intxt);
$intxt = str_replace(";",", ",substr($intxt,0,-1));
return $intxt;
}
Hat dazu noch jemand eine brauchbare Idee?
Vielen Dank für eure Hilfe
Kommentar