Jump to content

Recommended Posts

Hello again,

Having trouble inserting array values into my database table. The array in question - $qid - is created from values of one table. The form is displayed and when the submit button is pressed i would like the array values to be entered into another table. Here is some of what i have, i have cut irrelevant bits out. I think the problem lies with the fact that when the form is submitted my array values are no longer available so they cannot be inserted. Any ideas?

<form name ="systemstest" action="<?php echo $_SERVER['PHP_SELF'];?>"method="post">
<div align="center"><input type="submit" value="check score" name="submitted"></div>
<?php

//Connect to db.
require_once ('../mysql_connect.php');

//Select 10 random questions
$query = "SELECT question_id, question, answer, choice1, choice2, choice3 FROM questions ORDER BY RAND() LIMIT 10";
$result = @mysql_query ($query); //Run query

if(!isset($_POST['submitted'])){ //display the form

$randomiseAnswer=rand(1,5);//used for randomising answer order

if($result) {
echo '<table align="left" cellspacing="10" cellpadding="10">';

$qid=array();
$counter = 0;

while ($row=mysql_fetch_array($result,MYSQL_NUM)){

$id = $row[0];
$qid[$counter] = $id;
$questions = $row[1];
$answer = $row[2];

if($randomiseAnswer==1){
$opt1 = $row[3];
$opt2 = $row[4];
$opt3 = $row[5];
}
elseif{......}(more choices)

//Show questions and random choices
(some html/php code)

$counter++;
}//end while
echo '</form>';//close form


}else{ //else no result
echo'<p>Test failed</p>';
}

}else{//Add question ids to database if submitted is pressed
require_once ('../mysql_connect.php');
$qu = "INSERT INTO test_score(subject_id, q1,q2,q3,q4,q5,q6,q7,q8,q9,q10) VALUES ('1','qid[0]','qid[1]','qid[2]','qid[3]','qid[4]','qid[5]','qid[6]','qid[7]','qid[8]','qid[9]')";
$res = @mysql_query ($qu);//Run the query
}
mysql_close();
?>
Link to comment
https://forums.phpfreaks.com/topic/4978-problems-inserting-into-db-table/
Share on other sites

Your missing the variable delimiter ($) before your array variable:

'[!--coloro:#FF0000--][span style=\"color:#FF0000\"][!--/coloro--]$[!--colorc--][/span][!--/colorc--]qid[0]','[!--coloro:#FF0000--][span style=\"color:#FF0000\"][!--/coloro--]$[!--colorc--][/span][!--/colorc--]qid[1]','[!--coloro:#FF0000--][span style=\"color:#FF0000\"][!--/coloro--]$[!--colorc--][/span][!--/colorc--]qid[2]','[!--coloro:#FF0000--][span style=\"color:#FF0000\"][!--/coloro--]$[!--colorc--][/span][!--/colorc--]qid[3]','[!--coloro:#FF0000--][span style=\"color:#FF0000\"][!--/coloro--]$[!--colorc--][/span][!--/colorc--]qid[4]','[!--coloro:#FF0000--][span style=\"color:#FF0000\"][!--/coloro--]$[!--colorc--][/span][!--/colorc--]qid[5]','[!--coloro:#FF0000--][span style=\"color:#FF0000\"][!--/coloro--]$[!--colorc--][/span][!--/colorc--]qid[6]','[!--coloro:#FF0000--][span style=\"color:#FF0000\"][!--/coloro--]$[!--colorc--][/span][!--/colorc--]qid[7]','[!--coloro:#FF0000--][span style=\"color:#FF0000\"][!--/coloro--]$[!--colorc--][/span][!--/colorc--]qid[8]','[!--coloro:#FF0000--][span style=\"color:#FF0000\"][!--/coloro--]$[!--colorc--][/span][!--/colorc--]qid[9]'
[!--quoteo(post=355090:date=Mar 14 2006, 10:12 PM:name=hitman6003)--][div class=\'quotetop\']QUOTE(hitman6003 @ Mar 14 2006, 10:12 PM) [snapback]355090[/snapback][/div][div class=\'quotemain\'][!--quotec--]
Your missing the variable delimiter ($) before your array variable:

'[!--coloro:#FF0000--][span style=\"color:#FF0000\"][!--/coloro--]$[!--colorc--][/span][!--/colorc--]qid[0]','[!--coloro:#FF0000--][span style=\"color:#FF0000\"][!--/coloro--]$[!--colorc--][/span][!--/colorc--]qid[1]','[!--coloro:#FF0000--][span style=\"color:#FF0000\"][!--/coloro--]$[!--colorc--][/span][!--/colorc--]qid[2]','[!--coloro:#FF0000--][span style=\"color:#FF0000\"][!--/coloro--]$[!--colorc--][/span][!--/colorc--]qid[3]','[!--coloro:#FF0000--][span style=\"color:#FF0000\"][!--/coloro--]$[!--colorc--][/span][!--/colorc--]qid[4]','[!--coloro:#FF0000--][span style=\"color:#FF0000\"][!--/coloro--]$[!--colorc--][/span][!--/colorc--]qid[5]','[!--coloro:#FF0000--][span style=\"color:#FF0000\"][!--/coloro--]$[!--colorc--][/span][!--/colorc--]qid[6]','[!--coloro:#FF0000--][span style=\"color:#FF0000\"][!--/coloro--]$[!--colorc--][/span][!--/colorc--]qid[7]','[!--coloro:#FF0000--][span style=\"color:#FF0000\"][!--/coloro--]$[!--colorc--][/span][!--/colorc--]qid[8]','[!--coloro:#FF0000--][span style=\"color:#FF0000\"][!--/coloro--]$[!--colorc--][/span][!--/colorc--]qid[9]'
[/quote]

You are correct. However, i've now added them and it makes no difference. There are still no values being added to the table.
[!--quoteo(post=355103:date=Mar 14 2006, 10:43 PM:name=hitman6003)--][div class=\'quotetop\']QUOTE(hitman6003 @ Mar 14 2006, 10:43 PM) [snapback]355103[/snapback][/div][div class=\'quotemain\'][!--quotec--]
Why are you supressing errors on your query when it's giving you problems?

change it to:

[code]$res = mysql_query($qu) or die(mysql_error());[/code]
[/quote]

Believe me it wasn't intentional. I'm not very good at this lol. Thanks for your quick replies. The error message i get now is:

Incorrect integer value:"for column 'q1' at row 1

Any ideas?
[!--quoteo--][div class=\'quotetop\']QUOTE[/div][div class=\'quotemain\'][!--quotec--]Incorrect integer value:"for column 'q1' at row 1[/quote]

My guess would be that you are trying to insert an incorrect integer value into the q1 field for your table.

Check the data type of that field...if it's supposed to be an INT, then make sure you are trying to insert an INT, if it's not supposed to be an INT, then change it.

echo out your query if needed to check that it is correct as well.
[!--quoteo(post=355114:date=Mar 14 2006, 11:04 PM:name=hitman6003)--][div class=\'quotetop\']QUOTE(hitman6003 @ Mar 14 2006, 11:04 PM) [snapback]355114[/snapback][/div][div class=\'quotemain\'][!--quotec--]
My guess would be that you are trying to insert an incorrect integer value into the q1 field for your table.

Check the data type of that field...if it's supposed to be an INT, then make sure you are trying to insert an INT, if it's not supposed to be an INT, then change it.

echo out your query if needed to check that it is correct as well.
[/quote]

What i've done to test it is to make the initial form display happen only when the button is pressed. I changed

if(!isset($_POST['submitted'])){ //display the form

to

if(isset($_POST['submitted'])){ //display the form

so that everything happens only when the button is pressed. I also had to remove the last 'else' so that the database query ran when the button was pressed. When i run it like this it works fine so the correct information is being passed to the array and then onto my table. The problems only start to happen when the array info is passed with if(!isset($_POST['submitted'])) and the last 'else' in place. My array information is not being sent when the submit button is pressed. To get round this i even tried making the insert values like the following:

'".$_POST['qid'][0]."' with the 1 changing to a 1 and so on but again i get the

Incorrect integer value:"for column 'q1' at row 1 error message.
Ok here's an update. After reading another topic on here about passing variables after a submit button had been pressed i decided i would try and use a session to help with my problem. At the very top of my page i put in

<?php
session_start();
?>

Then when my while loop had finished and my array had been finalised i put in

$_SESSION['questids']=$_POST['qid']

Now by my reckoning i have created a new array questids and filled it with the values of qid. Is this correct?

Then in my INSERT command held in the 'else' invoked when the button is pressed i have tried various pieces of code e.g.

}else{//Add question ids to database

require_once ('../mysql_connect.php');
$qu = "INSERT INTO test_score(subject_id, q1,q2,q3,q4,q5,q6,q7,q8,q9,q10) VALUES('1','$questids[0]','$questids[1]','$questids[2]','$questids[3]','$questids[4]','$questids[5]','$questids[6]','$questids[7]','$questids[8]','$questids[9]')";
$res = @mysql_query ($qu) or die(mysql_error());//Run the query
}
mysql_close();

I also tried this:

}else{//Add question ids to database

require_once ('../mysql_connect.php');
$qu = "INSERT INTO test_score(subject_id, q1,q2,q3,q4,q5,q6,q7,q8,q9,q10) VALUES('1','".$_SESSION['questids'][0]."','".$_SESSION['questids'][1]."','".$_SESSION['questids'][2]."','".$_SESSION['questids'][3]."','".$_SESSION['questids'][4]."','".$_SESSION['questids'][5]."','".$_SESSION['questids'][6]."','".$_SESSION['questids'][7]."','".$_SESSION['questids'][8]."','".$_SESSION['questids'][9]."')";
$res = @mysql_query ($qu) or die(mysql_error());//Run the query
}
mysql_close();

Both continue to give the error

Incorrect integer value:"for column 'q1' at row 1 error message.

I can't see where i'm going wrong. Can anyone help?

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.