trying to combine two forms into a single form

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I have a mediawiki extension that allows me to design a form in the wiki to
facilitate data entry into the wiki and it works good except that I also
want to be able to up load images and take the file location/name and enter
that into the wiki so that the image displays on the page as well.  I found
code online that works well for uploading an image to a site and it works
good in my mediawiki but when I combined the forms on a single page and
click on the upload button it wipes the other textarea fields clean
and doesn't submit the text data but it does upload the image and return the
path and filename.  I know this is supposed to happen but I don't totally
understand why.  If I just click on the save form button the image isn't
upload, but the text data is saved, again I understand something having to
do with two different forms/form handlers but I have been trying to combine
them with no luck.  My line of thinking was to write a function to submit
the second form and call it when the first form is submitted but
this doesn't seem to be working or I am doing it wrong.  The ultimate goal
is to have a form that submits issues into a knowledge base and allows
screenshots of error messages.

Here is the code for the page.

<?php

 //define a maxim size for the uploaded images in Kb
 define ("MAX_SIZE","1024");

//This function reads the extension of the file. It is used to determine if
the file is an image by checking the extension.
 function getExtension($str) {
         $i = strrpos($str,".");
         if (!$i) { return ""; }
         $l = strlen($str) - $i;
         $ext = substr($str,$i+1,$l);
         return $ext;
 }

//This variable is used as a flag. The value is initialized with 0 (meaning
no error  found)
//and it will be changed to 1 if an errro occures.
//If the error occures the file will not be uploaded.
 $errors=0;
//checks if the form has been submitted
// if(isset($_POST['Submit']))
 //{
  //reads the name of the file the user submitted for uploading
  $image=$_FILES['image']['name'];
  //if it is not empty
  if ($image)
  {
  //get the original name of the file from the clients machine
  $filename = stripslashes($_FILES['image']['name']);
  //get the extension of the file in a lower case format
  $extension = getExtension($filename);
  $extension = strtolower($extension);
  //if it is not a known extension, we will suppose it is an error and will
not  upload the file,
//otherwise we will do more tests
 if (($extension != "jpg") && ($extension != "jpeg") && ($extension !=
"png") && ($extension != "gif"))
  {
//print error message
  echo '<h1>Unknown extension!</h1>';
  $errors=1;
  }
  else
  {
//get the size of the image in bytes
 //$_FILES['image']['tmp_name'] is the temporary filename of the file
 //in which the uploaded file was stored on the server
 $size=filesize($_FILES['image']['tmp_name']);

//compare the size with the maxim size we defined and print error if bigger
if ($size > MAX_SIZE*1024)
{
echo '<h1>You have exceeded the size limit!</h1>';
$errors=1;
}

//we will give an unique name, for example the time in unix time format
$image_name=time().'.'.$extension;
//the new name will be containing the full path where will be stored (images
folder)
$newname="images/".$image_name;
//we verify if the image has been uploaded, and print error instead
$copied = copy($_FILES['image']['tmp_name'], $newname);
if (!$copied)
{
echo '<h1>Copy unsuccessfull!</h1>';
$errors=1;
}}}

//If no errors registred, print the success message
 if(isset($_POST['Submit']) && !$errors)
 {
  echo "<h1>File Uploaded Successfully! Try again!</h1>";
echo $newname="images/".$image_name;
 }



function wfSpecialAddactivity() {
    global $wgOut, $wgScriptPath;

$mine = $wgScriptPath.'/index.php?action=submit';
     if (!empty($_GET['id'])) {
      $data = StructuredInput::getStructuredData($_GET['id']);
    } else {
      $data = array();
    }

    $html = <<<TEMPLATE

 <h2>Add Issue</h2>

<script>
    function setAction(formEl) {
      if (formEl['_title'].value) {
        formEl.action += '&title=' + formEl['_title'].value;
        return true;
      } else {
        return false;
      }
    }
</script>

<form name="text" method="post" enctype="multipart/form-data" action="$mine"
onsubmit="return setAction(this)">
    <input type="hidden" name="_type" value="addactivity" />
    <!-- input type="hidden" name="wpPreview" value="Show preview" / -->

<!-- This is the title of the page being created -->
    <label for="_title">Issue Title:</label>
    <input id="_title" name="_title" value="{$data['_title']}" />

    <br /><br />

 <!-- This is the Software Product -->
    <label for="software">Software:</label>
<select id="software" name="software">
<option value="{$data['software']}"></option>
<option value="Server For Windows{$data['software']}">Server For
Windows</option>
<option value="Suite For Windows{$data['software']}">Suite For
Windows</option>
<option value="Job{$data['software']}">Job</option>
</select>

<!-- This is the specific version of the software -->
    <label for="version">Software Version:</label>
    <input id="version" name="version" value="{$data['version']}" />


<!-- This is the specific Operating System the customer using -->
    <label for="os">Customer Operating System:</label>
    <input id="os" name="os" value="{$data['os']}" />


<!-- This is for the specific board the issue relates to -->
    <label for="board">Customer Board Model:</label>
    <input id="board" name="board" value="{$data['board']}" />

    <br /><br />

<!-- This is the detailed description of the issue -->
    <label for="description">Problem Description:</label>
    <textarea rows="10" id="description"
name="description">{$data['description']}</textarea>

    <br /><br />
 <!-- This is the steps needed to solve the problem -->
    <label for="instructions">Problem Solution:</label>
    <textarea rows="10" id="instructions"
name="instructions">{$data['instructions']}</textarea>

    <br /><br />

<!-- This is the person who wrote the article -->
<label for="items">Author:</label>
    <input id="author" name="author" value="{$data['author']}" />

    <br /><br />


<input name="submit" type="submit" value="Save">
 </form>

<form method="post" enctype="multipart/form-data"  action="">
 <table>
  <tr><td><input type="file" name="image"></td></tr>
  <tr><td><input name="Submit" type="submit" value="Upload image"></td></tr>
 </table>

    </form>



TEMPLATE;

    $wgOut->addHTML($html);
}

?>

[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux