Jump to content

POST Request


jbw

Recommended Posts

Hi all,

With the working code below I;m trying to setup a results section that would output a soccer teams results eg.Everton have won 12, drawn 4, and lost 5 games to date.
The team position option works fine but I;m not sure how to integrate the additional function within the code for the results section?  

 

Thanks for the help.

 

Regards.

<html>
<head>
<style>
.red {color: red}
</style>
<title>Table</title>
</head>
<body>

<?php



 if ($_SERVER["REQUEST_METHOD"] == "POST" ){
 
$tablesPage = "http://www.bbc.com/sport/football/tables";

$resultsPage = "http://www.bbc.com/sport/football/results"; // I need this to output results data as in the tables option

if(!empty($_POST["team"])){

$teamData= getTeamData($_POST["team"] , $tablesPage);

if(!empty($_POST["data"]) && $_POST["data"] == "position"){

echo getPosition($teamData);
}
}
}

function getPosition($teamData){


return "Team ". $teamData["team"] ." are currently number " . $teamData["position"] . " in the league ";

}
function getTeamData($team, $tablesPage){



$html = new DOMDocument();
@$html->loadHtmlFile($tablesPage);
@$xpath = new DOMXPath($html); /
$items = $xpath->query('//td/a[text()=' . $team . ']/../..');
$values[] = array();
foreach($items as $node){
foreach($node->childNodes as $child) {
if($child->nodeType == 1) array_push($values, $child->nodeValue);
}
}
$values[2] = substr($values[2], -1);
$values = array_slice( $values, 2, count($values)-4);
$keys = array("position", "team", "played", "won", "drew", "lost", "for", "against", "difference", "points");
return array_combine($keys, $values);
}


?>

<br>
Select a team and a data item about that team
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<select name="team">
<option value=""></option>
<option value="Everton">Everton</option>
<option value="Chelsea">Chelsea</option>
<option value="Southampton">Southampton</option>
<option value="Liverpool">Liverpool</option>
<option value="Arsenal">Arsenal</option>

</select>
<select name="data">
<option value="position">position</option>
<option value="results">results</option>
<select>

<input type="submit" value="Get Data"></input>
</select>
</form>
</body>
</html>

Test.php

Link to comment
https://forums.phpfreaks.com/topic/287327-post-request/
Share on other sites

Create a function similar to your getPosition function , pass it the teamData array but only echo out the win, lost and drew items from that array

function getResults($teamData){
    return "Team ". $teamData["team"] ." has Won ". $teamData["won"] ." games, lost " . $teamData["lost"] . " games and drew " . $teamData['drew'] . " games";
}

You'll use the following switch case statement to call the necessary function based on what user selected from form (Position or Results)

        switch($_POST['data'])
        {
            case 'position':
                echo getPosition($teamData);
                break;

            case 'results':
                echo getResults($teamData);
                break;
        }
Link to comment
https://forums.phpfreaks.com/topic/287327-post-request/#findComment-1474100
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • 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.