Reputation: 21
My code keeps displaying the error undefined variable: code
but it adds to my database. The problem I think is in the first loop $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;
}
Upvotes: 0
Views: 736
Reputation: 69
<?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;
}
Upvotes: 0
Reputation: 26451
Always have practice to intialize your varaibles before using them, So as I mention in comment above you need to initialize $code
variable before using it like $code .= $tmp
somewhere around,
$code = '';
$length = 15;
for ($i = 0; $i <= $length; $i++)
{
$rand = rand() % strlen($charset);
$tmp = substr($charset, $rand, 1);
$code .= $tmp;
}
Upvotes: 2