Hallo,
Ik loop vast met mijn if statement in mijn controller.
Dit is wat er moet gebeuren:
Ik heb een formulier met een input email en ordernummer gemaakt en een alertbox met ajax jquery.
Vervolgens als het ordernummer niet 12345 is dan moet ik de status = false meegeven aan de data.


Code van mijn controller:

<?
if (isset($_POST['email'])){

$gegevens = array("email" => $_POST['email'], "order-hash" => $_POST['order-hash']);

echo json_encode($gegevens);
}
if ($gegevens['order-hash'] === '12345')
$gegevens["order-hash"] = false;
?>

Kan iemand mij helpen ?
Dit is de opdracht dus mijn volgende stap die ik moet maken.

$order->fetch() in mijn code die returnt true of false op basis of er een row is gevonden.
Status moet true zijn als er wat gevonden is(Als ik de juiste gegevens heb ingevuld).
Als het niet gevonden is moet de status false zijn.(Als ik niet de juiste gegevens heb ingevuld).

Code ziet er als volg uit:

<?

if (isset($_POST['email'])){

$gegevens = array('status'=> false,);

$order = new Order();
$order->set_query("SELECT orders.* FROM orders INNER JOIN users ON orders.user_id = users.id WHERE email = :email AND order_hash = :order_hash", false);
$order->bind('email', $_POST['email']);
$order->bind('order_hash', $_POST['order-hash']);

if($order->fetch()){

EmailHelper::order_confirmation($order);


echo "Gevonden", json_encode($gegevens);
}else
{

echo "Niet gevonden", json_encode($gegevens);
}
}
?>

Nu is de status standaard false door de array.
Als je wilt weten of een record bestaat, dan moet je iets met num_rows doen. Ik ben zelf niet heel bekend met PDO.
Bedoel je zo ?

<?
if (isset($_POST['email'])){

$gegevens = array('status'=> false,);

$order = new Order();
$order->set_query("SELECT orders.* FROM orders INNER JOIN users ON orders.user_id = users.id WHERE email = :email AND order_hash = :order_hash", false);
$order->bind('email', $_POST['email']);
$order->bind('order_hash', $_POST['order-hash']);
$order->execute();

if($order->fetch()){

EmailHelper::order_confirmation($order);


echo "Gevonden", json_encode($gegevens);
}else
{

echo "Niet gevonden", json_encode($gegevens);
}
}
?>
En lees je even in hoe je kan controleren op het bestaan van records. Ik las iets over rowCount().
heb opgelost

<?
if (isset($_POST['email'])){

$gegevens = array('status'=> false,);

$order = new Order();
$order->set_query("SELECT orders.* FROM orders INNER JOIN users ON orders.user_id = users.id WHERE email = :email AND order_hash = :order_hash", false);
$order->bind('email', $_POST['email']);
$order->bind('order_hash', $_POST['order-hash']);

if($gegevens['status'] = $order->fetch()){

EmailHelper::order_confirmation($order);


echo "Gevonden", json_encode($gegevens);
}else
{

echo "Niet gevonden", json_encode($gegevens);
}
}
?>
Volgens mijn niet helemaal. Heb je al eens geprobeerd of je de juiste resultaten krijgt als je wel of geen record in je database hebt staan?
ja heb gecheckt met print_r klopt allemaal
Zeker weten dat de status ook op false staat als het record niet bestaat?
Ik had verwacht dat je op zijn minst rowCount() o.i.d. moest gebruiken. Maar zoals ik al zei ben ik niet bekend met PDO, maar het verbaast mij wel ;-)

Het is ergens wel logisch, want als een query geen resultaat heeft zal een fetch false opleveren. Als er wel een resultaat is heb je er opeens een record instaan, wat niet gewenst is. Ik zou toch eens kijken naar het aantal records of de query zo aanpassen dat deze zelf telt.

Reageren