Posten in database deels met formulier
echo "<pre>";
print_r($_REQUEST);
echo "</pre>";
zet
dan kan je zien of je data aankomt
stapje voor je stapje doen dan maar
Gewijzigd op 18/05/2012 12:48:01 door Fons Seesink
sorry was te snel met posten, was nog een oude ctrl-v :-)
Nog steeds de HTTP 500 error
waar heb je dit script staan? (complete url graag).
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$conn = mysql_connect("xxx","xxx","xxx");
$db = mysql_select_db("xxx",$conn);
$sql="INSERT INTO portfolio (symbol)
VALUES
('$_POST[symbol]')";
if (!mysql_query($sql,$conn))
{
die('Error: ' . mysql_error());
}
echo "1 record added";
mysql_close($conn);
?>
$conn = mysql_connect("xxx","xxx","xxx");
$db = mysql_select_db("xxx",$conn);
$sql="INSERT INTO portfolio (symbol)
VALUES
('$_POST[symbol]')";
if (!mysql_query($sql,$conn))
{
die('Error: ' . mysql_error());
}
echo "1 record added";
mysql_close($conn);
?>
zie ik in je form
Symbol: <input type="text" name="$symbol"> staan.
die $ moet weg bij de naam.
na het posten krijg ik een blanco pagina terug, geen 500 error.
Als ik naar http://www.tradersondemand.com/portfolio/ ga krijg ik deze error: Error accessing the database
Wellicht dat er ergens iets niet goed gaat met je DB?
Gewijzigd op 18/05/2012 13:03:29 door Chris PHP
@ Chris; ik zal hier eens naar kijken, maar voordat ik de code aan heb gepast naar opmerkingen van Fons en Jens deed het script gewoon zijn werk. Als ik AAPL invoerde in het formulier (sell.php) dan werd er een regel aangemaakt in de database met AAPL.
Zoals ik hierboven voorstelde zet
echo "<pre>";
print_r($_REQUEST);
echo "</pre>";
boven aan in de ontvangende pagina.
als daar je data goed zichtbaar is, kan je naar de volgende stap gaan met debuggen.
Het probleem met de error zat hem in de slashes en aanhalingstekens in onderstaande code. Na deze verwijderd te hebben was de error verdwenen.
Het symbol werd nu toegevoegd in de database, maar nog niet de aandelenprijs.
Door de volgende aanvulling te maken wordt nu ook de koers op moment van toevoegen in de database gepost.
Eindresultaat code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
echo "<pre>";
print_r($_REQUEST);
echo "</pre>";
if(isset($_POST['symbol'])){
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, 'http://download.finance.yahoo.com/d/quotes.csv?s='.$_POST['symbol'].'&f=sl1d1t1c1ohgv&e=.csv' );
curl_setopt( $ch, CURLOPT_HEADER, false );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
$output = curl_exec( $ch );
curl_close( $ch );
$contents = explode( ',', str_replace( '"', '', $output ) );
echo "<p>Stock: <b>\$$contents[1]</b> </p>";
$conn = mysql_connect("xxx","xxx","xxx");
$db = mysql_select_db("xxx",$conn);
$sql="INSERT INTO portfolio (symbol, buy)
VALUES
('$_POST[symbol]','$contents[1]')";
if (!mysql_query($sql,$conn))
{
die('Error: ' . mysql_error());
}
echo "1 record added";
mysql_close($conn);
} else {
echo '
<form action="portfolio/insert_buy.php" method="post">
Symbol: <input type="text" name="symbol"><br />
<input type="submit" value=" Submit">
</form>';
}
?>
echo "<pre>";
print_r($_REQUEST);
echo "</pre>";
if(isset($_POST['symbol'])){
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, 'http://download.finance.yahoo.com/d/quotes.csv?s='.$_POST['symbol'].'&f=sl1d1t1c1ohgv&e=.csv' );
curl_setopt( $ch, CURLOPT_HEADER, false );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
$output = curl_exec( $ch );
curl_close( $ch );
$contents = explode( ',', str_replace( '"', '', $output ) );
echo "<p>Stock: <b>\$$contents[1]</b> </p>";
$conn = mysql_connect("xxx","xxx","xxx");
$db = mysql_select_db("xxx",$conn);
$sql="INSERT INTO portfolio (symbol, buy)
VALUES
('$_POST[symbol]','$contents[1]')";
if (!mysql_query($sql,$conn))
{
die('Error: ' . mysql_error());
}
echo "1 record added";
mysql_close($conn);
} else {
echo '
<form action="portfolio/insert_buy.php" method="post">
Symbol: <input type="text" name="symbol"><br />
<input type="submit" value=" Submit">
</form>';
}
?>
Bedankt voor jullie hulp! Waarschijnlijk loop ik weer vast als ik de code uit de database wil halen, maar dat zien jullie tegen die tijd wel :)
Gewijzigd op 18/05/2012 15:20:04 door Mitch bla
als je de post doet in de database van de code en de NAV van het aandeel, zet er gelijk een date - time stamp in.
Controleer je code op sql injection gevaren om alle risico's uit te sluiten.