Hallo,

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

PHP:

<!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:

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.
- Aar - op 12/10/2013 18:26:06




Wat zijn de code tags op dit forum ik ben hier nieuw
Zoizo geen MySQL gebruiken maar overstappen op MySQLi of PDO.

Ook je query checken op errors. Probeer eens:


$result = mysql_query($sql) or die (mysqli_error());



$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.
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:


$result = mysql_query($sql) or die (mysqli_error());



$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:

<!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
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.

Erwin H op 13/10/2013 12:32:09

Uit de manual (http://php.net/mysqli_select_db):

bool mysqli_select_db ( mysqli $link , string $dbname )

Je mist dus gewoon een variabele.


Ik ben overgestapt op MySQLi
Jesse Mulder op 13/10/2013 13:02:39

[quote="Erwin H op 13/10/2013 12:32:09"]
Uit de manual (http://php.net/mysqli_select_db):

bool mysqli_select_db ( mysqli $link , string $dbname )

Je mist dus gewoon een variabele.


Ik ben overgestapt op MySQLi
[/quote]
Ja, dat veroorzaakt de fout dus....

Reageren