2015-02-06 5 views
-1

Я работаю над установочным кодом для настройки вашей учетной записи. У меня есть оператор IF, если total_not < = 40 он ничего не должен делать, потому что вы достигли максимальных уведомлений. Но это не работает, как я могу это исправить?Если оператор не работает, если максимум достигнут

Код:

<?php 

     // Set the database access information (add your own database credentials below) 
     xxxxx 

     // Connect to the database 
     $dbc = @mysqli_connect ($db_host, $db_user, $db_password, $db_name) OR die ('Could not connect to MySQL: ' . mysqli_connect_error()); 

     // Check for shout removal 


     // Check for shout submission 
     if(isset($_POST['submit'])) 
     { 
      // Empty error array 
      $error = array(); 

      // Check for a shout 
      if(empty($_POST['email'])) 
      { 
       $error[] = "Oeps! Er is iets fout gegaan!"; 
      } 

      // If there are no errors, insert shout into the database. 
      // Otherwise, display errors. 
      if(sizeof($error) == 0) 
      { 
       // Clean data 
       $mijn_les = $_POST['mijn_les']; 
       $email = mysqli_real_escape_string($dbc, $_POST['email']); 


       // Insert shout 
       $query = "UPDATE users SET user_email = '$email', user_tid = '$mijn_les' WHERE user_name = '{$_SESSION['user_name']}'"; 
       $result = @mysqli_query($dbc, $query) or die('Query failed: ' . mysqli_error($dbc)); 

       // Display confirmation 

      echo "<div class='alert alert-success'> 

      <strong>Gelukt!</strong> Je account is ingesteld! <a href='../signin.php?logout' class='alert-link'>Klik hier</a> om opnieuw in te loggen! 
      </div>"; 

      $hide = "style='display: none;'"; 

    $num_rows = $result->num_rows; 
    if($num_rows <= 40) 
    { 
     $send_not = "INSERT INTO notif (send_to, grav_url, send_by, notif_text) VALUES ('{$_SESSION['user_name']}', 'http://www.gravatar.com/avatar/a72776fb2702ba915e2327618414bb15', 'Admin', 'Leraar Setup compleet! U kunt nu onze website gebruiken!')"; 
       $not_add = @mysqli_query($dbc, $send_not) or die('Query failed: ' . mysqli_error($dbc));  
    } 
      } else { 

       // Display error message 
       foreach($error as $value) 
       { 
       echo "<div class='alert alert-danger'> 

      <strong>Oeps!</strong> Er is iets mis gegaan! Probeer het opnieuw! 
      </div>"; 
       } 

      } 
     } 



    ?> 
+0

'num_rows': получает количество строк в наборе результатов, что означает результат обновления, который никогда не будет'> = 40' и эта вставка запрос будет выполняться каждый раз «INSERT INTO notif». Чтобы исправить это, вы должны добавить 'select count (id_notif) из notif where ...', а затем вы можете использовать значение 'num_rows' –

+0

' num_rows' получает количество строк из 'select', вы' update 'ING. Попробуйте 'affected_rows'. Но похоже, что это будет только «1». – AbraCadaver

+0

@ Симо сделать это благодаря мужчине! –

ответ

0

Изменить код:

if($num_rows <= 40) {...} 

По

if (mysqli_affected_rows($dbc) <= 40) {...} 
0

num_rows: получает количество строк в наборе результатов, что означает результат обновления никогда не будет >= 40 и insert запрос будет выполняться каждый раз.

Таким образом, вы должны использовать SELECT COUNT(id_notif) as total_notif FROM notif where user_email = '$email' и total_notif вместо $num_rows

Смежные вопросы