Geen weegave van mysql output

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jesse Mulder

Jesse Mulder

12/10/2013 17:42:28
Quote Anchor link
Hallo,

Ik heb het onderstaande script geschreven maar het werkt niet.
Hij connect wel met mijn database alleen pakt geen info daar uit.

PHP:
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<!DOCTYPE html>
<html>
<link rel='stylesheet'  type='text/css' href='style/style.css' media='screen' />
<head>
<meta charset='UTF-8'>
<title>E-mail Overzicht</title>
</head>
<body>
<div id='container'>
<div id='content'>
<div id='sidebar'>
<h1>Registreren</h1>
</div>
<div id='infoPane'>
<h1>E-mail adressen overzicht</h1>
<?php

$host
="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="email"; // Database name
$tbl_name="mail"; // Table name

// Connect to server and select database.

mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

// select record from mysql
$sql="SELECT * FROM $tbl_name";
$result=mysql_query($sql);
?>

<table border='1'>
<tr>
<td align="center" bgcolor="#FFFFFF"><strong>Voornaam</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Tussen voegsel</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Achternaam</strong></td>
</tr>

<?php
while($rows=mysql_fetch_array($result)){
?>


<tr>
<td align="center" bgcolor="#FFFFFF"><? echo $rows['voornaam']; ?></td>
<td align="center" bgcolor="#FFFFFF"><? echo $rows['tussen']; ?></td>
<td align="center" bgcolor="#FFFFFF"><? echo $rows['achternaam']; ?></td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF" colspan='3'><? echo $rows['mail']; ?></td>
</tr>

<?php
// close while loop
}
// close connection;
mysql_close();
?>


</table>
</div>
</div>
<div id='footer'>
<p>Copyright &copy; 2013 by Jesse Mulder</p>
</div>
</div>
</body>
</html>

SQL Data:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
CREATE TABLE IF NOT EXISTS `mail` (
  `id` int(3) NOT NULL AUTO_INCREMENT,
  `voornaam` varchar(20) NOT NULL,
  `tussen` varchar(5) NOT NULL,
  `achternaam` varchar(35) NOT NULL,
  `mail` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

INSERT INTO `mail` (`id`, `voornaam`, `tussen`, `achternaam`, `mail`) VALUES
(2, 'iemand', 'van', 'iemand', '[email protected]');

Alvast bedankt.
Gewijzigd op 12/10/2013 18:38:25 door Jesse Mulder
 
PHP hulp

PHP hulp

23/11/2024 08:11:21
 
- Ariën  -
Beheerder

- Ariën -

12/10/2013 18:26:06
Quote Anchor link
Edit:
Wat doe ik verkeerd?
Een goede topictitel verzinnen en codetags gebruiken om je code.
Gewijzigd op 12/10/2013 18:27:48 door - Ariën -
 
Jesse Mulder

Jesse Mulder

12/10/2013 18:34:25
Quote Anchor link
- Aar - op 12/10/2013 18:26:06:

Wat doe ik verkeerd?
Een goede topictitel verzinnen en codetags gebruiken om je code.
[/modedit]


Wat zijn de code tags op dit forum ik ben hier nieuw
 
- Ariën  -
Beheerder

- Ariën -

12/10/2013 18:36:08
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

12/10/2013 18:36:15
Quote Anchor link
[code][/code]
 
Alex Mester

Alex Mester

12/10/2013 19:54:48
Quote Anchor link
Zoizo geen MySQL gebruiken maar overstappen op MySQLi of PDO.

Ook je query checken op errors. Probeer eens:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$result = mysql_query($sql) or die (mysqli_error());


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
$rows = mysql_fetch_array($result);
foreach ($rows as $row) {
   echo $row['naam'];
}


Zou het kunnen zijn. Aangezien $rows een array is natuurlijk en elke array apart moet worden ge-echo'd, dus vandaar een foreach (voor elke $rows (array[0],array[1].array[enz], word een $row gemaakt die je kan echo)

En http://wouterj.github.io/sql-boilerplate/ even doorlezen voor het overstappen naar MySQLi aangezien MySQL deprecated is sinds versie 5.5.0.
Gewijzigd op 12/10/2013 22:03:34 door Alex Mester
 
Jesse Mulder

Jesse Mulder

13/10/2013 11:10:32
Quote Anchor link
Alex Mester op 12/10/2013 19:54:48:
Zoizo geen MySQL gebruiken maar overstappen op MySQLi of PDO.

Ook je query checken op errors. Probeer eens:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$result = mysql_query($sql) or die (mysqli_error());


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
$rows = mysql_fetch_array($result);
foreach ($rows as $row) {
   echo $row['naam'];
}


Zou het kunnen zijn. Aangezien $rows een array is natuurlijk en elke array apart moet worden ge-echo'd, dus vandaar een foreach (voor elke $rows (array[0],array[1].array[enz], word een $row gemaakt die je kan echo)

En http://wouterj.github.io/sql-boilerplate/ even doorlezen voor het overstappen naar MySQLi aangezien MySQL deprecated is sinds versie 5.5.0.


Ik krijg nu de volgende melding:

Warning: Illegal string offset 'mail' in C:\xampp\htdocs\mail_index\index.php on line 43
2

Mijn php script 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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<!DOCTYPE html>
<html>
<link rel='stylesheet'  type='text/css' href='style/style.css' media='screen' />
<head>
<meta charset='UTF-8'>
<title>E-mail Overzicht</title>
</head>
<body>
<div id='container'>
    <div id='content'>
        <div id='sidebar'>
            <h1>Registreren</h1>
        </div>
        
        <div id='infoPane'>
            <h1>E-mail adressen overzicht</h1>
                <?php
                    $host
="localhost"; // Host name
                    $username="root"; // Mysql username
                    $password=""; // Mysql password
                    $db_name="email"; // Database name
                    $tbl_name="mail"; // Table name

                    // Connect to server and select database.

                    $link = mysqli_connect("$host", "$username", "$password")or die("cannot connect");
                    mysqli_select_db($link, "$db_name")or die("cannot select DB");

                    // select record from mysql
                    $sql="SELECT * FROM $tbl_name";
                    $result=mysqli_query($link, $sql) or die (mysqli_error());;
                ?>


            <table border='1'>
                <tr>
                    <td align="center" bgcolor="#FFFFFF"><strong>Voornaam</strong></td>
                    <td align="center" bgcolor="#FFFFFF"><strong>Tussen voegsel</strong></td>
                    <td align="center" bgcolor="#FFFFFF"><strong>Achternaam</strong></td>
                </tr>

                <?php
            
                    $rows
= mysqli_fetch_array($result);
                    foreach ($rows as $row) {
                        echo $row['mail'];
                    }


                    // close connection;
                    mysqli_close($link);
                ?>


            </table>
        </div>
    </div>
    
    <div id='footer'>
        <p>Copyright &copy; 2013 by Jesse Mulder</p>
    </div>
</div>
</body>
</html>


Ik heb nu alle MySQL opdrachten veranderd naar MySQLi opdrachten
Gewijzigd op 13/10/2013 13:01:19 door Jesse Mulder
 
Erwin H

Erwin H

13/10/2013 12:32:09
Quote Anchor link
Uit de manual (http://php.net/mysqli_select_db):
Quote:
bool mysqli_select_db ( mysqli $link , string $dbname )

Je mist dus gewoon een variabele.
 
Pipo Clown

Pipo Clown

13/10/2013 12:50:50
Quote Anchor link
De code uit je eerste bericht werkt bij mij goed, ik heb alleen een array toegevoegd i.p.v. een tabel aangemaakt en daar de data uitgelezen.

Ik vermoed dus dat het mis gaat met het lezen van de data uit de database.

Verder, ga inderdaad over op PDO of iets dergelijks.
Persoonlijk zou ik er ook de voorkeur aan geven om HTML te echoën i.p.v. het ergens buiten PHP te halen.
 
Jesse Mulder

Jesse Mulder

13/10/2013 13:02:39
Quote Anchor link
Erwin H op 13/10/2013 12:32:09:
Uit de manual (http://php.net/mysqli_select_db):
Quote:
bool mysqli_select_db ( mysqli $link , string $dbname )

Je mist dus gewoon een variabele.


Ik ben overgestapt op MySQLi
Gewijzigd op 13/10/2013 13:20:43 door Jesse Mulder
 
Erwin H

Erwin H

13/10/2013 13:12:19
Quote Anchor link
Jesse Mulder op 13/10/2013 13:02:39:
Erwin H op 13/10/2013 12:32:09:
Uit de manual (http://php.net/mysqli_select_db):
Quote:
bool mysqli_select_db ( mysqli $link , string $dbname )

Je mist dus gewoon een variabele.


Ik ben overgestapt op MySQLi

Ja, dat veroorzaakt de fout dus....
 
Jesse Mulder

Jesse Mulder

13/10/2013 13:19:59
Quote Anchor link
Bedankt allemaal.
Het werkt
 



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.