Hallo allemaal, ik heb een kleine crud systeempje gemaakt. Hij werk goed onder versie 5.6. Onder 7.4.0 werk hij ook goed. Maar onder 7.4.0 krijg ik bij de update pagina de volgende melding op de pagina erbij

Warning: count(): Parameter must be an array or an object that implements Countable in C:\wamp64\www\adresboek\view.php on line 8

Ik ben helaas nog niet zo gevorderd om nu te kunnen zien wat het probleem is. Hopelijk wil iemand mij een beetje op weg helpen hoe ik dit moet aanpakken. dit is mijn pagina.

<?php 
include('server.php');
	if (isset($_GET['edit'])) {
		$id = $_GET['edit'];
		$update = true;
		$record = mysqli_query($db, "SELECT * FROM info WHERE id=$id");

		if (count($record) == 1 ) {
			$n = mysqli_fetch_array($record);
			$id		 = $n['id'];
			$name    = $n['name'];
			$address = $n['address'];
			$town    = $n['town'];
			$country = $n['country'];
			$email   = $n['email'];
			$phone   = $n['phone'];
		}

	}
?>
<!DOCTYPE html>
<html>
<head>
	<title>PHP Adresboek [MySQL]</title>
	<link rel="stylesheet" type="text/css" href="style.css">
	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css">
</head>
<header>
	<div class="topnav">
		<a href="index.php">Home</a>
		<a href="add.php">Toevoegen</a>
		<a class="active" href="lijst.php">Lijst</a> 
		<a href="contact.php">Contact</a>
	</div>
</header>
<body>
	<?php if (isset($_SESSION['message'])): ?>
		<div class="msg">
			<?php 
				echo $_SESSION['message']; 
				unset($_SESSION['message']);
			?>
		</div>
	<?php endif ?>

<?php $results = mysqli_query($db, "SELECT * FROM info"); ?>

<form method="post" action="server.php" >

	<input type="hidden" name="id" value="<?php echo $id; ?>">

	<div class="input-group">
		<label><b>Naam</b></label>
		<p><?php echo $name; ?></p>
	</div>
	<div class="input-group">
		<label><b>Straat</b></label>
		<p><?php echo $address; ?></p>
	</div>
	<div class="input-group">
		<label><b>Plaats</b></label>
		<p><?php echo $town; ?></p>
	</div>
	<div class="input-group">
		<label><b>Land</b></label>
		<p><?php echo $country; ?></p>
	</div>
	<div class="input-group">
		<label><b>E-Mail</b></label>
		<p><?php echo $email; ?></p>
	</div>
	<div class="input-group">
		<label><b>Telefoon</b></label>
		<p><?php echo $phone; ?></p>
	</div>
	<hr>
	<div class="input-group">
	
	<a href="lijst.php" class="btn"><span class='glyphicon glyphicon-menu-left'></a>
	<a href="update.php?edit=<?php echo $id; ?>"class="btn"><span class='glyphicon glyphicon-pencil'></span></a>
	<a href="server.php?del=<?php echo $id; ?>" class="btn"><span class='glyphicon glyphicon-trash'></span></a>
	</div>
	
	
</form>
</body>
</html>
Overigens, om query-resultaten (aantal records die de query oplevert) te tellen kun je de num_rows() methode/functie gebruiken.

Deze zou je dus aan de lijst van controles van @Frank kunnen toevoegen alvorens je met het resultaat aan de slag gaat, wat dus mogelijk helemaal niet bestaat als je niet controleert of deze aanwezig is.

Daarbij, het is misschien een goed idee om al je acties via eenzelfde soort variabele te identificeren, tenzij je hier allemaal aparte PHP-bestanden voor hebt (in welk geval het wellicht hoog tijd wordt dat je over de structurering van je applicatie gaat nadenken).

Dit zou je in een "action" GET-variabele kunnen stoppen, of onder een andere naam. Het is in ieder geval zaak dat je variabelenamen omschrijvend zijn. Wat dat betreft is "edit" niet echt optimaal voor het doel om een id te identificeren - in zekere zin zou alles zoveel mogelijk "zelfdocumenterend" moeten zijn. Het is niet echt logisch dat $_GET['edit'] een id bevat. Het zou logischer zijn om een id simpelweg in de variabele "id" te stoppen. Je krijgt dan bijvoorbeeld een URL van de vorm /admin.php?action=edit&id=12. In deze URL is het direct duidelijk wat er aan de hand is, zonder een letter documentatie.

Reageren