• 0

Help with PHP/mySQL script


Question

I have a script that I've had made for a site I look after, and the coder has created it in a way where it doesn't look to make modifying the design of it all that easy.

It is full PHP, he hasn't added any HTML apart from in the echo.

I know nothing about PHP, hence I asked for this to be made.

The below snippet of code is what I mean, and I'm wondering how I would go about making it so it is a basic HTML file, calling the mySQL data from the DB.


function printlogo($data){

$teamA = getTeamA($data);
$teamB = getTeamB($data);

echo "<tr><td align='center' width='35' height='40'><img src='".getLogo($teamA)."'></td><td align='center' width='30'></td><td align='center' width='35'><img src='".getLogo($teamB)."'></td></tr>";
}
[/CODE]

I appreciate any help. I'm happy to send the file for anyone to look over and provide help.

Thanks in advance.

Link to comment
https://www.neowin.net/forum/topic/1131982-help-with-phpmysql-script/
Share on other sites

12 answers to this question

Recommended Posts

  • 0



function printlogo($data){
$teamA = getTeamA($data);
$teamB = getTeamB($data);
}
[/CODE]

[CODE]
<tr>
<td align='center' width='35' height='40'>
<img src="<?php printlogo($teamA) ?>" />
</td>
<td align='center' width='30'></td>
<td align='center' width='35'>
<img src="<?php printlogo($teamB) ?>" /></td>
</tr>
[/CODE]

should work :)

also you had Function printlogo but the html had getlogo

  • 0



function printlogo($data){
$teamA = getTeamA($data);
$teamB = getTeamB($data);
}
[/CODE]

[CODE]
<tr>
<td align='center' width='35' height='40'>
<img src="<?php printlogo($teamA) ?>" />
</td>
<td align='center' width='30'></td>
<td align='center' width='35'>
<img src="<?php printlogo($teamB) ?>" /></td>
</tr>
[/CODE]

should work :)

also you had Function printlogo but the html had getlogo

That doesn't seem to do anything for me. When I test it, it doesn't show anything.

Here is a bigger section of the code, I'm not sure if there is more there that could be of use.

[CODE]
/**
*
* Returns first team's name
*/

function getTeamA($data){
return $data['team1'];
}


/**
*
* Returns second team's name
*/

function getTeamB($data){
return $data['team2'];
}

function getScoreA($data){
return $data['score1'];
}

function getScoreB($data){
return $data['score2'];
}

function getLogo($team){
$team=strtolower($team);
return "images/$team.png";
}

function printlogo($data){

$teamA = getTeamA($data);
$teamB = getTeamB($data);

echo "<tr><td align='center' width='35' height='40'><img src='".getLogo($teamA)."'></td><td align='center' width='30'></td><td align='center' width='35'><img src='".getLogo($teamB)."'></td></tr>";
}
[/CODE]

  • 0

Hi there.

Here is the entire code:


<!--Live Scores-->
<?PHP

include('library/database.php');
$db = new database();

/****
* If no match is defined to be showed
* Chooses the first match from the list
*
*/

function randomMatch()
{
$match=-1;
$q = "SELECT * FROM game WHERE active = '1'";
$r = mysql_query($q) or die("Error in selecting first match: ".mysql_error());
if(mysql_num_rows($r)==0){
echo "NO MATCH IS CURRENTLY ACTIVE!";
exit;
}

while($row = mysql_fetch_array($r)){
$match = $row['id'];
break;
}
return $match;
}

/**
*
*
*
*/

function thisMatch(){
return $_REQUEST['match'];
}

/**
*
* Returns Id of the current match.
* if an id is specified then thisMatch();
* else randomMatch is called
*
*/

function getId(){
$id=-1;
if(!isset($_REQUEST['match'])){ //GET parameter null
$id = randomMatch();
}
else $id = thisMatch();

if($id==-1){
reportExit();
return -1;
}
return $id;
}

/**
*
* Data variable keeps the data of the row with fixed id
*
*/

function fetchData(){
$id = getId();

if($id==-1)return -1;
$q1 = "SELECT * FROM game WHERE id = '$id'";
$r1 = mysql_query($q1) or die("Error in fetching first active match, Level: 1:: ".mysql_error());
$data = mysql_fetch_assoc($r1) or die("Error in fetching first active match, Level: 2:: ".mysql_error());;
return $data;
}

/**
*
* If No match is currently active, do exit
*
*/

function reportExit(){
echo "No match is currently active!";
exit;
}

/**
*
* Returns first team's name
*/

function getTeamA($data){
return $data['team1'];
}


/**
*
* Returns second team's name
*/

function getTeamB($data){
return $data['team2'];
}

function getScoreA($data){
return $data['score1'];
}

function getScoreB($data){
return $data['score2'];
}

function getLogo($team){
$team=strtolower($team);
return "images/$team.png";
}

function printlogo($data){

$teamA = getTeamA($data);
$teamB = getTeamB($data);

echo "<tr><td align='center' width='35' height='40'><img src='".getLogo($teamA)."'></td><td align='center' width='30'></td><td align='center' width='35'><img src='".getLogo($teamB)."'></td></tr>";
}

function printName($data){

$teamA = "<B>".getTeamA($data)."</B>";
$teamB = "<B>".getTeamB($data)."</B>";

echo "<tr><td align='center' width='35' height='40'>$teamA</td><td align='center' width='30'></td><td align='center' width='35'>$teamB</td></tr>";
}

function printScore($data){

$scoreA = "<B>".getScoreA($data)."</B>";
$scoreB = "<B>".getScoreB($data)."</B>";

echo "<tr><td align='center' width='35' height='40'>$scoreA</td><td align='center' width='30'></td><td align='center' width='35'>$scoreB</td></tr>";
}

function printPlayers($data,$id){
echo "<TD width='35%' style='border:0' valign='top'>";
$var = 'player'.$id;
$str = $data[$var];
$ar = explode(',',$str);
foreach($ar as $ars){
$ars = ltrim($ars);
echo "   ".$ars."<BR>";
}
echo "</TD>";
}

function printLocation($data){
$location = $data['location'];
$time = $data['time'];
echo "<TD style='margin:5; border:0' width='30%' align='center' valign='middle'>$location<BR>$time<BR>";
$str = $data['link'];
$links=explode(',',$str);
foreach($links as $link){
echo "<a href=$link>".$link."</a><BR>";
}
echo "<BR>Currently Active Games:<BR>";
$q = "SELECT * FROM game WHERE active = '1'";
$r = mysql_query($q) or die("Erro in selecting active games on line: 152".mysql_error());
while($row=mysql_fetch_array($r)){
echo "<a href='index.php?match=".$row['id']."'>".$row['team1']." VS ".$row['team2']."</a><BR>";
}
echo "</TD>";
}

function printTime(){
}

function listPlayer($data){
echo "<TR>";
printPlayers($data,1);
printLocation($data);
printPlayers($data,2);
echo "</TR>";
}

function printData($data){
printlogo($data);
printName($data);
printScore($data);
listplayer($data);
}

function printNote($id){
$q = "SELECT * FROM notes WHERE gameid='$id' ORDER BY id DESC";
$r = mysql_query($q) or die("Error in PrintNote:: ".mysql_error());
while($row=mysql_fetch_array($r)){
$time = $row['time'];
$note = $row['body'];
echo '<tr><td width="100%" colspan="3"><B>';
$fDigit = $time{0};
if($fDigit>='0'&&$fDigit<='9'){
if($time%10==1&&$time!=11)echo $time."st Minute";
else if($time%10==2&&$time!=12)echo $time."nd Minute";
else echo $time."th Minute";
}
else echo $time;

echo "</B><BR>$note</td></tr>";
echo "<tr style='border:0' colspan='3'><td style='border:0'> </td></tr>";
}
}

echo "<table align='center' border='1' width='1000'>";
$data=fetchData();
printData($data);
printNote($data['id']);
echo "</table>";
?>
[/CODE]

Thanks :)

  • 0

i am at work so cant test anything really lol

try


<tr>
<td align='center' width='35' height='40'>
<img src="<?php echo printlogo($teamA); ?>" />
</td>
<td align='center' width='30'></td>
<td align='center' width='35'>
<img src="<?php echo printlogo($teamB); ?>" /></td>
</tr>
[/CODE]

  • 0

<tr>
<td align='center' width='35' height='40'>
<img src="<?php echo getLogo($teamA); ?>" />
</td>
<td align='center' width='30'></td>
<td align='center' width='35'>
<img src="<?php echo getLogo($teamB); ?>" /></td>
</tr>
[/CODE]

  • 0

&lt;snipped&gt;

function getTeamA($data){
  return $data['team1'];
}

function getTeamB($data){
  return $data['team2'];
}

function getLogo($team){
  $team=strtolower($team);
  return "images/$team.png";
}

function printlogo($data){

  $teamA = getTeamA($data);
  $teamB = getTeamB($data);

  echo "&lt;tr&gt;&lt;td align='center' width='35' height='40'&gt;&lt;img src='".getLogo($teamA)."'&gt;&lt;/td&gt;&lt;td align='center' width='30'&gt;&lt;/td&gt;&lt;td align='center' width='35'&gt;&lt;img src='".getLogo($teamB)."'&gt;&lt;/td&gt;&lt;/tr&gt;";
}

function printName($data){

  $teamA = "&lt;B&gt;".getTeamA($data)."&lt;/B&gt;";
  $teamB = "&lt;B&gt;".getTeamB($data)."&lt;/B&gt;";

  echo "&lt;tr&gt;&lt;td align='center' width='35' height='40'&gt;$teamA&lt;/td&gt;&lt;td align='center' width='30'&gt;&lt;/td&gt;&lt;td align='center' width='35'&gt;$teamB&lt;/td&gt;&lt;/tr&gt;";
}

function printData($data){
  printlogo($data);
  printName($data);
  printScore($data);
  listplayer($data);
}

echo "&lt;table align='center' border='1' width='1000'&gt;";
$data=fetchData();
printData($data);
printNote($data['id']);
echo "&lt;/table&gt;";
?&gt;
[/CODE]


[b]Note:[/b] do NOT replace the code you posted with the above, I just snipped it down to some of the bits you need to focus on here to understand why Haggis's code will not work and how to fix it!
[CODE]
function printlogo($data){
  $teamA = getTeamA($data);
  $teamB = getTeamB($data);
}
[/CODE]

[CODE]
&lt;tr&gt;
&lt;td align='center' width='35' height='40'&gt;
&lt;img src="&lt;?php printlogo($teamA) ?&gt;" /&gt;
&lt;/td&gt;
&lt;td align='center' width='30'&gt;&lt;/td&gt;
&lt;td align='center' width='35'&gt;
&lt;img src="&lt;?php printlogo($teamB) ?&gt;" /&gt;&lt;/td&gt;
&lt;/tr&gt;
[/CODE]


[CODE]
&lt;tr&gt;
&lt;td align='center' width='35' height='40'&gt;
&lt;img src="&lt;?php echo printlogo($teamA); ?&gt;" /&gt;
&lt;/td&gt;
&lt;td align='center' width='30'&gt;&lt;/td&gt;
&lt;td align='center' width='35'&gt;
&lt;img src="&lt;?php echo printlogo($teamB); ?&gt;" /&gt;&lt;/td&gt;
&lt;/tr&gt;
[/CODE]


[CODE]
&lt;tr&gt;
&lt;td align='center' width='35' height='40'&gt;
&lt;img src="&lt;?php echo getLogo($teamA); ?&gt;" /&gt;
&lt;/td&gt;
&lt;td align='center' width='30'&gt;&lt;/td&gt;
&lt;td align='center' width='35'&gt;
&lt;img src="&lt;?php echo getLogo($teamB); ?&gt;" /&gt;&lt;/td&gt;
&lt;/tr&gt;
[/CODE]


That does give a result, but doesn't show any images.
http://live.thenashy.com/test.php

The primary flaw in Haggi's code in all three of the above posts is that of scope. The variables $teamA and $teamB only exist [u]within[/u] the printLogo() and printName() functions, not outside of them! Therefore Haggi's code, which exists outside of these functions, tries to use the content of these variables and fails to work.
Additionally, all of the functions in the snipped down set of code (snipped down to show only stuff related to Haggis's code), with the exception of getLogo(), expect to be given a copy of the $data variable, which holds the entire row of data from the database (as an "array"), while Haggis's code is incorrectly trying to give them a variable containing only a team name.
Hence why the HTML in your test page only contains &lt;img src="images/.png"&gt;&lt;/img&gt; instead of something like &lt;img src="images/brisbane broncos.png"&gt;&lt;/img&gt;, it's unable to get the name of the team due to incorrect use of the functions your developer created.
The correct code would be:
[code]
&lt;tr&gt;
	&lt;td align='center' width='35' height='40'&gt;
		&lt;img src="&lt;?php getLogo(getTeamA($data)) ?&gt;" /&gt;
	&lt;/td&gt;
	&lt;td align='center' width='30'&gt;&lt;/td&gt;
	&lt;td align='center' width='35'&gt;
		&lt;img src="&lt;?php getLogo(getTeamB($data)) ?&gt;" /&gt;
	&lt;/td&gt;
&lt;/tr&gt;

This makes the printLogo() function redundant btw. The whole purpose of the printLogo() function is to generate a snippit of HTML code to display a logo, but this replaces that, so you can get rid of it.

What is happening here (assuming the OP needs it explaining), is we are calling the getTeamA() and getTeamB() functions respectively, passing in the entire $data variable, as they expect. These functions return the team name from the $data variable. This return value is then given to getLogo() which puts together and returns the url for the image file.

Really, url's shoud be encoded, so replace the getLogo() function with:

function getLogo($team){
  return rawurlencode("images/" . strtolower($team) . ".png");
}

  • 0

Most of what theblazingangel said is correct, but the final product he gave you is not... There were definitely some redundancies in the code and it was far from professionally done, but the image name still needs echoed out. You only return data that you want echoed out when you are calling the function from within an echo statement:


function getLogo($team){
return rawurlencode("images/" . strtolower($team) . ".png");
}
<tr>
<td align='center' width='35' height='40'>
<img src="<?php echo (getLogo(getTeamA($data))); ?>" />
</td>
<td align='center' width='30'></td>
<td align='center' width='35'>
<img src="<?php echo (getLogo(getTeamB($data))); ?>" />
</td>
</tr>
[/CODE]

Otherwise, the code will not output as you would like it to. Another option is to leave the html as is, and change the return statement to an echo statement:

[CODE]
function getLogo($team){
echo rawurlencode("images/" . strtolower($team) . ".png");
}
[/CODE]

After doing one of those two options, you shouldn't have any more issues.

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • It's actually shocking how logs filling disks has been a constant issue going back for decades, yet we see very little improvement over the years. Even in the server world, its actually shockingly common for a server to either go totally down, or have a critical alert raised due to logs filling disks.
    • YouTube has finally brought back its DMs feature, but only in these countries by David Uzondu Late last year, YouTube started testing a "new" way to share videos directly with friends, without having to leave the app. Now, the video giant has announced that is now rolling out a revamped direct messaging inbox, which lets you share videos, Shorts, and live streams and have conversations about them, directly on YouTube. The platform limits this feature to 18+ users who are signed in to a verified channel and use the latest mobile app version. Direct messaging on YouTube first became a thing back in 2017 inside the mobile app (later renamed to "Messages"), where users could chat one-on-one and share clips directly, but all that came to an end on September 18, 2019, when Google decided to shut it down after giving users a month to download a .zip file archive of their past chats. No one really knows why YouTube killed the feature, but users were encouraged to migrate to the public Comments section, on Community tab posts, and via YouTube Stories. The previous incarnation suffered from moderation challenges, prompting Google to implement stricter safety guidelines and age verifications for this new iteration. Here's a list of the countries where the re-launched feature is currently available, though note that Brand Accounts do not have access to it, at least for now: Countries American Samoa Austria Belgium Brazil Bulgaria Croatia Cyprus Czech Republic Denmark Estonia Finland France Germany Greece Guam Hungary Iceland Ireland Italy Latvia Liechtenstein Lithuania Luxembourg Malta Netherlands Northern Mariana Islands Norway Poland Portugal Puerto Rico Romania Singapore Slovakia Slovenia Spain Sweden Switzerland U.S. Virgin Islands United Kingdom United States Before you can use the feature, you first have to send an invite link to your contact. Invite links expire exactly seven days after you create them. If the person on the other end accepts the invite, you can exchange videos directly and text back and forth inside the app. To delete a message, just long-press on the message and tap unsend to remove it for both users. You can also delete entire conversations by long-pressing the thread and selecting delete, but the other person will continue to see the chat history on their end. To make sure everything remains safe, YouTube monitors these messages to ensure they follow Community Guidelines.
    • The problem of course is simply that government does not always know best. My point is that agency is taken away from the EU consumer in these cases. I'm sorry, but I do not believe that governments (politicians) are inherently good, and "looking out for me." Primarily they look to themselves and their own personal desires first, foremost, and always. When the EU or the DOJ fines these companies, claiming to "represent the welfare of the consumer," how much of these billion-dollar judgments are handed to the consumers they claim to represent? Not even a dollar, as I've seen. Yet the EUC lawyers who are paid to sit around and dream up these suits make huge commissions on the fines the EUC adjudicates, which is an ironclad fact I hope everyone is aware of. It's also rank corruption, of course, but that's another topic. Last, when the EU inflicts these judgments, or the DOJ, take your pick, the costs are bundled right along in the cost of the goods and services these companies provide the consumers they are "looking out for." If you are someone who believes his government is his savior then you have my condolences. I think Apple is right here, because the whole scheme of consumer choice is that consumers pick and choose among the products companies offer. Microsoft Windows is more compatible with third party software and hardware than any desktop OS on Earth, which is my sole reason for choosing it. Just because the EUC forces companies do certain things it knows the companies do not want to do, "or else", has no bearing on consumer benefit. This Siri thing is almost idiotic it's so infantile. But this is what the EUC does when the EU in Brussels becomes cash-strapped and needs a big infusion of cash. Some people get upset by "big companies" but it's the opposite when governments dwarf the size and scope of these companies, which is so obvious it hurts.... I mean you can't honestly believe that forcing Apple to do things with Siri it has its own reasons to decline is something that "opens up" Apple, do you? Say it aint' so...
    • Looks like many years since the request was made, a directory tree view finally may be added. https://github.com/files-community/Files/pull/18537
    • Is it still super slow or has it improved on that area?
  • Recent Achievements

    • One Month Later
      Tommi118 earned a badge
      One Month Later
    • One Month Later
      sjbousquet earned a badge
      One Month Later
    • Week One Done
      sjbousquet earned a badge
      Week One Done
    • First Post
      DragonOfMercy earned a badge
      First Post
    • First Post
      bella52 earned a badge
      First Post
  • Popular Contributors

    1. 1
      +primortal
      501
    2. 2
      PsYcHoKiLLa
      210
    3. 3
      +Edouard
      156
    4. 4
      Steven P.
      84
    5. 5
      FloatingFatMan
      72
  • Tell a friend

    Love Neowin? Tell a friend!