Posten in database deels met formulier
Hoi,
Ik heb een script geschreven waarmee ik via een formulier een aandeel in kan voeren, waarna deze op wordt geslagen in de database. Dit werkt, echter wil ik als het aandeel wordt ingevoerd dat niet alleen het aandeel in de database terecht komt, maar ook de achterliggende aandelenkoers.
De link waar de aandelenkoers vandaan komt betreft (voor bijv. apple): http://quote.yahoo.com/d/quotes.csv?s=AAPL&f=l1&e=.csv
Hoe programmeer ik dit in onderstaande codes?
Daarnaast dient "AAPL" in bovenstaande een variable te zijn, welke zich aanpast als ik bijvoorbeeld "GS" in zou typen.
Formulier:
PHP-script
Ik hoop dat iemand mij hiermee kan helpen.
Ik heb een script geschreven waarmee ik via een formulier een aandeel in kan voeren, waarna deze op wordt geslagen in de database. Dit werkt, echter wil ik als het aandeel wordt ingevoerd dat niet alleen het aandeel in de database terecht komt, maar ook de achterliggende aandelenkoers.
De link waar de aandelenkoers vandaan komt betreft (voor bijv. apple): http://quote.yahoo.com/d/quotes.csv?s=AAPL&f=l1&e=.csv
Hoe programmeer ik dit in onderstaande codes?
Daarnaast dient "AAPL" in bovenstaande een variable te zijn, welke zich aanpast als ik bijvoorbeeld "GS" in zou typen.
Formulier:
Quote:
<html>
<body>
<form action="portfolio/insert_buy.php" method="post">
Symbol: <input type="text" name="symbol"><br />
<input type="submit" value=" Submit">
</form>
</body>
</html>
<body>
<form action="portfolio/insert_buy.php" method="post">
Symbol: <input type="text" name="symbol"><br />
<input type="submit" value=" Submit">
</form>
</body>
</html>
PHP-script
Quote:
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);
?>
Ik hoop dat iemand mij hiermee kan helpen.
Data ophalen kan op een veilige manier via cURL
Hiermee kan je het csv bestand naar je server halen.
uitlezen met de file functie
aangezien de csv maar 1 waarde bevat kan je deze meenemen in de SQL query.
Hoop dat je dit goed op weg helpt
Hiermee kan je het csv bestand naar je server halen.
uitlezen met de file functie
aangezien de csv maar 1 waarde bevat kan je deze meenemen in de SQL query.
Hoop dat je dit goed op weg helpt
Gewijzigd op 16/05/2012 23:17:26 door Fons Seesink
Zou je een voorbeeld kunnen geven hoe ik de csv waarde meeneem in de SQL query?
Ik ben echt een beginneling en snap redelijk hoe bestaande scripts zijn opgebouwd, maar om dit zelf te schrijven is voor mij nog een stap te ver :)
Ik ben echt een beginneling en snap redelijk hoe bestaande scripts zijn opgebouwd, maar om dit zelf te schrijven is voor mij nog een stap te ver :)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, 'http://download.finance.yahoo.com/d/quotes.csv?s=AAPL&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>AAPL stock: <b>\$$contents[1]</b> ( $contents[4] )</p>";
?>
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, 'http://download.finance.yahoo.com/d/quotes.csv?s=AAPL&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>AAPL stock: <b>\$$contents[1]</b> ( $contents[4] )</p>";
?>
Bovenstaande code komt rechtstreeks van google. Via $$contents[1] krijg je de waarde en via $contents[4] krijg je de stijging/daling in procenten.
Ik heb vooraf niet getest met de url die je mee gegeven hebt, deze is niet te gebruiken in een cURL call omdat deze een script aanroept en geen fisiek adres is.
Je zal een andere bron moeten vinden om deze data te farmen, anders moet je aan de slag met HTML downloaden en met DOM je waarde halen uit de website. Niet de meest makkelijke manier.
Ik raad je aan andere, meer directe bronnen te gaan zoeken op internet.
Je zal een andere bron moeten vinden om deze data te farmen, anders moet je aan de slag met HTML downloaden en met DOM je waarde halen uit de website. Niet de meest makkelijke manier.
Ik raad je aan andere, meer directe bronnen te gaan zoeken op internet.
Jens erd op 17/05/2012 20:10:35:
Bovenstaande code komt rechtstreeks van google. Via $$contents[1] krijg je de waarde en via $contents[4] krijg je de stijging/daling in procenten.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, 'http://download.finance.yahoo.com/d/quotes.csv?s=AAPL&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>AAPL stock: <b>\$$contents[1]</b> ( $contents[4] )</p>";
?>
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, 'http://download.finance.yahoo.com/d/quotes.csv?s=AAPL&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>AAPL stock: <b>\$$contents[1]</b> ( $contents[4] )</p>";
?>
Bovenstaande code komt rechtstreeks van google. Via $$contents[1] krijg je de waarde en via $contents[4] krijg je de stijging/daling in procenten.
Dit ziet er goed uit! Alleen hoe krijg ik dit gelinkt met mijn input formulier. Het is de bedoeling dat als iemand aapl in het formulier invult dat het symbol AAPL en de last trading price automatisch in de database worden opgeslagen.
Het de code van Mitch uitgebreid met je form en de SQL post.
Heb niet de SQL nagezien.
Heb niet de SQL nagezien.
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
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
<?php
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>AAPL stock: <b>\$$contents[1]</b> ( $contents[4] )</p>";
$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);
} else {
echo '
<form action="nav.php" method="post">
Symbol: <input type="text" name="symbol"><br />
<input type="submit" value=" Submit">
</form>';
}
?>
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>AAPL stock: <b>\$$contents[1]</b> ( $contents[4] )</p>";
$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);
} else {
echo '
<form action="nav.php" method="post">
Symbol: <input type="text" name="symbol"><br />
<input type="submit" value=" Submit">
</form>';
}
?>
Dank je Fons, zit alleen nog wel ergens een fout in het script als ik hem upload..
op welke regel krijg je de melding?
Als ik het script upload en naar de pagina ga dan krijg ik error HTTP 500 "website can't be displayed". Dus niet direct op een regel.
als je dit krijgt direct nadat je de symbol hebt ingegeven is dat omdat ik in je form op regel 29 mijn bestandnaam van mijn test script heb gezet
even aanpassen naar je eigen bestandnaam
Mijn code: <form action="nav.php" method="post">
jouw code: <form action="portfolio/insert_buy.php" method="post">
even aanpassen naar je eigen bestandnaam
Mijn code: <form action="nav.php" method="post">
jouw code: <form action="portfolio/insert_buy.php" method="post">
Ja, dat had ik al gedaan. Maar nog steeds dezelfde error. Waarschijnlijk zit het in de code van jens?
Dat denk ik niet, heb de code zonder de SQL toevoeging getest en ik krijg een prima resultaat
zet dit eens bovenaan je script
dus net na de
zet dit eens bovenaan je script
dus net na de
Ik krijg nog steeds zelfde error melding..
Fons Seesink op 18/05/2012 11:00:02:
Dat denk ik niet, heb de code zonder de SQL toevoeging getest en ik krijg een prima resultaat
zet dit eens bovenaan je script
dus net na de
zet dit eens bovenaan je script
dus net na de
Gewijzigd op 18/05/2012 11:14:42 door Mitch bla
als cURL lukt dan stopt je functie bij
if(!$line) {
return;
}
if(!$line) {
return;
}
Fons, heb je wellicht nog een idee waar de fout in kan zitten?
Was tussendoor even afwezig, ga kijken waar het fout kan gaan.
een 500 error is niet per definitie een php error.
heb je een directe link naar je pagina zodat ik mee kan gluren?
een 500 error is niet per definitie een php error.
heb je een directe link naar je pagina zodat ik mee kan gluren?
De link naar de php pagina is: www.tradersondemand.com/portfolio/insert_buy.php
De link naar het formulier is: www.tradersondemand.com/sell.php
Script code op dit moment:
De link naar het formulier is: www.tradersondemand.com/sell.php
Script code op dit moment:
Quote:
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
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
<?php
ini_set(���display_errors���,1);
error_reporting(E_ALL|E_STRICT);
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>AAPL stock: <b>\$$contents[1]</b> ( $contents[4] )</p>";
$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);
} else {
echo '
<form action="portfolio/insert_buy.php" method="post">
Symbol: <input type="text" name="symbol"><br />
<input type="submit" value=" Submit">
</form>';
}
?>
ini_set(���display_errors���,1);
error_reporting(E_ALL|E_STRICT);
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>AAPL stock: <b>\$$contents[1]</b> ( $contents[4] )</p>";
$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);
} else {
echo '
<form action="portfolio/insert_buy.php" method="post">
Symbol: <input type="text" name="symbol"><br />
<input type="submit" value=" Submit">
</form>';
}
?>
Mitch bla op 16/05/2012 22:21:40:
Wat is eigenlijk de meerwaarde van die $conn achter je mysql_select_db?
Is dat niet alleen relevant als je 2 verschillende databases gebruikt op je webiste, zodat hij niet per ongeluk een verkeerde connectie pakt?
Ik zet er namelijk nooit $conn (of net wat mijn variabel is) achter en werkt perfect.
ok... het script zoals het hierboven staat werkt alleen als de pagina zelf de data ontvangt.
sell.php stuurt nu de data naar portfolio/insert_buy.php
dus in portfolio/insert_buy.php moet de data verwerkt worden. en niet in sell.php
als de code hierboven de code is van sell.php werken de controles etc gewoon weg niet.
in sell.php zou alleen een form moeten staan, en in portfolio/insert_buy.php de code zoals hierboven.
Let wel op! de code zoals Jens en ik je geven doen hun werk, maar missen veiligheid als injectie preventie etc
sell.php stuurt nu de data naar portfolio/insert_buy.php
dus in portfolio/insert_buy.php moet de data verwerkt worden. en niet in sell.php
als de code hierboven de code is van sell.php werken de controles etc gewoon weg niet.
in sell.php zou alleen een form moeten staan, en in portfolio/insert_buy.php de code zoals hierboven.
Let wel op! de code zoals Jens en ik je geven doen hun werk, maar missen veiligheid als injectie preventie etc
@Fons; zoals jij beschrijft is het ook opgebouwd.
In sell.php staat alleen het formulier (zie code in begin post).
In portfolio/insert_buy.php staat het script (zoals door jou en jens is gemaakt).
Dit is dus nog niet de oplossing helaas.
@Chris; ik heb de code uit een tutorial gehaald, waar geen sprake was van meerdere databases. Kan zijn dat de $conn een overbodige toevoeging is aan het script, maar zolang het werkt vind ik het allemaal prima :)
In sell.php staat alleen het formulier (zie code in begin post).
In portfolio/insert_buy.php staat het script (zoals door jou en jens is gemaakt).
Dit is dus nog niet de oplossing helaas.
@Chris; ik heb de code uit een tutorial gehaald, waar geen sprake was van meerdere databases. Kan zijn dat de $conn een overbodige toevoeging is aan het script, maar zolang het werkt vind ik het allemaal prima :)




