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.
je moet voor de select een $variabelen aanmaaken bv
<?php
$SQL = SELECT * FROM adres WHERE ID= ...
//nu pas echo
echo $SQL
?>
Volgens mij heb ik dat ook zo gedaan:
$sql = "SELECT * FROM adres WHERE ID=" .$_GET["ID"];
echo $sql;

geeft bovenstaand effect. tuur
allemaal,
ben ff weg. tot maandagavond. heb het verhaal van bierens een beetje zitten volhgen en kwam daarbij je site's tegen SanThe. Netjes.

Jan, jammer datie van jou het niet doet :-( (bij mij althans)

tuur
Tuur schreef op 22.10.2005 13:21
Als ik die echo doe, zie ik hetvolgende on screen:

SELECT * FROM adres WHERE ID=

De query, lijkt mij goed


Je ID is leeg. Daardoor krijg je die error.
In je database heb je 'ID' en in de url gebruike je 'id'

Dus maak de query zo en hij doet het:
$sql="SELECT * FROM adres WHERE ID=" .$_GET["id"];
Hi SanThe,

Ga ff koken en als ik telefonisch niet last gevallen wordt (on call dienst) ga ik het straks meteen proberen en laat ik het weten.

Andere vraag; woon je op phphulp ;-))?

Gr, tuur
mysql_fetch_array() heeft een 2e optie nodig...
anders moet je 'row' gebruiken!

<?php
// gegevens ophalen en toekennen aan tijdelijke variabelen
While ($rij = mysql_fetch_array($result, MYSQL_BOTH)) {
$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'] ;
}?>
Jim schreef op 25.10.2005 19:17
mysql_fetch_array() heeft een 2e optie nodig...
anders moet je 'row' gebruiken!

<?php
// gegevens ophalen en toekennen aan tijdelijke variabelen
While ($rij = mysql_fetch_array($result, MYSQL_BOTH)) {
$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'] ;
}?>


Dit is niet verplicht.
Zie onderstaand van nl.php.net

Het optionele tweede argument result_type in mysql_fetch_array() is een constante en kan de volgende waarden aannemen: MYSQL_ASSOC, MYSQL_NUM, en MYSQL_BOTH. Deze feature werd toegevoegd in PHP 3.0.7. MYSQL_BOTH is de default voor deze parameter.
341 regels... Ach ja...

Denk idd ook dat SanThe hier zo ongeveer woont :P
Maar des te gezelliger..
SanThe schreef op 25.10.2005 20:27
[quote=Jim schreef op 25.10.2005 19:17]mysql_fetch_array() heeft een 2e optie nodig...
anders moet je 'row' gebruiken!

<?php
// gegevens ophalen en toekennen aan tijdelijke variabelen
While ($rij = mysql_fetch_array($result, MYSQL_BOTH)) {
$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'] ;
}?>


Dit is niet verplicht.
Zie onderstaand van nl.php.net

Het optionele tweede argument result_type in mysql_fetch_array() is een constante en kan de volgende waarden aannemen: MYSQL_ASSOC, MYSQL_NUM, en MYSQL_BOTH. Deze feature werd toegevoegd in PHP 3.0.7. MYSQL_BOTH is de default voor deze parameter.[/quote]

Ja, je hebt gelijk, het is niet verplicht.
Misschien handige bijkomende uitleg:
MYSQL_ASSOC vereist dat je de kolomnaam gebruikt,
MYSQL_NUM vereist dat je het kolomnummer gebruikt,
en MYSQL_BOTH geeft je de mogelijkheid om een van de twee te gebruiken!

Plz, correct me if I'm wrong.
Hi allemaal,
SanThe had gelijk, na het wijzigigen van de regel is de foutmelding weg. Ik kom nu zonder foutmelding in het scherm van 'verwijderadres.php', alleen zijn alle velden leeg, die het scherm aanbied ter bevestiging om verwijderd te worden? Tis toch allemaal niet zo simpel als ik dacht ;-).

tuur

Reageren