0

В моем коде продолжает отображаться ошибка undefined variable: code, но она добавляется в мою базу данных. Проблема я думаю, что в первом цикле $code .= $tmp;Ошибка «Неопределенная переменная»

<?php 
include '../library/config.php'; 

$action = isset($_GET['action']) ? $_GET['action'] : ''; 

switch ($action) { 
    case 'create' : newTitle(); 
    break; 
    case 'delete': deleteRecord(); 
    break; 
    case 'archive': archiveRecord(); 
    break; 

    default : header("Location: ../index.php"); 
} 

function archiveRecord(){ 
    $title = $_POST['title']; 
    $desc = $_POST['desc']; 
    $adviser = $_POST['adviser']; 
    $group = $_POST['group']; 
    $category = $_POST['category']; 
    $name = $_FILES['myfile']['name']; 
    $type = $_FILES['myfile']['type']; 
    $size = $_FILES['myfile']['size']; 
    $tmpname = $_FILES['myfile']['tmp_name']; 
    $ext = substr($name,strrpos($name, '.')); 

    if ($name) 
    { 
     if($title && $desc) 
     { 

      $charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz123456789"; 
      $length = 15; 
      for ($i = 0; $i <= $length; $i++) 
      { 
       $rand = rand() % strlen($charset); 
       $tmp = substr($charset, $rand, 1); 
       $code .= $tmp; 
      } 

      $query = mysql_query("SELECT code FROM archive WHERE code = '$code'"); 
//this is the cause of my error it adds to my database but it keeps saying Notice: Undefined variable: code 

      $numrows = mysql_num_rows($query); 
      while($numrows != 0) 
      { 
       for ($i = 0; $i <= $length; $i++) 
      { 
       $rand = rand() % strlen($charset); 
       $tmp = substr($charset, $rand, 1); 
       $code .= $tmp; 
      } 

      $query = mysql_query("SELECT code FROM archive WHERE code = '$code'"); 
      $numrows = mysql_num_rows($query); 
      } 

       mkdir("../file/$code"); 
       move_uploaded_file($tmpname, "../file/$code/"."$name"); 

       $file = "$name"; 
       $query = mysql_query("INSERT INTO archive VALUES ('', '$title','$desc','$adviser','$group','$category','$code','$name',NOW(),NOW(),NOW(),NOW())"); 

       $_SESSION['message']['type'] = "success"; 
       $_SESSION['message']['content'] = "Your file has been uploaded"; 

      header("Location: ../index.php?page=archive"); 
      exit; 
      //echo "Your file has been uploaded.<br><br><a href='download.php?code=$code'>Download</a>"; 

     }else 
      $_SESSION['message']['type'] = "danger"; 
      $_SESSION['message']['content'] = "You did not fill in the form"; 

      header("Location: ../index.php?page=archive"); 
    exit; 


      //echo "You did not fill in the form. $form"; 
    } 
    else 
     $_SESSION['message']['type'] = "danger"; 
     $_SESSION['message']['content'] = "You did not put any file"; 

    header("Location: ../index.php?page=archive"); 
    exit; 
} 
+1

Вам необходимо инициализировать 'переменную $ code' перед использованием его как' $ кода. = $ tmp'. – Rikesh

+0

@rikesh но как? – user3153327

ответ

2

Всегда практика инициализировать свои varaibles, прежде чем использовать их, так как я уже в комментариях выше вам необходимо инициализировать $code переменные перед использованием его как $code .= $tmp где-то вокруг,

$code = ''; 
$length = 15; 
for ($i = 0; $i <= $length; $i++) 
{ 
    $rand = rand() % strlen($charset); 
    $tmp = substr($charset, $rand, 1); 
    $code .= $tmp; 
} 
+0

большое вам спасибо. Я забыл, как инициализировать переменные. еще раз спасибо вам большое. и счастливый новый год :) – user3153327

+0

Рад помочь вам. И тебя с Новым Годом. Просьба [принять] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) ответ, если ваша проблема решена этим. – Rikesh

0
<?php 
include '../library/config.php'; 

$action = isset($_GET['action']) ? $_GET['action'] : ''; 

switch ($action) { 
    case 'create' : newTitle(); 
     break; 
    case 'delete': deleteRecord(); 
     break; 
    case 'archive': archiveRecord(); 
     break; 

    default : header("Location: ../index.php"); 
} 

function archiveRecord(){ 
    $title = $_POST['title']; 
    $desc = $_POST['desc']; 
    $adviser = $_POST['adviser']; 
    $group = $_POST['group']; 
    $category = $_POST['category']; 
    $name = $_FILES['myfile']['name']; 
    $type = $_FILES['myfile']['type']; 
    $size = $_FILES['myfile']['size']; 
    $tmpname = $_FILES['myfile']['tmp_name']; 
    $ext = substr($name,strrpos($name, '.')); 

    if ($name) 
    { 
     if($title && $desc) 
     { 

      $charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz123456789"; 
      $length = 15; 
      $code=''; 
      for ($i = 0; $i <= $length; $i++) 
      { 
       $rand = rand() % strlen($charset); 
       $tmp = substr($charset, $rand, 1); 
       $code .= $tmp; 
      } 

      $query = mysql_query("SELECT code FROM archive WHERE code = '$code'"); 
//this is the cause of my error it adds to my database but it keeps saying Notice: Undefined variable: code 

      $numrows = mysql_num_rows($query); 
      while($numrows != 0) 
      { 
       for ($i = 0; $i <= $length; $i++) 
       { 
        $rand = rand() % strlen($charset); 
        $tmp = substr($charset, $rand, 1); 
        $code .= $tmp; 
       } 

       $query = mysql_query("SELECT code FROM archive WHERE code = '$code'"); 
       $numrows = mysql_num_rows($query); 
      } 

      mkdir("../file/$code"); 
      move_uploaded_file($tmpname, "../file/$code/"."$name"); 

      $file = "$name"; 
      $query = mysql_query("INSERT INTO archive VALUES ('', '$title','$desc','$adviser','$group','$category','$code','$name',NOW(),NOW(),NOW(),NOW())"); 

      $_SESSION['message']['type'] = "success"; 
      $_SESSION['message']['content'] = "Your file has been uploaded"; 

      header("Location: ../index.php?page=archive"); 
      exit; 
      //echo "Your file has been uploaded.<br><br><a href='download.php?code=$code'>Download</a>"; 

     }else 
      $_SESSION['message']['type'] = "danger"; 
     $_SESSION['message']['content'] = "You did not fill in the form"; 

     header("Location: ../index.php?page=archive"); 
     exit; 


     //echo "You did not fill in the form. $form"; 
    } 
    else 
     $_SESSION['message']['type'] = "danger"; 
    $_SESSION['message']['content'] = "You did not put any file"; 

    header("Location: ../index.php?page=archive"); 
    exit; 
} 
Смежные вопросы