Posten in database deels met formulier

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Mitch bla

Mitch bla

16/05/2012 22:21:40
Quote Anchor link
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:
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>


PHP-script
Quote:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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);
?>



Ik hoop dat iemand mij hiermee kan helpen.
 
PHP hulp

PHP hulp

27/04/2024 03:38:30
 
Fons Seesink

Fons Seesink

16/05/2012 23:16:45
Quote Anchor link
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
Gewijzigd op 16/05/2012 23:17:26 door Fons Seesink
 
Mitch bla

Mitch bla

17/05/2012 18:27:35
Quote Anchor link
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 :)
 
Jens erd

Jens erd

17/05/2012 20:10:35
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>";
?>


Bovenstaande code komt rechtstreeks van google. Via $$contents[1] krijg je de waarde en via $contents[4] krijg je de stijging/daling in procenten.
 
Fons Seesink

Fons Seesink

17/05/2012 21:45:18
Quote Anchor link
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.
 
Mitch bla

Mitch bla

18/05/2012 08:59:47
Quote Anchor link
Jens erd op 17/05/2012 20:10:35:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>";
?>


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.
 
Fons Seesink

Fons Seesink

18/05/2012 10:24:28
Quote Anchor link
Het de code van Mitch uitgebreid met je form en de SQL post.
Heb niet de SQL nagezien.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>'
;
}

?>
 
Mitch bla

Mitch bla

18/05/2012 10:39:37
Quote Anchor link
Dank je Fons, zit alleen nog wel ergens een fout in het script als ik hem upload..
 
Fons Seesink

Fons Seesink

18/05/2012 10:43:14
Quote Anchor link
op welke regel krijg je de melding?
 
Mitch bla

Mitch bla

18/05/2012 10:49:33
Quote Anchor link
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.
 
Fons Seesink

Fons Seesink

18/05/2012 10:52:39
Quote Anchor link
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">
 
Mitch bla

Mitch bla

18/05/2012 10:56:05
Quote Anchor link
Ja, dat had ik al gedaan. Maar nog steeds dezelfde error. Waarschijnlijk zit het in de code van jens?
 
Fons Seesink

Fons Seesink

18/05/2012 11:00:02
Quote Anchor link
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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php

ini_set(display_errors,1);
error_reporting(E_ALL|E_STRICT);
 
Mitch bla

Mitch bla

18/05/2012 11:01:11
Quote Anchor link
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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

ini_set(display_errors,1);
error_reporting(E_ALL|E_STRICT);
[
/quote]
Gewijzigd op 18/05/2012 11:14:42 door Mitch bla
 
Fons Seesink

Fons Seesink

18/05/2012 11:15:55
Quote Anchor link
als cURL lukt dan stopt je functie bij
if(!$line) {
return;
}
 
Mitch bla

Mitch bla

18/05/2012 12:13:52
Quote Anchor link
Fons, heb je wellicht nog een idee waar de fout in kan zitten?
 
Fons Seesink

Fons Seesink

18/05/2012 12:20:28
Quote Anchor link
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?
 
Mitch bla

Mitch bla

18/05/2012 12:28:29
Quote Anchor link
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:

Quote:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>'
;
}


?>
 
Chris PHP

Chris PHP

18/05/2012 12:33:37
Quote Anchor link
Mitch bla op 16/05/2012 22:21:40:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$conn
= mysql_connect("xxx","xxx","xxx");
$db      = mysql_select_db("xxx",$conn);
?>


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.
 
Fons Seesink

Fons Seesink

18/05/2012 12:37:43
Quote Anchor link
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
 
Mitch bla

Mitch bla

18/05/2012 12:42:12
Quote Anchor link
@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 :)
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.