I am trying to return results from my database so that I can create an XML file for use in Adobe Flex, where I will then populate a Google Map. At the moment using Charles i'm getting the following error mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource
Here is the code for my function:
public function getBusiness ($item)
{
$stmt = mysqli_prepare($this->connection,
"SELECT * FROM businesses");
$this->throwExceptionOnError();
mysqli_stmt_execute($stmt);
$this->throwExceptionOnError();
$row = "";
echo "<?xml version=\"1.0\" ?><map>";
while(($row = mysql_fetch_assoc($stmt)) !== false)
{
echo "<business><businessid>" . $row["businessid"] . "</businessid>";
echo "<type>" . $row["type"] . "</type>";
echo "<name>" . $row["name"] . "</name>";
echo "<street>" . $row["street"] . "</street>";
echo "<city>" . $row["city"] . "</city>";
echo "<country>" . $row["country"] . "</country>";
echo "<postcode>" . $row["postcode"] . "</postcode>";
echo "<latitude>" . $row["latitude"] . "</latitude>";
echo "<longitude>" . $row["longitude"] . "</longitude>";
echo "<phonenumber>" . $row["phonenumber"] . "</phonenumber>";
echo "<email>" . $row["email"] . "</email>";
echo "<website>" . $row["website"] . "</website>";
echo "<logo>" . $row["logo"] . "</logo>";
echo "<description>" . $row["description"] . "</description>";
echo "<datesubmitted>" . $row["datesubmitted"] . "</datesubmitted></business>";
}
echo "</map>";
}
Can anybody help at all?
You are using mysqli for running the statement, then trying to process the result as mysql? Yeah, that's not going to work.
Use functions from the same extension! They are not cross-compatible.
You should use fetch_array() instead of mysql_fetch_assoc()
Related
What am i doing wrong. The variable will not get picked up. I have tried to echo it out just to check but the echo was blank. What did i do wrong?
if($result->num_rows){
while($row = $result->fetch_array(MYSQLI_ASSOC)){
//Displays them
echo '<h4> ' . $row['fname'] . ' ' . $row['lname'] . ' <h4/>' .'<br/>';
}
request.php below
$requestedId = $_GET['account_id'];
$userId = $_SESSION['user_id'];
Thats the portions of the code i need help with. The account id is passed through the URL.
In the while loop you need to put the name account_id in it, not just the value
echo '<h4> <a href="request.php?account_id='.$row['account_id'].'">' .
$row['fname'] . ' ' . $row['lname'] . '</a> <h4/>' .'<br/>';
I have two tables that looks like this:
Put it in images since i dont know how to draw a table here.
My problem is that i can't seem to make a query or anything in my php that will allow me to load the report and the 5 images, so that i can display the images where i want to on the page. As i do it now it loads the report five times and one image in each report.
The edited code after #Terminus suggestions
$sql = "
SELECT *
FROM fangstrapporter AS f, rapportbilleder AS r
WHERE f.id=".htmlspecialchars($_GET["id"])." AND r.id=f.id";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
echo "<b>Overskrift:</b> " . $row["overskrift"] . "<br><br>" .
"<b>Sted:</b> " . $row["sted"] . "<br><br>" .
"<b>Fangstdato:</b> " . $row["fangstdato"] . "<br><br>" .
"<b>Agn:</b> " . $row["agn"] . "<br><br>" .
"<b>Kategori:</b> " . $row["kategori"] . "<br><br>" .
"<b>Art:</b> " . $row["art"] . "<br><br>" .
"<b>Vægt:</b> " . $row["vaegt"] . "<br><br>" .
"<b>Længde:</b> " . $row["laengde"] . "<br><br>";
do {
echo "<a href='" . $row["image_path"] . "'><img src='" . $row["image_thumb_path"] . "'></a><br><br>";
} while($row = $result->fetch_assoc());
echo $row["beskrivelse"]."<br>";
} else {
echo "0 results";
}
Can anyone help me do this? I have been searching on google for four days now, without any success.
Do as #Kenney suggested and remove the part where you echo the report from the loop.
$sql = "
SELECT *
FROM fangstrapporter AS f, rapportbilleder AS r
WHERE f.id=".htmlspecialchars($_GET["id"])." AND r.id=f.id";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
echo "<b>Overskrift:</b> " . $row["overskrift"] . "<br><br>" .
"<b>Sted:</b> " . $row["sted"] . "<br><br>" .
"<b>Fangstdato:</b> " . $row["fangstdato"] . "<br><br>" .
"<b>Agn:</b> " . $row["agn"] . "<br><br>" .
"<b>Kategori:</b> " . $row["kategori"] . "<br><br>" .
"<b>Art:</b> " . $row["art"] . "<br><br>" .
"<b>Vægt:</b> " . $row["vaegt"] . "<br><br>" .
"<b>Længde:</b> " . $row["laengde"] . "<br><br>";
$beskrivelse = $row["beskrivelse"];
do {
echo "<a href='" . $row["image_path"] . "'><img src='" . $row["image_thumb_path"] . "'></a><br><br>";
} while($row = $result->fetch_assoc());
echo $beskrivelse . "<br>";
} else {
echo "0 results";
}
I am having a problem displaying a JOIN statement. When I add
WHERE id = " . $team_id;
The information that is on the database will not display, but when I remove that line the information will correctly join and display on the "teaminfo.php " page, but it will display all of the data instead of the data that is unique to that id. Also when I remove the JOIN the the data that is unique to the id will display. Can anyone tell me whats wrong here. Any help will be great. Than you.
teaminfo.php
<html>
<head>
<title>Team Info page</title>
</head>
<body>
<?php
include 'connect.php';
$team_id = $_GET['id'];
// SQL query
$query = " SELECT *
FROM pitscouting
JOIN fieldscouting
ON pteam_number = fteam_number
WHERE id = " . $team_id;
if ($result = mysqli_query($mysqli, $query)) {
/* fetch associative array */
while ($row = mysqli_fetch_assoc($result)) {
// Write the data of the team
echo "<br />";
echo "Pit scouting";
echo "<dt>Team:</dt><dd>" . $row["pteam_number"] . " " . $row["pteam_name"] . "</dd>";
echo "<dt>Auto:</dt><dd>" . $row["pauto"] . "</dd>";
echo "<dt>Drive:</dt><dd>" . $row["pdrive"] . "</dd>";
echo "<dt>Objetcs With No Problem?</dt><dd>" . $row["pobjNoProblem"] . "</dd>";
echo "<dt>Objects They have a problem with?</dt><dd>" . $row["pobjWithProblem"] . "</dd>";
echo "<dt>Can they shoot? If yes from where and how acc</dt><dd>" . $row["pshoot"] . "</dd>";
echo "<dt>Extra Notes about their robot?</dt><dd>" . $row["pdrive"] . "</dd>";
echo"<br />";
echo "Field Scouting ";
echo "<dt>Team Number:</dt><dd>" . $row["fteam_number"] . "</dd>";
echo "<dt>Auto:</dt><dd>" . $row["fauto"] . "</dd>";
echo "<dt>Drive:</dt><dd>" . $row["fdrive"] . "</dd>";
echo "<dt>Objetcs With No Problem?</dt><dd>" . $row["fobjNoProblem"] . "</dd>";
echo "<dt>Objects They have a problem with?</dt><dd>" . $row["fobjWithProblem"] . "</dd>";
echo "<dt>Shots taken</dt><dd>" . $row["fshots_taken"] . "</dd>";
echo "<dt>Shorts made</dt><dd>" . $row["fshots_made"] . "</dd>";
echo "<dt>Extra Notes</dt><dd>" . $row["fnotes"] . "</dd>";
}
mysqli_free_result($result);
}
// Close the database connection
mysqli_close($mysqli);
?>
<p>Return to the list</p>
</body>
</html>
Palmetto.php
<?php
include 'connect.php';
// SQL query
$query = "SELECT * FROM pitscouting ORDER BY pteam_number";
if($result = mysqli_query($mysqli, $query)){
if(mysqli_num_rows($result) > 0){
while($row = mysqli_fetch_array($result)){
$name = $row['pteam_number'] . " " . $row['pteam_name'];
// Create a link to teaminfo.php with the id-value in the URL
$strLink = "<a href = 'teaminfo.php?id= " . $row['id'] . "'>" . $name . "</a>";
// List link
echo "<li>" . $strLink . "</li>";
}
echo "</table>";
// Close result set
mysqli_free_result($result);
} else{
echo "No records matching your query were found.";
}
} else{
echo "ERROR: Could not able to execute $query. " . mysqli_error($mysqli);
}
// Close connection
mysqli_close($mysqli);
?>
If your tables both have an ID field you will have to specify which table you want to get the data from.
WHERE pitscouting.id = " . $team_id;
or
WHERE fieldscouting.id = " . $team_id;
Please do mention the sql injection in you're code
$team_id = $_GET['id'];
// SQL query
$query = " SELECT *
FROM pitscouting
JOIN fieldscouting
ON pteam_number = fteam_number
WHERE id = " . $team_id;
please take a look at prepared statements, to prevent sql injections in youre code
Try putting an alias.
$team_id = $_GET['id'];
// SQL query
$query = " SELECT *
FROM pitscouting p
JOIN fieldscouting f
ON p.pteam_number = f.fteam_number
WHERE p1.id = " . $team_id;
I'm doing a tutorial where you save an uploaded image to a folder on your computer while saving information about who uploaded it, title of image and time of upload, to a database.
When someone enter the page with the uploaded image, a small text with information that is stored in the database, will appear right above the image(thumb sized). When you click on the thumbnail fancybox will kick in and you will get the original size of the image.
Though, my problem is that the image itself gets echoed each time someone uploads an image.
So if three people upload you get a total of 9 thumbnails. If 4 people upload it will be 16 images etc. They do not copy itself in the folder. Check screenshot please.
http://s122.photobucket.com/user/KcMello/media/Ska3080rmavbild2014-02-14kl110753_zpsc19caae9.png.html
What I need help with is, that if someone could check through the code below and tell me what im doing wrong. I think it's glob but im not sure.
Thanks!
yours sincerely,
Winterwind
<?php
$dbcon = mysqli_connect("localhost","user1","test1","tutorial");
$selectall = "SELECT * FROM store";
$result = mysqli_query($dbcon, $selectall);
while($row = mysqli_fetch_array($result)){
$information = ' Titel: ' . $row['titel'] . ' Uppladdare: ' . $row['uppladdare'] . ' Filnamn: ' . $row['filname'] . ' Datum: ' . $row['date'];
echo "<strong>Titel: </strong>" . $row['titel'] . "<br>";
echo "<strong>Uppladdare: </strong>" . $row['uppladdare'] . "<br>";
echo "<strong>Filnamn/bild: </strong>" . $row['filname'] . "<br>";
echo "<strong>Datum: </strong>" . $row['date'] . "<br>";
echo "<br>";
foreach(glob("bilder/thumb_*.jpg") as $filename){
$original = substr($filename, 13);
echo "<a class='fancybox' rel='massoravbilder' href='bilder/$original'> <img src='$filename' alt='$information' /></a>" . "<br>";
}
}
?>
Update of code:
<?php
$dbcon = mysqli_connect("localhost","user1","test1","tutorial");
$selectall = "SELECT * FROM store";
$result = mysqli_query($dbcon, $selectall);
while($row = mysqli_fetch_array($result)){
$information = ' Titel: ' . $row['titel'] . ' Uppladdare: ' . $row['uppladdare'] . ' Filnamn: ' . $row['filname'] . ' Datum: ' . $row['date'];
echo "<strong>Titel: </strong>" . $row['titel'] . "<br>";
echo "<strong>Uppladdare: </strong>" . $row['uppladdare'] . "<br>";
echo "<strong>Filnamn/bild: </strong>" . $row['filname'] . "<br>";
echo "<strong>Datum: </strong>" . $row['date'] . "<br>";
echo "<br>";
error_reporting(0);
$original = substr($filename, 13);
echo "<a class='fancybox' rel='massoravbilder' href='bilder/$original'> <img src='bilder/thumb_" . $row['filname'] . "' alt='$information' /></a>" . "<br>";
}
?>
The finished code:
<?php
$dbcon = mysqli_connect("localhost","user1","test1","tutorial");
$selectall = "SELECT * FROM store";
$result = mysqli_query($dbcon, $selectall);
while($row = mysqli_fetch_array($result)){
$information = ' Titel: ' . $row['titel'] . ' Uppladdare: ' . $row['uppladdare'] . ' Filnamn: ' . $row['filname'] . ' Datum: ' . $row['date'];
echo "<strong>Titel: </strong>" . $row['titel'] . "<br>";
echo "<strong>Uppladdare: </strong>" . $row['uppladdare'] . "<br>";
echo "<strong>Filnamn/bild: </strong>" . $row['filname'] . "<br>";
echo "<strong>Datum: </strong>" . $row['date'] . "<br>";
echo "<br>";
error_reporting(0);
$original = $row['filname'];
echo "<a class='fancybox' rel='massoravbilder' href='bilder/$original'> <img src='bilder/thumb_" . $row['filname'] . "' alt='$information' /></a>" . "<br>";
}
?>
Many thanks to Jojo for helping me out!:)
Your Problem is that you are showing all images in folder "bilder" where the name starts with "thumb_" without checking if the image actually belongs to the row from your database table. Assuming that your naming pattern for the thumbnails is like this:
bilder/thumb_ . $row['filename'] . '.jpg
You could update your code to something like this (untested):
while($row = mysqli_fetch_array($result)){
$information = ' Titel: ' . $row['titel'] . ' Uppladdare: ' . $row['uppladdare'] . ' Filnamn: ' . $row['filname'] . ' Datum: ' . $row['date'];
echo "<strong>Titel: </strong>" . $row['titel'] . "<br>";
echo "<strong>Uppladdare: </strong>" . $row['uppladdare'] . "<br>";
echo "<strong>Filnamn/bild: </strong>" . $row['filname'] . "<br>";
echo "<strong>Datum: </strong>" . $row['date'] . "<br>";
echo "<br>";
echo "<a class='fancybox' rel='massoravbilder' href='bilder/$original'> <img src='bilder/thumb_" . $row['filename'] . "' alt='$information' /></a>" . "<br>";
}
A better idea IMO is to store the thumbnail-path in your database as well and use it to render your thumbnail-link.
There has to be a easier way...
I keep getting this for the second line.
Parse error: syntax error, unexpected ';'
while($row = mysql_fetch_array($result)){
echo ("'$MAP_OBJECT->addMarkerByCoords";
"(\"";
$row['longitude'];
",";
$row['latitude'];
",\"";
$row['routername'];
"-";
$row['desc'];
"\", \"";
$row['routername'];
"-";
$row['desc'];
"<br><a href=\"./div/";
$row['routername'];
"\">Site Info</a>'");
echo "<br />";
}
You have to combine with a . and not with ;
echo ("'$MAP_OBJECT->addMarkerByCoords" .
"(\"" .
$row['longitude'] .
....
Have a look into the manual: http://php.net/manual/en/language.operators.string.php
Most of the ; should be . if you are attempting to concatenate these strings:
while($row = mysql_fetch_array($result)){
echo ("'$MAP_OBJECT->addMarkerByCoords" .
"(\"" .
$row['longitude'] .
"," .
$row['latitude'] .
",\"" .
$row['routername'] .
"-" .
$row['desc'] .
"\", \"" .
$row['routername'] .
"-" .
$row['desc'] .
"<br><a href=\"./Ldiv/" .
$row['routername'].
"\">Site Info</a>'"); // Here's the actual end of the statement
echo "<br />";
}
This woudl be a lot tidier with a HEREDOC:
echo <<<ROW
$MAP_OBJECT->addMarkerByCoords(
{$row['longitude']},
{$row['latitude']},
"{$row['routername']}-{$row['desc']}",
"$row['routername']}-{$row['desc']}"<br>
Site Info
)
ROW;
Although , it looks like something is missing before the <br> since the previous quote doesn't get closed.
Your syntax is wrong for what you are trying to execute.
The ; in PHP is an end statement, essentially. You are telling PHP to stop executing the echo on the very first line echo ("'$MAP_OBJECT->addMarkerByCoords" ; which is NOT what you want.
Instead, replace all the ; with .'s except for the last echo statement
while($row = mysql_fetch_array($result)){
echo "'$MAP_OBJECT->addMarkerByCoords" .
"(\"" .
$row['longitude'] .
"," .
$row['latitude'] .
",\"" .
$row['routername'] .
"-" .
$row['desc'] .
"\", \"" .
$row['routername'] .
"-" .
$row['desc'] .
"<br><a href=\"./Ldiv/" .
$row['routername']; .
"\">Site Info</a>'";
echo "<br />";
}