Jump to content

Recommended Posts

Hi. I am completely stumped on how I should do this.

 

I have a function like so:

 

<?php

function update_a($table, $qidH, $qidT, $ansidH, $ansidT, $atextH, $atextT, $apointH, $apointT){
include('condb.php');
$data = mysql_query("SELECT * FROM $table WHERE($qidH = '1')") or die(mysql_error());
$fetch = mysql_fetch_array($data);
if($fetch > 0){mysql_query("UPDATE $table SET $atextH = '$atextT', $apointH = '$apointT'") or die("unable to update table");}

}

$dbfun->update_a($atable, "qid", $qid2, "ansid", $ansid3, "answer", $atext, "points", $apoints);

?>

 

the data comes from dynamically generated forms on the same page(is this an issue?):

 

<?php
<form action="?a=edit&qid=1" method="post" name="form1">

<div class="survey-q"><a class="skiplink" name="1" id="1"></a>
<span class="num">1. </span>question 1 </div>





<div class="survey-a-wrap">
<div class="delbut"><!--<input type="image" src="template/images/del.jpg" name="del_ans"/>-->
<a href="?a=dela&id=q1-1#1"></a></div>
<input type="text" name="anstext_q1-1" value="trter" style="width:360px;"/>
<select name="points_q1-1">
<option selected value='2'>2</option>
<option value='0'>0</option><option value='1'>1</option><option value='2'>2</option><option value='3'>3</option><option value='4'>4</option><option value='5'>5</option><option value='6'>6</option><option value='7'>7</option><option value='8'>8</option><option value='9'>9</option><option value='10'>10</option></select>

</div>



<div class="survey-a-wrap">
<div class="delbut"><!--<input type="image" src="template/images/del.jpg" name="del_ans"/>-->
<a href="?a=dela&id=q1-2#1"></a></div>
<input type="text" name="anstext_q1-2" value="trter" style="width:360px;"/>
<select name="points_q1-2">
<option selected value='2'>2</option>
<option value='0'>0</option><option value='1'>1</option><option value='2'>2</option><option value='3'>3</option><option value='4'>4</option><option value='5'>5</option><option value='6'>6</option><option value='7'>7</option><option value='8'>8</option><option value='9'>9</option><option value='10'>10</option></select>

</div>



<div class="survey-a-wrap">
<div class="delbut"><!--<input type="image" src="template/images/del.jpg" name="del_ans"/>-->
<a href="?a=dela&id=q1-3#1"></a></div>
<input type="text" name="anstext_q1-3" value="trter" style="width:360px;"/>
<select name="points_q1-3">
<option selected value='2'>2</option>
<option value='0'>0</option><option value='1'>1</option><option value='2'>2</option><option value='3'>3</option><option value='4'>4</option><option value='5'>5</option><option value='6'>6</option><option value='7'>7</option><option value='8'>8</option><option value='9'>9</option><option value='10'>10</option></select>

</div>


<input type="hidden" name="qid" value="1"/>
<div class="plus"><a href="?a=adda&id=q1-3#1">+</a></div>
<div class="savequestion"><input type="submit" name="SUBQUESTION1" value="Save Question 1"/></div>
</form>

<form action="?a=edit&qid=2" method="post" name="form2">

<div class="survey-q"><a class="skiplink" name="2" id="2"></a>
<span class="num">2. </span>question 2 </div>





<div class="survey-a-wrap">
<div class="delbut"><!--<input type="image" src="template/images/del.jpg" name="del_ans"/>-->
<a href="?a=dela&id=q2-1#2"></a></div>
<input type="text" name="anstext_q2-1" value="trter" style="width:360px;"/>
<select name="points_q2-1">
<option selected value='2'>2</option>
<option value='0'>0</option><option value='1'>1</option><option value='2'>2</option><option value='3'>3</option><option value='4'>4</option><option value='5'>5</option><option value='6'>6</option><option value='7'>7</option><option value='8'>8</option><option value='9'>9</option><option value='10'>10</option></select>

</div>



<div class="survey-a-wrap">
<div class="delbut"><!--<input type="image" src="template/images/del.jpg" name="del_ans"/>-->
<a href="?a=dela&id=q2-2#2"></a></div>
<input type="text" name="anstext_q2-2" value="trter" style="width:360px;"/>
<select name="points_q2-2">
<option selected value='2'>2</option>
<option value='0'>0</option><option value='1'>1</option><option value='2'>2</option><option value='3'>3</option><option value='4'>4</option><option value='5'>5</option><option value='6'>6</option><option value='7'>7</option><option value='8'>8</option><option value='9'>9</option><option value='10'>10</option></select>

</div>



<div class="survey-a-wrap">
<div class="delbut"><!--<input type="image" src="template/images/del.jpg" name="del_ans"/>-->
<a href="?a=dela&id=q2-3#2"></a></div>
<input type="text" name="anstext_q2-3" value="trter" style="width:360px;"/>
<select name="points_q2-3">
<option selected value='2'>2</option>
<option value='0'>0</option><option value='1'>1</option><option value='2'>2</option><option value='3'>3</option><option value='4'>4</option><option value='5'>5</option><option value='6'>6</option><option value='7'>7</option><option value='8'>8</option><option value='9'>9</option><option value='10'>10</option></select>

</div>


<input type="hidden" name="qid" value="2"/>
<div class="plus"><a href="?a=adda&id=q2-3#2">+</a></div>
<div class="savequestion"><input type="submit" name="SUBQUESTION2" value="Save Question 2"/></div>
</form>
?>

 

Here is the while loop that submits the data(messy, I know):

 

<?php
$qid2 = $_POST['qid'];
$ansid3=1;
$entries=0;
$loop3=0;
while($loop3 <=10){
if(!empty($_POST["anstext_q".$qid2."-".$loop3])){$entries++;}$loop3++;}
echo $entries;
while($ansid3 <= $entries){
$atextpost = "anstext_q".$qid2."-".$ansid3;
$apointspost = "points_q".$qid2."-".$ansid3;

$atext = $_POST["$atextpost"];
$apoints = $_POST["$apointspost"];
echo $atext;
$dbfun->condb();
$dbfun->update_a($atable, "qid", $qid2, "ansid", $ansid3, "answer", $atext, "points", $apoints);
echo $qid2;


#echo $atext.",".$apoints;

$ansid3++;}?>

 

Problems:

 

-I can only update with data in field 3(q1/q2-3) - it ignores the rest.

-when I update field3 it updates every field

-when I update 1 question, it updates every other

 

Is this because of having two forms on the same page? I don't remember ever having this issue before. If so, what would be a better way to do this...

 

namely - a save button for each question, when saved, checks if answers exist, if they do, updates them, if answer doesn't exist, create it.

 

I understand the above code is messy, it's not best practice to employ the methods I have but at the moment I am just troubleshooting this issue.

 

Any help is greatly appreciated and I will actually pay somebody to sort this out for me - though I'm certainly not here for that - I created this from scratch and will take it to the end. Thanks.

when you update a database you need to use a where clause mate.

 

that's in the first snippet:

 

<?php
mysql_query("SELECT * FROM $table WHERE($qidH = '1')") or die(mysql_error());

---> it was

$data = mysql_query("SELECT * FROM $table WHERE $qidH = '$qidT' AND $ansidH = '$ansidT'") or die(mysql_error());

# DOESN'T WORK EITHER

?>

 

This is what I don't understand. I am clearly saying that question id(qid) should be 1, so why is it even updating question 2. I have a feeling it is the forms, in that it is submitting both forms, one after the other.

 

Thanks for looking any way.

A SELECT statement is not a UPDATE, he was referring to this:

 

mysql_query("UPDATE $table SET $atextH = '$atextT', $apointH = '$apointT'") or die("unable to update table");

 

That will update all the rows since you don't specify one.

I'm an idiot. I didn't even think of that, I figured because I had selected it, it would amend that particular row. Forgot how specific I have to be.

 

Just tested it and, obviously, is now working fine. I hope you understand, just sometimes I stare at it so long it loses all meaning. Was hoping I'd got to grips with this basic stuff.

 

Thank you very much!

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.