login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Data parser.

Offline Scythen - 31/10/2006 16:18
Avatar van ScythenPHP gevorderde Hey jongens en meisjes,

Ik wou graag een 'car data parser' maken.

Het ziet er zo uit:

Een <input type="text">

en bijv dit stukje code moet er in:

7250295 Comet 0% California New York $250 Drop Sell Repair
1330263 Stutz300 0% California New York $340 Drop Sell Repair
1634434 Chevrolet 0% Pennsylvania New York $500 Drop Sell Repair
3885700 Duesenberg 28% New York Illinois $431 Drop Sell Repair
4541512 Duesenberg 20% New York Pennsylvania $588 Drop Sell Repair
3402237 Duesenberg 13% New York Pennsylvania $725 Drop Sell Repair
6726651 Duesenberg 0% California Louisiana $980 Drop Sell Repair

Maar, nu moet ie dus echoën wat er allemaal in zit, dus bijv 1 duesenberg, 1 stutz300, 1 comet.. etc.

en de value moet ie bij elkaar optellen en echoen hoeveel de waarde is van alle autos.. nou zou ik niet weten hoe dit moet.. want het is een lap text en daaruit moet je die waardes halen... Zou iemand kunnen helpen? BVD.

18 antwoorden

Gesponsorde links
Offline Rik - 31/10/2006 16:32
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Zet al die data in een bestandje data.txt en gebruik dit scriptje:
  1. <pre>
  2. <?php
  3.  
  4. $contents = file_get_contents('data.txt');
  5. $contents = explode("\n", $contents);
  6.  
  7. $data = array();
  8. $total = 0;
  9. foreach ($contents as $rule) {
  10. $rule = explode(' ', $rule);
  11. $data[] = $rule;
  12. $total += substr($rule[6], 1);
  13. }
  14.  
  15. print_r($data);
  16. echo 'Totaal: $' . $total;
  17.  
  18. ?>
  19. </pre>


Ik denk dat het mis zal gaan bij de extra spatie bij "New York" maar daar verzin ik anders nog wel wat op. Wss is iemand anders nu toch eerder.  
Offline Scythen - 31/10/2006 16:34
Avatar van Scythen PHP gevorderde het word gebruikt door meerdere mensen heh..
Offline Rik - 31/10/2006 16:37
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Wat bedoel je precies met "het word gebruikt door meerdere mensen" 

Dit is toch van omerta? Is het anders niet makkelijker om de broncode te kopieeren? Dan kun je exploden op <td> en dan heb je geen last van dubbele spaties ed.
Offline Scythen - 31/10/2006 16:39
Avatar van Scythen PHP gevorderde Ik snap je niet echt, dit is wel van zo'n soort spel ja.. mensen kopieren dit van hun 'Garage' en plakken het in die textfield en dan drukken ze op een knopje, en tada.. ge-echoed word hoeveel van elke auto, en de totale waarde.
Offline Rik - 31/10/2006 16:46
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Ik begrijp nu wat je bedoelt, ik ga ff wat knutselen dan edit ik dit bericht zo weer.
Offline Scythen - 31/10/2006 17:00
Avatar van Scythen PHP gevorderde Oke, thanks dude.
Offline Rik - 31/10/2006 17:21
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Dit zou moeten werken: 
  1. <?php
  2. $contents = file_get_contents('data.txt');
  3. $contents = explode("\n", $contents);
  4.  
  5. $cars = array();
  6. $damages = array();
  7. $prices = array();
  8.  
  9. $total = 0;
  10. foreach ($contents as $rule) {
  11. if (preg_match('/^\d+ ([a-z0-9]+) (\d+)\% [a-z ]+ \$(\d+)/i', trim($rule), $match)) {
  12. $cars[] = $match[1];
  13. $damages[] = $match[2];
  14. $prices[] = $match[3];
  15. }
  16. }
  17.  
  18. echo '<table>';
  19. echo '<tr><th>Naam:</th><th>Aantal:</th><th>Totale prijs:</th></tr>';
  20.  
  21. $total = 0;
  22. $unique = array_unique($cars);
  23. foreach ($unique as $key => $value) {
  24.  
  25. $keys = array_keys($cars, $value);
  26. $price = 0;
  27. foreach ($keys as $key) {
  28. $price += $prices[$key];
  29. }
  30. $total += $price;
  31. echo '<tr><td>' . $value . '</td><td>' . count($keys) . '</td><td>$' . $price . '</td></tr>';
  32. }
  33.  
  34. echo '<tr><td>Totaal</td><td>' . count($cars) . '</td><td>$' . $total . '</td></tr>';
  35. echo '<table>';
  36. ?>

Je kunt er denk ik zelf wel iets bijmaken dat een formulier verstuurt?
Offline Scythen - 31/10/2006 17:37
Avatar van Scythen PHP gevorderde Je kunt er denk ik zelf wel iets bijmaken dat een formulier verstuurt?

Hoe bedoel je?:O
Offline Rik - 31/10/2006 17:43
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Het was toch de bedoeling dat het te gebruiken was voor meerdere mensen? Wat je zelf ook al zei: "mensen kopieren dit van hun 'Garage' en plakken het in die textfield en dan drukken ze op een knopje, en tada.. ge-echoed word hoeveel van elke auto, en de totale waarde.", dus een formulier versturen.  
Offline Scythen - 31/10/2006 17:45 (laatste wijziging 31/10/2006 17:45)
Avatar van Scythen PHP gevorderde O hmm..

dus gewoon

<form method="post" action="cardata.php">
<textarea name='contents'>
<input type="submit" name="submit">
</form>

Offline Rik - 31/10/2006 17:52
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Ja heel eenvoudig ik zal het anders er wel ff bij zetten:
  1. <?php
  2.  
  3. if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  4. $contents = $_POST['contents'];
  5. $contents = explode("\n", $contents);
  6.  
  7. $cars = array();
  8. $damages = array();
  9. $prices = array();
  10.  
  11. $total = 0;
  12. foreach ($contents as $rule) {
  13. if (preg_match('/^\d+ ([a-z0-9]+) (\d+)\% [a-z ]+ \$(\d+)/i', $rule, $match)) {
  14. $cars[] = $match[1];
  15. $damages[] = $match[2];
  16. $prices[] = $match[3];
  17. }
  18. }
  19.  
  20. echo '<table>';
  21. echo '<tr><th>Naam:</th><th>Aantal:</th><th>Totale prijs:</th></tr>';
  22.  
  23. $total = 0;
  24. $unique = array_unique($cars);
  25. foreach ($unique as $key => $value) {
  26.  
  27. $keys = array_keys($cars, $value);
  28. $price = 0;
  29. foreach ($keys as $key) {
  30. $price += $prices[$key];
  31. }
  32. $total += $price;
  33. echo '<tr><td>' . $value . '</td><td>' . count($keys) . '</td><td>$' . $price . '</td></tr>';
  34. }
  35.  
  36. echo '<tr><td>Totaal</td><td>' . count($cars) . '</td><td>$' . $total . '</td></tr>';
  37. echo '<table>';
  38. } else {
  39. ?>
  40. <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  41. <textarea name="contents"></textarea>
  42. <input type="submit" value="Go!">
  43. </form>
  44. <?php
  45. }
  46. ?>
Offline Scythen - 31/10/2006 18:01
Avatar van Scythen PHP gevorderde werkt niet.. probeer maa dit in te voeren:

7250295 Comet 0% California New York $250 Drop Sell Repair
1330263 Stutz300 0% California New York $340 Drop Sell Repair
1634434 Chevrolet 0% Pennsylvania New York $500 Drop Sell Repair
3885700 Duesenberg 28% New York Illinois $431 Drop Sell Repair
4541512 Duesenberg 20% New York Pennsylvania $588 Drop Sell Repair
3402237 Duesenberg 13% New York Pennsylvania $725 Drop Sell Repair
6726651 Duesenberg 0% California Louisiana $980 Drop Sell Repair
Offline Rik - 31/10/2006 18:08 (laatste wijziging 31/10/2006 18:08)
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Citaat:
Naam: Aantal: Totale prijs:
Comet 1 $250
Stutz300 1 $340
Chevrolet 1 $500
Duesenberg 4 $2724
Totaal 7 $3814
Dat krijg ik, alleen staat het dan nog in een tabel.  
Offline Scythen - 31/10/2006 18:09
Avatar van Scythen PHP gevorderde O ja, werkt.. hartstikke bedankt.. 
Offline Ibrahim - 31/10/2006 18:16
Avatar van Ibrahim PHP expert Scythen,

wat heb jij nu gedaan om dit zover te krijgen? NIETS

Boukefalos:
nu heeft ie niets geleerd 
Offline Scythen - 31/10/2006 18:20
Avatar van Scythen PHP gevorderde Nou, eigenlijk.. ik zoek de script door en bewerk het, dus leer ik er wel van. En 89% van de mensen die ik vraag: Hoe heb jij php geleerd? antwoord met: gewoon, scripts doorlezen.
Offline Rik - 31/10/2006 18:21 (laatste wijziging 31/10/2006 18:22)
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Ja gelijk heb je wel. Gelukkig of helaas voor Scythen vind ik zulke scrippies wel leuk om te maken.

Gelukkig omdat hij zelf niets hoeft te doen. Helaas omdat hij er dan niets van leert. Maar misschien gaat hij het script nog wel uitgebreid bestuderen en uitbreiden met schade en plaats enzo?  

Eigenlijk had ik zoiets beter kunnen doen in samenwerken maja...

Edit:
Net te laat... Maarre Scythen, daar had ik ook al op gehoopd! 
Offline Scythen - 31/10/2006 18:24 (laatste wijziging 31/10/2006 18:25)
Avatar van Scythen PHP gevorderde nou stuit ik toch nog op een klein probleempje.. lol

als ik dit invoer:

1634434 Chevrolet 0% Pennsylvania New York $500 Drop Sell Repair
3885700 Duesenberg 28% New York Illinois $431 Drop Sell Repair
4541512 Duesenberg 20% New York Pennsylvania $588 Drop Sell Repair
3402237 Duesenberg 13% New York Pennsylvania $725 Drop Sell Repair
6726651 Duesenberg 0% California Louisiana $980 Drop Sell Repair

Krijg ik gewoon een leeg tabel.. maar als ik dit:

7250295 Comet 0% California New York $250 Drop Sell Repair
1330263 Stutz300 0% California New York $340 Drop Sell Repair
1634434 Chevrolet 0% Pennsylvania New York $500 Drop Sell Repair
3885700 Duesenberg 28% New York Illinois $431 Drop Sell Repair
4541512 Duesenberg 20% New York Pennsylvania $588 Drop Sell Repair
3402237 Duesenberg 13% New York Pennsylvania $725 Drop Sell Repair
6726651 Duesenberg 0% California Louisiana $980 Drop Sell Repair

Invoer.. dan krijg ik het wel, weird?

edit: nu opeens weer wel.. lol
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.281s