• 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

    • AB Download Manager 1.9.0 by Razvan Serea AB Download Manager is an open-source, feature-rich download manager designed to accelerate downloads, organize files efficiently, and provide seamless control over downloads. With support for multiple connections, resume capability, and an intuitive interface, it enhances the downloading experience for users seeking speed and reliability. The software integrates with various browsers, enabling quick link grabbing and batch downloading. It supports HTTP, HTTPS, and FTP protocols, ensuring broad compatibility with different file sources. Users can schedule downloads, set speed limits, and categorize files automatically for better organization. AB Download Manager is lightweight yet powerful, making it a great alternative to proprietary download managers. Its open-source nature allows developers to contribute, customize, and improve the software as needed. Whether you're downloading large files, managing multiple downloads at once, or seeking an ad-free experience, this tool offers a practical and efficient solution. Key features of AB Download Manager: Multi-Connection Support – Accelerates downloads by splitting files into multiple segments. Resume Capability – Allows paused or interrupted downloads to be resumed without starting over. Batch Downloading – Supports downloading multiple files at once for improved efficiency. Browser Integration – Captures download links directly from browsers for seamless operation. HTTP, HTTPS, and FTP Support – Ensures compatibility with a wide range of file sources. Download Scheduling – Enables users to automate downloads at specific times. Speed Limiting – Lets users control bandwidth usage for optimized performance. File Categorization – Automatically organizes downloaded files into designated folders. User-Friendly Interface – Simple and intuitive design for easy navigation. Cross-Platform Compatibility – Works on multiple operating systems. Ad-Free Experience – No intrusive ads or tracking for a clean user experience. AB Download Manager 1.9.0 changelog: Added Czech language support User-friendly error messages for download errors (#1252) An option to remember the last selected queue and quickly add downloads to it by long-clicking the Add button ( #1246) An option to export/import downloads using JSON format A Download button on the multi-download page for cases where users do not want to start downloads without queue processing (#1247) The app now includes a logger that can be enabled using a command-line flag (#1226) Startup errors are now logged automatically to help diagnose initialization issues Changed The default unqueued "Max Concurrent Downloads" value has been changed from "Unlimited" to 3 (This can be customized in the app settings) Improved Updated translations Added an indicator on the Android main page when resume is not supported (#1248) Extract the file name from the download link as a fallback when no response information is available (#1209) Minor UI/UX improvements Download: AB Download Manager 1.9.0 | Portable | ~80.0 MB (Open Source) Download: ARM64 | Portable ARM64 | Android Links: AB Download Manager Website | Github Page | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • I just started using Teams (and “New” Oiutlook) at work (instead of Slack) and both are truly abysmal pieces of software.
  • Recent Achievements

    • First Post
      DragonOfMercy earned a badge
      First Post
    • First Post
      bella52 earned a badge
      First Post
    • Reacting Well
      Techinmay earned a badge
      Reacting Well
    • Collaborator
      WndSks went up a rank
      Collaborator
    • One Month Later
      Sopa flores earned a badge
      One Month Later
  • Popular Contributors

    1. 1
      +primortal
      491
    2. 2
      PsYcHoKiLLa
      205
    3. 3
      +Edouard
      153
    4. 4
      Steven P.
      84
    5. 5
      ATLien_0
      74
  • Tell a friend

    Love Neowin? Tell a friend!