Je suis nouveau sur php et mysql mais il y a un projet que je dois faire sur mes cours avec Silex 2.0 et Symfony et j'ai des problèmes avec mon code php et étranger clés dans ma table de produits dans la base de données.Les clés étrangères PHP/MySQL enregistre comme id = 0 à la base de données
Le problème est lié au bon fonctionnement des fonctions de sauvegarde de mon programme.
Voici ce qui se passe dans ma base de données lorsque je tente d'ajouter ou de modifier nouveau produit - je reçois idCategory et idProducent = 0.:/
Et il fait partie de mon code ProductModel.php responsable de l'enregistrer la base de données (produits de table):
public function addProduct($data) { $sql = 'INSERT INTO `products` (`id`, `idCategory`, `idProducent`, `name`, `price_netto`, `price_brutto`, `desc`) VALUES (NULL,?,?,?,?,?,?)'; $data['price_netto'] = $data['price_brutto'] * 1.22; $this->_db->executeQuery( $sql, array( $data['idCategory'], $data['idProducent'], $data['name'], $data['price_netto'], $data['price_brutto'], $data['desc']) ); }
public function saveProduct($data)
{
if (isset($data['id']) && ctype_digit((string)$data['id'])) {
$sql = "UPDATE
products
SET
idCategory = ?, idProducent = ?, name = ?,
price_netto = ?, price_brutto = ?, `desc` = ?
WHERE
id = ?";
$data['price_netto'] = $data['price_brutto'] * 1.22;
$this->_db->executeQuery(
$sql, array(
$data['idCategory'], $data['idProducent'], $data['name'],
$data['price_netto'], $data['price_brutto'], $data['desc'], $data['id'])
);
} else {
$sql = "INSERT INTO
`products` (`id`, `idCategory`, `idProducent`, `name`, `price_netto`, `price_brutto`, `desc`)
VALUES
(NULL,?,?,?,?,?,?)";
$data['price_netto'] = $data['price_brutto'] * 1.22;
$this->_db->executeQuery(
$sql, array($data['id']), array(
$data['idCategory'], $data['idProducent'], $data['name'],
$data['price_netto'], $data['price_brutto'], $data['desc'])
);
}
}
ici vous avez ProductController.php [la partie que je pense est important ici]: https://codeshare.io/5w4rRD
fonctionne également de ProducentsModel.php et CategoriesModel.php:
public function getProducents()
{
$sql = 'SELECT * FROM producents;';
return $this->_db->fetchAll($sql);
}
public function getCategories()
{
$sql = 'SELECT * FROM categories;';
return $this->_db->fetchAll($sql);
}
Désolé pour vous donner seulement des liens mais cela est ma première fois avec le débordement de pile, espère que vous comprendrez.
pouvez-vous partager votre structure de table? –
http://screenshot.sh/oe5YXJ1HXU3Jq http://screenshot.sh/n9GN2B179sVUM – Abadd0n
Utilisez-vous MyISAM ou InnoDB? –