PHP If offer is rejected 3 times, remove div - php

I have a "offer" button that lets the user enter a price offer. If they enter 3 offers and all are rejected, I want the div to be removed.
if(isset($_POST['offer_form']) && !empty($_POST['offer_form'])){
if($offers === "1"){
if($_POST['offer_form'] >= $price_offer){
echo 'Accepted';
}else{
echo '<div class="offer_errors">Offer Rejected</div>';
}
}else{
echo '<div class="offer_errors">Sorry, no offers can be made</div>';
}
}

You can try to use Sessions
session_start();
$_SESSION['offer']=1;
Something like that.
to increment is do something like this:
session_start();
if(isset($_SESSION['offer']) && $_SESSION['offer'] != ''){
$offer = $_SESSION['offer'];
$offer += 1;
$_SESSION['offer'] = $offer;
}else{
$_SESSION['offer'] = 1;
}
Just get some ideas from this. I dont think this is ready for what you need. Just modify it suit your needs.

Related

Why value doesn't want to increment when I submit a post

I'm making a login attempt checker, so if user inputs wrong key (witch was send via email) then It add +1 on the attempt meter. I stored it in a session did quite a lot of research but it just doesn't work. here is my PHP code.
session_start();
$_SESSION['poskusi'] = 0;
$kljuc = $_SESSION['rand_kljuc'];
if(isset($_POST['vpis_kljuc'])){
$vpis_kljuc = $_POST['vpis_kljuc'];
if($vpis_kljuc == $kljuc){
echo "You are in";
}
else {
echo "Wrong key";
$_SESSION['poskusi']+1;
if($_SESSION['poskusi'] == 3){
echo "locked";
}
}
}
You are setting the counter to 0 every time the page loads.
Try this:
if(!isset($_SESSION['poskusi'])) {
$_SESSION['poskusi'] = 0;
}
You are also incrementing it wrong. It should be
$_SESSION['poskusi']++; or
$_SESSION['poskusi']+=1; if you prefer.

Send mail only once in while result php

I have this code
while($row = $rs->fetch_object()){
echo $curl->get($row->site_url, 'sitekontrol', $row->id )."";
if($row->site_url == "changed") {
sendmail($mailadress);
}
}
this sent to many times. i want to send just once on complate result.
This is sitecontrol system
This is while
If you want to send the results once 10 sites change, you will have to keep track of this variable.
You may want to do something like this:
$changes = 0;
while($row = $rs->fetch_object() && $changes < 10){
echo $curl->get($row->site_url, 'sitekontrol', $row->id )."";
if($row->site_url == "changed") {
$changes++;
}
}
if($changes >= 10) {
sendmail($mailadress);
}
EDIT: Changed to Federico klez Culloca's solution.

vTiger Event Handler to check if record exists

I am working on vTiger 6.5 and I am trying to figure a way to see if a record exists in a custom module of mine. I want to check whether the 'policynumber' is new before saving, here is my code so far. For some reason it seems to act randomly depending on my module number chosen.
class isaHandler extends VTEventHandler {
function handleEvent($eventName, $entityData) {
global $adb;
$moduleName = $entityData->getModuleName();
if($moduleName=='isa'){
if($eventName == 'vtiger.entity.beforesave.modifiable') {
$isNew = $entityData->isNew('policynumber');
if ($isNew == false) {
echo "Duplicate policy number";
exit;
}
}
if($eventName == 'vtiger.entity.beforesave') {}}
if($eventName == 'vtiger.entity.beforesave.final') {
$price = $entityData->get('currentamount');
if($price > 20000){
echo "Please go back and enter less than 20000";
exit;
}
if($eventName == 'vtiger.entity.aftersave') {}
}
}
At the moment I am currently using an echo just to see the result. But later on I will perform more than this.
isNew()
Returns true if new record is being created, false otherwise.
More info is here
you should write a custom query to check policynumber already exist or not in your function:
if($eventName == 'vtiger.entity.beforesave.modifiable') {
global $adb;
$result = $adb->pquery("SELECT your-field-name FROM table_name WHERE policynumber=?", array($policynumbervalue));
if($result && $adb->num_rows($result)) {
echo "This policy number exist";
die();
}else{
// write your overwrite code
}
} //end if($eventName == 'vtiger.entity.beforesave.modifiable')
Update:
I am assuming there is field i.e. policynumber in your form, you enter some value in this field and submit the form. so you will get entered policy number value from this:
$policynumbervalue = $entityData->get('policynumber'); //this is vtiger standard way
if this does not work, you can simply use php global variable $_REQUEST['policynumber'] but I is not a good practice.
Hope this will help.
This is the update to my answer, I simply done an if statement on the number of rows displayed.
if($eventName == 'vtiger.entity.beforesave.modifiable') {
$policynumbervalue = $entityData->get('policynumber');
$sql = $adb->pquery("SELECT policynumber FROM vtiger_isa WHERE policynumber=?",array($policynumbervalue));
$nrows = $adb->num_rows($sql);
if($nrows > 0){
echo "<script type=\"text/javascript\">window.alert('ISA policy number already exists, you will be redirected to the updata module.');
window.location.href = '/vtigercrm/index.php?module=isa&view=List';</script>";
exit;
}

if statement when NULL (PHP)

I want to have if the variable = null then he makes it to 1.
if the variable exist do nothing and dont make it again to 1.
i got this code:
if (isset($_POST["register"])) {
if(!$l_NextPage){
$l_NextPage = 1;
echo "helaas" . "</br>";
}
if($l_NextPage == 1){
echo "hoi";
$l_NextPage = 2;
}else if($l_NextPage == 2){
echo "doei";
}
}
only the code dont work i tried empty, isset, $var == FALSE but everytime he makes $l_NextPage to 1. is there any solution i tried this too with session but even it don't work!
What am I doing wrong?
what happen when you refresh page, it assign $l_NextPage = 1 every time, thats why all the time hoi printed
you can use sessions for preserving value of variable after page refresh
try this code
// write this line of code at top of php block
session_start();
if (isset($_POST["register"]))
{
if (!isset($_SESSION["l_NextPage"]))
{
$_SESSION["l_NextPage"] = 1;
echo "helaas" . "</br>";
}
if($_SESSION["l_NextPage"] == 1)
{
echo "hoi";
$_SESSION["l_NextPage"] = 2;
}
else if($_SESSION["l_NextPage"] == 2)
{
echo "doei";
//unset( $_SESSION['l_NextPage'] ); unset varibale
}
}
after reaching at prefixed condition you can unset varible using
unset( $_SESSION['l_NextPage'] );
i have not tested code but this should work
you should try:
if(!isset($l_NextPage)) {
$l_NextPage = 1;
echo "helaas" . "</br>";
}
elseif($l_NextPage == 1) {
(...)
try like this,
if(!empty(trim($l_NextPage)))

if else simple beginner issue

Good day guys,
I've made a sweet favorites function with php mysql and ajax, and its working great. Now I want to show 'favorite' when favorite = 0 and show 'unfavorite' when favorite = 1
if ($favorites == 0) {
$favorite = 'Favorite';
}
if ($favorites == 1) {
$unfavorite = 'unFavorite';
}
and echo it in the row as :
<div id="favorites">' .($favorite). ' ' .($unfavorite). '</div>
The problem is: when favorite = 0, both $favorite and $unfavorite are being shown. When favorite = 1 only $unfavorite is being shown correctly. Of course it should be $favorite OR $unfavorite. I assume the problem is clear and simple to you, please assist :)
Thanks in advance
It's easier to use just one variable:
$text = ''
if ($favorites == 0) {
$text = 'Favorite';
} else {
$text = 'unFavorite';
}
...
echo $text;
If you want to check $favorite, you are using the wrong variable in your control statement. Also, it is better coding practice to use elseif rather than if for that second if. One more thing: it's easier to manage one resulting variable.
$output = "";
if ($favorite == 0) {
$output = 'Favorite';
}
elseif ($favorite == 1) {
$output = 'unFavorite';
}
...
echo $output; // Or whatever you want to do with your output
Is $favorites an integer?
Anyway try using three equal signs (===) or else instead of the second if:
if ( $favorites === 0 )
{
// ...
}
else // or if ($favorites === 1)
{
// ...
}
You're making a toggle, so you only need one variable:
if(empty($favourites)){
$fav_toggle = 'Favorite';
} else {
$fav_toggle = 'unFavorite';
}
echo $fav_toggle;
Same code is working on me if I assigned $favorites = 0; or $favorites = 1;
You can also use if else
$favorites = 1;
if ($favorites == 0) {
$favorite = 'Favorite';
}
else if ($favorites == 1) {
$unfavorite = 'unFavorite';
}

Categories