Fout in functie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jules Kreutzer

Jules Kreutzer

08/04/2014 13:54:13
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?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
 
PHP hulp

PHP hulp

26/04/2024 08:34:56
 
- SanThe -

- SanThe -

08/04/2014 13:59:05
Quote Anchor link
De aangeroepen function bestaat blijkbaar niet.
Heb je die wel ge-include()?

En $con bestaat niet in de function.
Zie global.
 
Jules Kreutzer

Jules Kreutzer

08/04/2014 14:01:50
Quote Anchor link
Jep is ge-include, in index.php staat
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
function getListContentMain() {
?
Gewijzigd op 08/04/2014 14:02:54 door Jules Kreutzer
 
Michael -

Michael -

08/04/2014 14:05:45
Quote Anchor link
Je kunt niet zomaar een variabele buiten de function aanmaken en deze dan in de function gebruiken. Zoals je doet met $con.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$con
= 'Hello World';

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


Je kan de variabele mee geven met de functie
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
function helloWorld($con) {
    return $con;
}


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


Of aangeven dat de variabele een GLOBAL is.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$con
= 'Hello World';

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


echo helloWorld(); // Hello World;
?>
 
Jules Kreutzer

Jules Kreutzer

08/04/2014 14:11:22
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?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;
    }


    ?>
 
- SanThe -

- SanThe -

08/04/2014 14:15:55
Quote Anchor link
Als je bovestaand include() zal het werken lijkt mij.

$ListContentMainData[''] = $row;
moet zijn:
$ListContentMainData[] = $row;
 
Jules Kreutzer

Jules Kreutzer

08/04/2014 14:18:39
Quote Anchor link
Nee helaas niet, ik krijg verschillende errors:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
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
 
- SanThe -

- SanThe -

08/04/2014 14:23:58
Quote Anchor link
mysqli_select_db($dbname, $con);
Parameters omdraaien:
mysqli_select_db($con, $dbname);
 
Jules Kreutzer

Jules Kreutzer

08/04/2014 14:25:37
Quote Anchor link
Jules Kreutzer op 08/04/2014 14:18:39:
Nee helaas niet, ik krijg verschillende errors:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
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.
 
- SanThe -

- SanThe -

08/04/2014 14:27:52
Quote Anchor link
$result = mysql_query($q,$con);

Parameters moeten ook omgedraaid worden.
 
Michael -

Michael -

08/04/2014 14:30:55
Quote Anchor link
Je haalt mysqli_* en mysql_* door elkaar.
 
Jules Kreutzer

Jules Kreutzer

08/04/2014 14:31:02
Quote Anchor link
Klopt, mysql_query moest ik ook vervangen naar msqli_query en het zelfde met mysql_fetch_array.

nu moet ik alleen de array to string conversion wegwerken. Is hier een simpele functie voor?
 
- SanThe -

- SanThe -

08/04/2014 14:32:16
Quote Anchor link
Jules Kreutzer op 08/04/2014 14:31:02:
nu moet ik alleen de array to string conversion wegwerken. Is hier een simpele functie voor?


Geen idee wat je hiermee bedoelt.
 
Jules Kreutzer

Jules Kreutzer

08/04/2014 14:37:17
Quote Anchor link
Ik heb nu alleen nog volgende error waar ik niet uit kom:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
Notice: Array to string conversion in /Applications/MAMP/htdocs/beheer/index.php on line 443
Array
 
Michael -

Michael -

08/04/2014 14:38:43
Quote Anchor link
Hij bedoelt hier waarschijnlijk deze notice mee:
Notice: Array to string conversion in /Applications/MAMP/htdocs/beheer/index.php on line 443
Array

Of terwijl er wordt geprobeerd een array als string weer te geven.
De oplossing is dus de array als array behandelen en een string als een string.
 
Jules Kreutzer

Jules Kreutzer

08/04/2014 14:39:23
Quote Anchor link
en hoe kan ik hier precies voor zorgen?
 
- SanThe -

- SanThe -

08/04/2014 14:46:27
Quote Anchor link
En hoe ziet die regel er uit?
 
Jules Kreutzer

Jules Kreutzer

08/04/2014 14:52:16
Quote Anchor link
Wat bedoel je?

Wat ik uiteindelijk wil is een kolom van 4 rijen waarbij de laatste 5 records worden weergegeven. Ik heb het voor elkaar gekregen om de gegevens te tonen, maar ze worden nu per cel getoond.

De functie ziet er nu als volgt uit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
include ('connect/connect.php');



function
getListContentMain() {
    global $con;
    $dbname = 'content';
    mysqli_select_db($con,$dbname);
    $q = "SELECT * FROM main LIMIT 5";
    $result = mysqli_query($con,$q);
    
    $ListContentMainData = array();
    while($row = mysqli_fetch_array($result)) {
        echo $row['id'];
        echo $row['title'];
        echo $row['date'];
        echo $row['auteur'];
    }

    
    $ListContentMainData[] = $row;
    
    return $ListContentMainData;
    }


    ?>


De html van de pagina index.php ziet er als volgt uit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<html>
<table>
                                            <thead>
                                                <tr>
                                                    <th>Post ID</th>
                                                    <th>Titel</th>
                                                    <th>Datum Post</th>
                                                    <th>Auteur</th>
                                                </tr>
                                            </thead>
                                            <tbody>
                                              <tr>
                                                <td>1test 12014-04-04 21:50:03Jules Kreutzer2test 22014-04-04 21:50:03test account<br />
<b>Notice</b>:  Array to string conversion in <b>/Applications/MAMP/htdocs/beheer/index.php</b> on line <b>444</b><br />
Array</td>
                                                <td>1test 12014-04-04 21:50:03Jules Kreutzer2test 22014-04-04 21:50:03test account<br />
<b>Notice</b>:  Array to string conversion in <b>/Applications/MAMP/htdocs/beheer/index.php</b> on line <b>445</b><br />
Array</td>
                                                <td>1test 12014-04-04 21:50:03Jules Kreutzer2test 22014-04-04 21:50:03test account<br />
<b>Notice</b>:  Array to string conversion in <b>/Applications/MAMP/htdocs/beheer/index.php</b> on line <b>446</b><br />
Array</td>
                                                <td>1test 12014-04-04 21:50:03Jules Kreutzer2test 22014-04-04 21:50:03test account<br />
<b>Notice</b>:  Array to string conversion in <b>/Applications/MAMP/htdocs/beheer/index.php</b> on line <b>447</b><br />
Array</td>
                                              </tr>
                                            </tbody>
                                        </table>
</html>
 
Donny Wie weet

Donny Wie weet

08/04/2014 14:55:50
Quote Anchor link
je returned nu een array. Kortom: meerdere waardes. Je kan die functie wel uitlezen met een foreach:



foreach ( jouwfunctie() AS $result){
echo $veld['naam'];
}
?>

Toevoeging op 08/04/2014 15:05:06:

Dit is denk wat je wilt:


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
include 'hier/je/database/map/en/bestandsnaam.php';
$dbname = 'content';
//Connectie staat in de $con
$host = mysqli_select_db($dbname, $connectie);
function
getListContentMain($host) {
    
    
    
    $query = "SELECT * FROM main";
    $result = mysql_query($host, $query);
    
    if($result != null){
        $returnValue = '';
        while($row = mysql_fetch_array($result));
        
            $returnValue .= $row['veldNaam1'];
            $returnValue .= $row['veldNaam2'];
            $returnValue .= $row['veldNaam3'];
            $returnValue .= $row['etc'];
        
        return $returnValue;
        }
    }
else {
        return 'Er kon niets opgehaald worden!';
    }
}
Gewijzigd op 08/04/2014 15:05:40 door Donny Wie weet
 
- SanThe -

- SanThe -

08/04/2014 15:10:12
Quote Anchor link
@Donny: Achter de while() geen puntkomma en de return uit de loop halen.
 
Jules Kreutzer

Jules Kreutzer

08/04/2014 16:45:44
Quote Anchor link
@donny, wanneer ik jou code probeer krijg ik een error. Nu heb ik op google gezocht en je zou met de functie implode() een array kunnen omzetten naar een string.

Hoe moet ik dat met mijn functie doen aangezien ik niet echt wijs word van de handleidingen op internet...
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.