Array problems...Data not being correctly POSTed to database

Hello…

I am new here and came specifically because I have this problem with an old script I am modifying. The script is for a DVD movie database and I have 3 sets of Multiple select boxes. One set for choosing Genre(s), the 2nd for choosing Audio language(s) and a 3rd for choosing Subtitle language(s).

The genre part works as it was part of the original code. I added the Audio and Subtitles code (basically just copied the genre stuff, replacing the variable names and adding fields to the database). The problem is the Audio and Subtitles array seem to be empty even though items were selected and saved, as the default “-1” value is entered in the database everytime. I got this far on my own but I’m still pretty much a noob at coding php. Any help would be appreciated!

Here’s the code I’m working with:
[php]<?
require(“inc/menu.php”);
require(“inc/controls.php”);
require(“inc/html.php”);
require(“inc/common.php”);

$config=getconfig();

$output="";
$cells="";
$rows="";
$imdb="";
$movextras="";

if (isset($_GET[“movieid”])) {
// This is an update. Need to retrieve data.
$movieid=intval($_GET[“movieid”]);
$result=doquery("select id, userid, title, reldate, comments, rating, genreid, region, runtime, mediaid, director, audioid, subtitleid, format, standard, extra from movie where id = ".$movieid);
$row=mysql_fetch_assoc($result);

if (($row["userid"]!=intval($_COOKIE["userid"])) && !($admin && $config["allowadminedit"]==1)) {
    // Can only edit your own records
    header("Location: index.php");
    die();
} else {
    $movietitle=htmlspecialchars($row["title"]);
    $date=$row["reldate"];
    $curgenre=doquery("select id, name from genre where id in (".$row["genreid"].")");
    while ($grow=mysql_fetch_row($curgenre)) {
        $unsortgenre[$grow[0]]=$grow[1];
    }
    foreach (explode(",",$row["genreid"]) as $val) {
        $genre[]=array($val, $unsortgenre[$val]);
    }
    $avgenres=restoarray(doquery("select id, name from genre where id not in (".$row["genreid"].") order by name"));

    $curaudio=doquery("select id, name from audio where id in (".$row["audioid"].")");
    while ($grow=mysql_fetch_row($curaudio)) {
        $unsortaudio[$grow[0]]=$grow[1];
    }
    foreach (explode(",",$row["audioid"]) as $val) {
        $audio[]=array($val, $unsortaudio[$val]);
    }
    $avaudios=restoarray(doquery("select id, name from audio where id not in (".$row["audioid"].") order by name"));

    $cursubtitle=doquery("select id, name from subtitles where id in (".$row["subtitleid"].")");
    while ($grow=mysql_fetch_row($cursubtitle)) {
        $unsortsubtitle[$grow[0]]=$grow[1];
    }
    foreach (explode(",",$row["subtitleid"]) as $val) {
        $subtitle[]=array($val, $unsortsubtitle[$val]);
    }
    $avsubtitles=restoarray(doquery("select id, name from subtitles where id not in (".$row["subtitleid"].") order by name"));

    $comments=htmlspecialchars($row["comments"]);
    $region=$row["region"];
    $rating=$row["rating"];
    $runtime=$row["runtime"];
    $media=$row["mediaid"];
    $director=htmlspecialchars($row["director"]);
    $format=$row["format"];
    $standard=$row["standard"];
    $extra=htmlspecialchars($row["extra"]);
}

} else {
$movieid=0;
$movietitle="";
$date=date(“Y”);
$genre=array();
$audio=array();
$subtitle=array();
$avgenres=restoarray(doquery(“select id, name from genre order by name”));
$avaudios=restoarray(doquery(“select id, name from audio order by name”));
$avsubtitles=restoarray(doquery(“select id, name from subtitles order by name”));
$comments="";
$media=$config[“defmedia”];
$region=$config[“defregion”];
$rating=0;
$runtime=0;
$director="";
$sound="";
$extra="";
}

if (isset($_POST[“movieid”])) {
if (saneempty($_POST[“movietitle”])) {
$error=“You must enter a title.\n”;
} else {
// Ugly hack. DVD type must be 1 for this to work.
$region=$_POST[“region”];
if ($_POST[“media”]!=1) $region=“NULL”;
if ($_POST[“genres”]=="") $genres="-1"; else $genres=$_POST[“genres”];
if ($_POST[“audios”]=="") $audios="-1"; else $audios=$_POST[“audios”];
if ($_POST[“subtitles”]=="") $subtitles="-1"; else $subtitles=$_POST[“subtitles”];
if ($_POST[“movieid”]==0) {
$query=“insert movie values (NULL, “.intval($_COOKIE[“userid”]).”, “”.greatescape($_POST[“movietitle”]).”", “”.intval($_POST[“year”])."", “”.greatescape($_POST[“comments”])."", “.intval($_POST[“rating”]).”, “”.greatescape($genres)."", “.intval($region).”, now(), “.intval($_POST[“runtime”]).”, “.intval($_POST[“media”]).”, “”.greatescape($_POST[“director”])."", “”.greatescape($audios)."", “”.greatescape($subtitles)."", “”.greatescape($_POST[“format”])."", “”.greatescape($_POST[“standard”])."", “”.greatescape($_POST[“extra”])."")";
doquery($query);
$id=mysql_insert_id();
$muserid=intval($_COOKIE[“userid”]);
} else {
// This is an update.
// Check user matches or admin
$muserid=mysql_result(doquery(“select userid from movie where id = “.intval($_POST[“movieid”])),0);
if ($muserid!=$_COOKIE[“userid”] && !($admin && $config[“allowadminedit”]==1)) {
// Can only edit your own records
header(“Location: index.php”);
die();
} else {
$query=“update movie set title=””.greatescape($_POST[“movietitle”]).”", reldate="".intval($_POST[“year”])."", comments="".greatescape($_POST[“comments”])."", rating=".intval($_POST[“rating”]).", genreid="".greatescape($genres)."", region=".intval($region).", runtime=".intval($_POST[“runtime”]).", mediaid=".intval($_POST[“media”]).", director="".greatescape($_POST[“director”])."", audioid="".greatescape($audios)."", subtitleid="".greatescape($subtitles)."", format="".greatescape($_POST[“format”])."", standard="".greatescape($_POST[“standard”])."", extra="".greatescape($_POST[“extra”])."" where id = ".intval($_POST[“movieid”]);
doquery($query);
$id=intval($_POST[“movieid”]);
}
}

    // Find position of this entry.
    $query="select id from movie where userid = ".$muserid." order by title";
    $result=doquery($query);

    $i=0;

    while ($row=mysql_fetch_row($result)) {
        $data[$row[0]]=$i;
        $i++;
    }

    $page=floor($data[$id]/$config["numperpage"]);

    header("Location: listmovies.php?userid=".$muserid."&page=".$page);
}

}

$medias=restoarray(doquery(“select id, name from media order by name”));
$formats=restoarray(doquery(“select id, name from format order by name”));
$standards=restoarray(doquery(“select id, name from standard order by name”));

for ($i=0;$i<=6;$i++) {
$c=FALSE;
if ($i==$region) $c=TRUE;
$regions.=input_radio(“region”,$i,$c)." ".$i;
}

$content[“head”]="<SCRIPT TYPE=“text/javascript” SRC=“js/genre.js”>\n";

if ($movieid==0) {
$content[“head”].="<SCRIPT TYPE=“text/javascript” SRC=“js/imdb.js”>\n";
$imdb=" ".input_button(“imdbbut”, “Search IMDb”, “plain”, “onClick=“javascript:imdbsearch(this.form.movietitle.value);””);
}
$output.=$error;

$numlines=“6”;

$right=“Available:
”.input_multiselect(“avgenre”,“avgenre”,array(),$avgenres,$numlines,“genre”);
$mid=input_button(“add”, “<-- Add”, “button”, “onClick=“javascript:move(this.form.avgenre, this.form.genre,0);””);
$mid.=input_button(“remove”, “Remove -->”, “button”, “onClick=“javascript:move(this.form.genre, this.form.avgenre,1);””);
$left=“Selected:
”.input_multiselect(“genre”,“genre”,array(),$genre,$numlines,“genre”);

$genreedit=table(tr(td($left).td($mid,“140”,"",“CENTER”,“MIDDLE”).td($right)),0,0,0);

$right=“Available:
”.input_multiselect(“avaudio”,“avaudio”,array(),$avaudios,$numlines,“audio”);
$mid=input_button(“add”, “<-- Add”, “button”, “onClick=“javascript:move(this.form.avaudio, this.form.audio,0);””);
$mid.=input_button(“remove”, “Remove -->”, “button”, “onClick=“javascript:move(this.form.audio, this.form.avaudio,1);””);
$left=“Selected:
”.input_multiselect(“audio”,“audio”,array(),$audio,$numlines,“audio”);

$audioedit=table(tr(td($left).td($mid,“140”,"",“CENTER”,“MIDDLE”).td($right)),0,0,0);

$right=“Available:
”.input_multiselect(“avsubtitle”,“avsubtitle”,array(),$avsubtitles,$numlines,“subtitle”);
$mid=input_button(“add”, “<-- Add”, “button”, “onClick=“javascript:move(this.form.avsubtitle, this.form.subtitle,0);””);
$mid.=input_button(“remove”, “Remove -->”, “button”, “onClick=“javascript:move(this.form.subtitle, this.form.avsubtitle,1);””);
$left=“Selected:
”.input_multiselect(“subtitle”,“subtitle”,array(),$subtitle,$numlines,“subtitle”);

$subtitleedit=table(tr(td($left).td($mid,“140”,"",“CENTER”,“MIDDLE”).td($right)),0,0,0);

$output.=form_begin(“editmovie.php”,“POST”);
$output.=input_hidden(“movieid”,$movieid);
$output.=input_hidden(“genres”,"");
$output.=input_hidden(“audios”,"");
$output.=input_hidden(“subtitles”,"");

$rows=tr(td(“Movie Title:”,"","",“RIGHT”).td(input_text(“movietitle”,80,255,$movietitle).$imdb,"","",“LEFT”).td(rating($rating),"","","",“TOP”,"",“11”));
$rows.=tr(td(“Extra Info (Disc Number, Director’s Cut, etc.):”,"","",“RIGHT”).td(input_text(“extra”,80,255,$extra),"","",“LEFT”));
$rows.=tr(td(“Year of Release:”,"","",“RIGHT”).td(datesel(“year”,$date,$config[“lowdate”],date(“Y”)),"","",“LEFT”));

$rows.=tr(td(“Genres:”,"","",“RIGHT”,“TOP”).td($genreedit,"","",“LEFT”));
$rows.=tr(td(“Audio:”,"","",“RIGHT”,“TOP”).td($audioedit,"","",“LEFT”));
$rows.=tr(td(“Subtitles:”,"","",“RIGHT”,“TOP”).td($subtitleedit,"","",“LEFT”));
$rows.=tr(td(“Soundtracks:”,"","",“RIGHT”).td(input_text(“sound”,80,255,$sound),"","",“LEFT”));

$rows.=tr(td(“Media Type:”,"","",“RIGHT”).td(input_select(“media”,$media,$medias),"","",“LEFT”));
$rows.=tr(td(“Region:”,"","",“RIGHT”).td($regions,"","",“LEFT”));
$rows.=tr(td(“Standard:”,"","",“RIGHT”).td(input_select(“standard”,$standard,$standards),"","",“LEFT”));
$rows.=tr(td(“Video Format:”,"","",“RIGHT”).td(input_select(“format”,$format,$formats),"","",“LEFT”));
$rows.=tr(td().td());
$rows.=tr(td(“Director:”,"","",“RIGHT”).td(input_text(“director”,80,255,$director),"","",“LEFT”));
$rows.=tr(td(“Plot/Cast:”,"","",“RIGHT”,“TOP”).td(textarea(“comments”,$comments,6,80),"","",“LEFT”));
$rows.=tr(td(“Length (minutes):”,"","",“RIGHT”).td(input_text(“runtime”,4,4,$runtime),"","",“LEFT”));
$rows.=tr(td(input_button(“save”, “Save movie”,“plain”,“onClick=“javascript:this.form.genres.value = makeStringFromSelect(this.form.genre); this.form.submit();””),"","",“CENTER”,"",“3”));

$output.=table($rows,0,2,2,“100%”);

$output.=form_end();
if ($movieid!=0) {
$output.=form_begin(“delete.php”,“POST”);
$output.=input_hidden(“movieid”,$movieid);
$rows=tr(td(submit(“Delete Movie”),"","",“CENTER”));
$output.=table($rows,0,2,2,“100%”);
$output.=form_end();
}

$content[“body”] =& $output;
dopage($content);

?>
[/php]

Thank you in advance for your help!

Sponsor our Newsletter | Privacy Policy | Terms of Service