Ich habe ein Problem beim Erstellen benutzerdefinierter Felder, nachdem der Datenbank bereits Daten hinzugefügt wurden. Ich habe mir das schon eine Weile angesehen und mein Gehirn ist abgeschaltet. Ich versuche es so gut wie möglich zu erklären.Benutzerdefinierte Felder, die nach Eingabe bereits eingegebener Daten erstellt wurden
Ich habe 2 Tabellen, custom_fields und custom_fields_values. Ich sortiere diese Felder auch über eine Tabellenspalte. Wenn ich sie aus der db ziehe, muss ich den Tabellen beitreten, damit die Ergebnisse in der gleichen Reihenfolge wie die Felder angezeigt werden. Wenn ich das nicht tue, werden die Daten durcheinander gebracht.
$customfield = $pdo->prepare("SELECT * FROM custom_fields ORDER BY fieldorder ASC");
$customfield->execute();
$customfield = $customfield->fetchAll(PDO::FETCH_ASSOC);
$customfieldvals = $pdo->prepare("SELECT vals.* FROM custom_fields_values vals JOIN custom_fields fields ON fields.id = vals.fieldid WHERE vals.related_system=:relsystem ORDER BY fields.fieldorder ASC");
$customfieldvals->bindParam(':relsystem', $get_system['id'], PDO::PARAM_STR);
$customfieldvals->execute();
$customfieldvals = $customfieldvals->fetchAll(PDO::FETCH_ASSOC);
I haben dann eine foreach
Schleife, die die Daten richtig anzeigt. Das Problem tritt auf, wenn ich ein neues benutzerdefiniertes Feld hinzufüge, das keinen Wert enthält, weil es in der Tabelle custom_fields erstellt wurde, aber NICHT in der Tabelle custom_fields_values, so dass es bei ON fields.id = vals.fieldid
nicht übereinstimmt. Wenn ich die Felder auswähle, während dies keinen Wert hat, nimmt es den Wert eines anderen Feldes. Im Wesentlichen, weil es auf der id
Ebene der Felder und fieldid
der Werte nicht übereinstimmt, wird alles durcheinander gebracht.
Wie kann ich es zu wo, wenn es keinen Wert Zeile erstellt hat, wird es nur zeigen NULL
egal was statt den Wert eines anderen Feldes zu nehmen?
EDIT
soll ich das über den richtigen Weg oder gibt es einen besseren Weg, das benutzerdefinierte Feld Wert folgen das benutzerdefinierte Feld zu haben, anstatt die JOIN
Methode?
'LEFT JOIN' hat nicht funktioniert. Es hat das gleiche Ergebnis. – CrunchyToast
Hast du es mit 'Right Join' versucht? –
@CrunchyToast Sie können diese Abfrage auch versuchen. 'SELECT vals. * FROM Felder für benutzerdefinierte Felder LINKE VERBINDUNG custom_fields_values vals EIN fields.id = vals.fieldid WHERE vals.related_system =: relsystem ORDER BY fotos.fieldorder ASC' –