Hallo,

Ik wil graag een functie maken die de volgende waarden uit een database haalt: id, titel, datum post en auteur. Wanneer ik deze functie invoeg in een pagina, krijg ik de volgende error:
Fatal error: Call to undefined function getListContentMain() in /Applications/MAMP/htdocs/beheer/index.php on line 443


Dit is het script waar de functie in staat:
<?php

//Database connections are made in this file

$conHost = 'localhost';
$conUser = 'blablabla';
$conPass = 'blablabla';

$con = mysqli_connect($conHost, $conUser, $conPass);
	if(mysqli_connect_errno()){
		echo "Er kon geen verbinding worden gemaakt met de database: " . mysqli_connect_error();


function getListContentMain() {
	$dbname = 'content';
	mysqli_select_db($dbname,$con);
	$q = "SELECT * FROM main";
	$result = mysql_query($q,$con);
	
	$ListContentMainData = array();
	while($row = mysql_fetch_array($result));
	
	$ListContentMainData[''] = $row;
	
	return $ListContentData;
	}
}
	?>


Hoe kan ik deze functie verbeteren zodat ik mijn error niet meer krijg?

Jules
De aangeroepen function bestaat blijkbaar niet.
Heb je die wel ge-include()?

En $con bestaat niet in de function.
Zie global.
Jep is ge-include, in index.php staat
include ('functions/functions.php');


Is het slim om de verbinding met de database in een apart bestand te zetten, bv connect.php en dan deze te include na de regel
function getListContentMain() {
?


Je kunt niet zomaar een variabele buiten de function aanmaken en deze dan in de function gebruiken. Zoals je doet met $con.

<?php
$con = 'Hello World';

function helloWorld() {
return $con; // $con is leeg!
}
echo $con; // Hello World
?>

Je kan de variabele mee geven met de functie
<?php
function helloWorld($con) {
return $con;
}

$con = 'Hello World';
echo helloWorld($con); // Hello World
?>

Of aangeven dat de variabele een GLOBAL is.
<?php
$con = 'Hello World';

function helloWorld() {
GLOBAL $con;
return $con;
}

echo helloWorld(); // Hello World;
?>
Maar hoe kan ik de functie dan opbouwen zodat ik de gegevens uit de database ermee kan verwerken? want wanneer ik connect.php include en ik zet in de functie global $con; werkt het niet.

De functie ziet er nu zo uit:
<?php
//Require bestand waar database connecties worden gemaakt
include ('connect/connect.php');

function getListContentMain() {
	global $con;
	$dbname = 'content';
	mysqli_select_db($dbname, $con);
	$q = "SELECT * FROM main";
	$result = mysql_query($q,$con);
	
	$ListContentMainData = array();
	while($row = mysql_fetch_array($result));
	
	$ListContentMainData[''] = $row;
	
	return $ListContentData;
	}

	?>
Als je bovestaand include() zal het werken lijkt mij.

$ListContentMainData[''] = $row;
moet zijn:
$ListContentMainData[] = $row;
Nee helaas niet, ik krijg verschillende errors:

Warning: mysqli_select_db() expects parameter 1 to be mysqli, string given in /Applications/MAMP/htdocs/beheer/functions/functions.php on line 8

Warning: mysql_query() expects parameter 2 to be resource, object given in /Applications/MAMP/htdocs/beheer/functions/functions.php on line 10

Warning: mysql_fetch_array() expects parameter 1 to be resource, null given in /Applications/MAMP/htdocs/beheer/functions/functions.php on line 13

Notice: Array to string conversion in /Applications/MAMP/htdocs/beheer/index.php on line 443
Array
mysqli_select_db($dbname, $con);
Parameters omdraaien:
mysqli_select_db($con, $dbname);
Jules Kreutzer op 08/04/2014 14:18:39

Nee helaas niet, ik krijg verschillende errors:

Warning: mysqli_select_db() expects parameter 1 to be mysqli, string given in /Applications/MAMP/htdocs/beheer/functions/functions.php on line 8

Warning: mysql_query() expects parameter 2 to be resource, object given in /Applications/MAMP/htdocs/beheer/functions/functions.php on line 10

Warning: mysql_fetch_array() expects parameter 1 to be resource, null given in /Applications/MAMP/htdocs/beheer/functions/functions.php on line 13

Notice: Array to string conversion in /Applications/MAMP/htdocs/beheer/index.php on line 443
Array



De eerste error is opgelost, $dbname en $con moesten worden omgewisseld.
$result = mysql_query($q,$con);

Parameters moeten ook omgedraaid worden.
Je haalt mysqli_* en mysql_* door elkaar.

Reageren