Een hele goede morgen allemaal,

Misschien dat 1 van jullie geweldenaren nog een helpdende hand kan toesteken;

Ik ben nu (eindelijk) zover dat ik een soort 'hoofdscherm' heb, waaruit ik kan kiezen
voor een overzicht van alle adressen, een adres toevoegen, een adres verwijderen
,een adres updaten en een enkel adrs opvragen.

Eerlijkheide gebied mij er wél bij te vertellen dat ik het heb van de basiscursus php5.
Je moet tenslotte ergens beginnen. Het probleem is dat de basiscursus
werkt met sqllite en op de server van mijn provider Msql 4.1.10 standaard. Ik heb dus alle
commando's aan proberen te passen met de mysql commando's. Mbv van jullie,
zoeken op internet en zoeken in boeken. Ik moet zeggen dat het steeds leuker wordt!

Nu terug naar de realiteit, de volgende problemen komen nog op waar ik geen raad mee weet:

Bij het 'overzicht van alle adressen' staan er in de laatste kolommen
een link naar del (roept 'verwijderadres.php op), in krijg en blijf ik de foutmelding houden:

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /home/xxx/xxx/xxx/adres/verwijderadres.php on line 41.

De code voor het adressen overzicht:

<?php
// variabelen initialiseren
//=============================
include ("connect.php");

$query= "SELECT * FROM adres ORDER BY id";
$result = mysql_query("$query") or die ("Fout opgetreden bij het maken van een verbinding");
// ============================
?>

<html>
<head>
<title>Overzicht adressen</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><style type="text/css">
<!--
body,td,th {
color: #FFFFFF;
}
body {
background-color: #00CCFF;
}
-->
</style>
</head>

<body>
<!-- eerst de kolomkoppen voor de tabel in plain HTML schrijven -->
<table border="1" width="80%" align="center">
<tr>
<td colspan="6"><h2 align="center">Adressen overzicht</h2></td>
</tr>
<tr>
<th>ID</th>
<th>Naam</th>
<th>Achternaam</th>
<th>Adres</th>
<th>Nr</th>
<th>P-code</th>
<th>Plaats</th>
<th>Tel.</th>
<th>Mobiel</th>
<th>@-1</th>
<th>@-2</th>
<th>Www</th>
<th>Del</th>
<th>Upd</th>
</tr>
<!-- Vanaf hier de PHP while()-lus. Elke lusdoorgang schrijft
een tabelrij naar het scherm -->
<?php
while ($rij = mysql_fetch_array($result)) {

echo ("<tr>
<td>" . $rij['id'] .
"<td>" . $rij['voornaam'] .
"<td>" . $rij['achternaam'] .
"<td>" . $rij['adres'] .
"<td>" . $rij['nummer'] .
"<td>" . $rij['postcode'] .
"<td>" . $rij['woonplaats'] .
"<td>" . $rij['telefoon'] .
"<td>" . $rij['mobiel'] .
"<td>" . $rij['email1'] .
"<td>" . $rij['email2'] .
"<td>" . $rij['url'] .
"<td><a href=\"verwijderadres.php?id=" . $rij['id'] . "\">Del</a></td>" .
"<td><a href=\"bewerkadres.php?id=" . $rij['id'] . "\">Upd</a></td></tr>");
}
?>
<!-- Einde van de lus, tabel afsluiten -->
</table>
<hr>
<!-- Eventueel rest van de pagina -->

</body>
</html>

Het adressenoverzicht werkt volgens mij, alleen laat hij in het overzicht het 'id' nummer niet zien.
Misschien dat hier het addertje verscholen zit?

Nu, vanuit dit overzicht op de 'Del' link klikken geeft bovenstaande fout:
(Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /home/xxx/xxx/xxx/adres/verwijderadres.php on line 41.)

Hier de code van verwijderadres.php:

<?php
// verbinding met database invoegen
include("connect.php");

// controleren of pagina zichzelf heeft aangeroepen
// via hidden-field uit het formulier
if (isset($_POST["bevestiging"])){
$query="DELETE FROM adres WHERE id=" .$_POST["id"];
$result = mysql_query("query") or die ("Fout opgetreden bij het maken van een verbinding");
echo("De volgende opdracht is uitgevoerd: <b>$query</b><br>\n");
if ($result){
echo ("Record nummer " .$_POST["id"] . " is verwijderd<br>\n");
echo ("<a href=\"verwijderadres.php\">Terug naar het overzicht</a>");
}
}else{
// pagina heeft zichzelf nog niet aangeroepen,
// eerst om bevestiging vragen
$query="SELECT * FROM adres WHERE id=" .$_GET["id"];
$result = mysql_select_db("$db") or die ("Fout opgetreden bij het maken van een verbinding");

?>
<html>
<head>
<title>Verwijderen: weet u het zeker?</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><style type="text/css">
<!--
body,td,th {
color: #FFFFFF;
}
body {
background-color: #FF0000;
}
-->
</style></head>
<body>
<h2>Let op: wilt u deze gegevens verwijderen?</h2>
<?php
include ("connect.php");

//while ($rij = sqlite_fetch_array($result)) // oude regel
while($rij = mysql_fetch_row($result)){
echo("ID = " . $rij['id'] . "<br>\n");
echo("Naam = ". $rij['voornaam'] . "<br>\n");
echo("Achternaam = " . $rij['achternaam'] . " <br>\n");
echo("Adres = ". $rij['adres'] . "<br>\n");
echo("Nummer = ". $rij['nummer'] . "<br>\n");
echo("Postcode = ". $rij['postcode'] . "<br>\n");
echo("Woonplaats = ". $rij['woonplaats'] . "<br>\n");
echo("Telefoon = ". $rij['telefoon'] . "<br>\n");
echo("Mobiel = ". $rij['mobiel'] . "<br>\n");
echo("Email1 = ". $rij['email1'] . "<br>\n");
echo("Email2 = ". $rij['email2'] . "<br>\n");
echo("Url = ". $rij['url'] . "<br><hr>\n");
}?>
<form action="<?php echo($_SERVER["PHP_SELF"]);?>" method="post">
<input type="hidden" name="bevestiging" value="1">
<input type="hidden" name="id" value="<?php echo($_GET["id"]);?>">
<input type="Submit" value="Ja, verwijderen">
<input type="Button" value="Nee, terug" onclick="javascript:history.back();">
</form>
<?php
// else-blok correct afsluiten
}
?>
</body>
</html>

Ik kan op de button 'ja, verwijderen' klikken wat ik wil, maar er gebeurt niets. Krijg alleen
na korte tijd 'fout bij maken van verbinding', terwijl dezelfde connect.php wordt gebruikt
als bij overzichtadressen.php. Ook een 2e keer connent includen maakt niet uit. Dan maar helemaal terug
naar het adressenoverzicht.
Nu wil ik die ene regel die in de database staat updaten via de link, en je raad het al, er komt weer een mysqlwarning op,
het formulier wordt wél correct aangeroepen.

Dit is de foutmelding/waarschuwing:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/xxx/xxx/xxx/adres/bewerkadres.php on line 51

en dit is de code:

<?php
// verbinding met database invoegen
include("connect.php");

// controleren of pagina zichzelf heeft aangeroepen
// via hidden-field uit het formulier
if (isset($_POST["bevestiging"])){
// query samenstellen
$query="UPDATE adres SET
voornaam = '". $_POST["voornaam"] ."',
achternaam = '". $_POST["achternaam"] . "',
adres = '". $_POST["adres"] ."',
nummer = '". $_POST["nummer"] ."',
postcode = '". $_POST["postcode"] ."',
woonplaats = '". $_POST["woonplaats"] ."',
telefoon = '". $_POST["telefoon"] ."',
mobiel = '". $_POST["mobiel"] ."',
email1 = '". $_POST["email1"] . "'
email2 = '". $_POST["email2"] ."',
url = '". $_POST["url"] ."',
WHERE id=" .$_POST["id"];
$result = mysql_query("$query") or die ("Fout opgetreden bij het maken van een verbinding");
echo("De volgende opdracht is uitgevoerd: <b>$query</b><br>\n");
if ($result){
echo ("Record nummer " .$_POST["id"] . " is bijgewerkt<br>\n");
echo ("<a href=\"overzichtadressen.php\">Terug naar het overzicht</a>");
}
}else{
// pagina heeft zichzelf nog niet aangeroepen,
// formulier tonen om gegevens te bewerken
$query="SELECT * FROM adres WHERE id=" . $_GET["id"];
$result = mysql_select_db("$db") or die ("Fout opgetreden bij het maken van een verbinding");
?>
<html>
<head>
<title>Bewerken: wijzig de adres gegevens</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><style type="text/css">
<!--
body,td,th {
color: #FFFFFF;
}
body {
background-color: #FF0000;
}
-->
</style></head>
<body>
<h2>Wijzig deze gegevens:</h2>
<?php
// gegevens ophalen en toekennen aan tijdelijke variabelen
While ($rij = mysql_fetch_array($result)) {
$vn = $rij['voornaam'];
$an = $rij['achternaam'];
$ad = $rij['adres'];
$nr = $rij['nummer'];
$pc = $rij['postcode'];
$wp = $rij['woonplaats'];
$tf = $rij['telefoon'];
$mb = $rij['mobiel'];
$e1 = $rij['email1'];
$e2 = $rij['email2'];
$url = $rij['url'] ;
}?>
<form action="<?php echo($_SERVER["PHP_SELF"]);?>" method="post">
<input type="hidden" name="bevestiging" value="1">
<input type="hidden" name="id" value="<?php echo($_GET["id"]);?>">
Voornaam:<br> <input type="text" name="voornaam" value="<?php echo($vn);?>" size="50"><br>
Achternaam:<br> <input type="text" name="achternaam" value="<?php echo($an);?>" size="50"><br>
Nummer:<br> <input type="text" name="nummer" value="<?php echo($nr);?>" size="4"><br>
Postcode:<br> <input type="text" name="postcode" value="<?php echo($pc);?>" size="7"><br>
Woonplaats:<br> <input type="text" name="woonplaats" value="<?php echo($wp);?>" size="50"><br>
Telefoon:<br> <input type="text" name="telefoon" value="<?php echo($tf);?>" size="11"><br>
Mobiel:<br> <input type="text" name="mobiel" value="<?php echo($mb);?>" size="11"><br>
Email1:<br> <input type="text" name="email1" value="<?php echo($e1);?>" size="50"><br>
Email2:<br> <input type="text" name="email2" value="<?php echo($e2);?>" size="50"><br>
Www:<br> <input type="text" name="website" value="<?php echo($url);?>" size="100"><br>
<hr>
<input type="Submit" value="Bijwerken">
<input type="Button" value="Terug" onclick="javascript:history.back();">
</form>
<?php
// else-blok correct afsluiten
}
?>
</body>
</html>

Om het verhaal compleet te maken, hierbij ook mijn connect.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">;
<html>
<head>
<title>Connect</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?php
$host = "localhost";
$dbusername = "xxxxxx";
$password = "xxxxxxx";
$db = "xxxxx";

mysql_connect("$host", "$dbusername", "$password");
mysql_select_db("$db") or die ("Fout opgetreden bij het maken van een verbinding");
?>
</body>
</html>

en de startpagina:

<html>
<head>
<title>De database: adressen</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
body,td,th {
color: #FFFFFF;
}
body {
background-color: #00CC66;
}
a:link {
color: #FFFFFF;
}
a:visited {
color: #FFFFFF;
}
-->
</style></head>

<body>
<h2>De Adresdatabase</h2>
<table width="90%" border="1">
<tr>
<td><p><strong>Maak een keuze</strong></p>
<ul>
<li><a href="../adres/overzichtadressen.php">Overzicht van alle adressen</a></li>
<li><a href="../adres/adrestoevoegen.php">Adres toevoegen</a></li>
<li><a href="../adres/verwijderadres.php">Adres verwijderen</a></li>
<li><a href="../adres/bewerkadres.php">Adres wijzigen</a></li>
<li><a href="../adres/zoekadres.php">Zoeken naar adres</a></li>
</ul>
</td>
</tr>
</table>
<p>&nbsp;</p>
</body>
</html>

en de code van de zoekpagina:

<html>
<head>
<title>Records zoeken</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><style type="text/css">
<!--
body,td,th {
color: #FFFFFF;
}
body {
background-color: #00CCFF;
}
-->
</style></head>

<body>
<h2>U kunt hier zoeken op (deel van) achternaam:</h2>
<form action="overzichtadressen.php" method="post">
<input type="text" name="achternaam" value="" size="50">
<input type="Submit" value="Zoeken">
<input type="Button" value="Terug" onclick="javascript:history.back();">
</form>
</body>
</html>

Hoop dat jullie iets voor me kunnen betekenen. Tuur.
.......
Heet je id in de database wel id en niet toevallig ID?
Als ik er even zo snel fdoorheen lees doe je dit:

<?php
// pagina heeft zichzelf nog niet aangeroepen,
// eerst om bevestiging vragen
$query="SELECT * FROM adres WHERE id=" .$_GET["id"];
$result = mysql_select_db("$db") or die ("Fout opgetreden bij het maken van een verbinding");

?>

EN HIER STAAT EEN LADING HTML

<?php
include ("connect.php");

//while ($rij = sqlite_fetch_array($result)) // oude regel
while($rij = mysql_fetch_row($result)){
}
?>

In de regel met mysql_fetch_row gebruk je de variabele $result. Dit moet een query zijn (zoiets: mysql_query($sql); ). In jouw geval is $result mysql_select_db (dus de DB selecteren waarin de tabellen voor de queries staan).

Het moet zoiets worden:
<?php
// pagina heeft zichzelf nog niet aangeroepen,
// eerst om bevestiging vragen
$sql = "SELECT * FROM adres WHERE id=" .$_GET["id"];
$connect = mysql_connect("host","user","password"); // Als je deze nog niet gedaan hebt
$selectdb = mysql_select_db("$db") or die ("Fout opgetreden bij het maken van een verbinding"); // En alleen als je die nog niet gedaan hebt!
$query = mysql_query($sql); // Hier voer je dus echt de query uit, de vorige twee waren om te verbinden...

while($rij = mysql_fetch_row($result)){
}
?>

Elwin
SanThe, Elwin,

Ben inderdaad de boot ingegaan met id en ID. In de database stond inderdaad ID. Overzich.php aangepast en id wordt nu getoond. Leerzaam...

Nu ff kijken wat elwin zegt.

tuur
Elwin,

ik heb je opgevolgd en verschillende dingen geprobeerd;
met de $connect en $selectdb en zonder ( ik ga er vanuit als ik in het het begin 'connect.php' include dat de verbinding al is gemaakt. Maar heleaas, ik krijg nog steeds de foutmelding:
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /adres/verwijderadres.php on line 40, ongeacht of de $connect regels zijn ingevoegd ja of nee.

<?php
// pagina heeft zichzelf nog niet aangeroepen,
// eerst om bevestiging vragen
$sql="SELECT * FROM adres WHERE ID=" .$_GET["ID"];
$connect = mysql_connect("localhost","xxxx","xxxx");
$selectdb = mysql_select_db("$db") or die ("Fout opgetreden bij het maken van een verbinding");
$query = mysql_query($sql);
?>

<?php

40: while($rij = mysql_fetch_row($result)){
echo("ID = " . $rij['ID'] . "<br>\n");
echo("Naam = ". $rij['voornaam'] . "<br>\n");
echo("Achternaam = " . $rij['achternaam'] . " <br>\n");
echo("Adres = ". $rij['adres'] . "<br>\n");
echo("Nummer = ". $rij['nummer'] . "<br>\n");
echo("Postcode = ". $rij['postcode'] . "<br>\n");
echo("Woonplaats = ". $rij['woonplaats'] . "<br>\n");
echo("Telefoon = ". $rij['telefoon'] . "<br>\n");
echo("Mobiel = ". $rij['mobiel'] . "<br>\n");
echo("Email1 = ". $rij['email1'] . "<br>\n");
echo("Email2 = ". $rij['email2'] . "<br>\n");
echo("Url = ". $rij['url'] . "<br><hr>\n");
}
?>

ook als ik $result wijzig door $sql hou ik dezelfde foutmelding
nog suggesties? tuur
while($rij = mysql_fetch_row($result)){

moet je dan wel even wijzigen in

while($rij = mysql_fetch_row($query ){
Ja, en misschien nog even je sql query netjes afsluiten met quotes? Of nee, dat hoeft niet als het een nummer is ;-)
Hi SanThe,Jan,

Die had ik ook al geprobeerd. Als ik de $query gebruik
while($rij = mysql_fetch_row($query)){

krijg ik nog steeds dezelfde error ?!

er moet nog ergens een kromme bit inzitten...

tuur
$sql="SELECT * FROM adres WHERE ID=" .$_GET["ID"];

en doe dan een een echo

echo $sql;

Wat zie je dan? Is de query wel goed?
Als ik die echo doe,

zie ik hetvolgende on screen:

SELECT * FROM adres WHERE ID= als 1e regel. Daarna komt wederom de foutmelding op ( die nu dan uiteraard in regel 41 staat).

De query, lijkt mij goed, ik roep het verwijderadres.php aan in de regel van de tabel waarvan hij verwijderd moet worden. ID staat in de eerste kolom. Lijkt mij datie bij het anroepen van verwijderadres.php kijkt naar het ID van de regel waarin ik op 'del' klik.

tuur

Reageren