dat als je op de submit button klikt, dat hij dan altijd KL_voornaam in de tabel klant zet,
en als de betreffende tafel overeenkomt met bijvoorbeeld tafel1tijd1 OF tafel1tijd2 OF tafel1tijd3 dat ie dan KL_voornaam in de tabel tijd neerzet.
het gaat fout bij de if else statements van tafel1tijd1, tafel1tijd2, tafel1tijd3, alleen weet ik dan niet hoe het anders moet
hij zet wel KL_voornaam in de tabel klant, maar doet verder niets met tafel1tijd1 of tafel1tijd2 of tafel1tijd3
ben er al een tijdje mee bezig ik heb allerlei dingen geprobeerd.
als iemand een betere constructie heeft dan hoor ik dat graag.
maar even voor de duidelijkheid, kan het wel zo met al die if els-jes? ik zou dan volgens jou iets moeten veranderen aan <? $res = mysql_query($sql_update) or die(mysql_error()); ?> en verder niets aan het script? of moet ik <? $res = mysql_query($sql) or die(mysql_error()); ?> ergens anders heen verplaatsen?
Pas de logica van je script aan:
- maak een stuk SQL aan, bv. in de variabele $sql
- voer deze query uit
- controleer of de query is gelukt
volgende stuk:
- maak een stuk SQL aan, bv. in de variabele $sql_update
- voer deze query uit
- controleer of de query is gelukt
Op deze manier ga je de hele boel opbouwen en controleren. Het heeft geen enkele zin om op regel 1 een query aan te maken en deze pas op regel 100 uit te gaan voeren. Doe dat direct, dan kun je het ook niet meer vergeten of de variabele overschrijven.
In mijn scripts staat een query altijd in de variabele $query. Maar omdat deze altijd direct wordt uitgevoerd (en gecontroleerd!) is dat nooit een probleem. Het heeft zelfs een voordeel, er is minder geheugen nodig omdat er slechts 1 variabele bestaat: $query.
In mijn scripts staat een query altijd in de variabele $query. Maar omdat deze altijd direct wordt uitgevoerd (en gecontroleerd!) is dat nooit een probleem. Het heeft zelfs een voordeel, er is minder geheugen nodig omdat er slechts 1 variabele bestaat: $query.
Wat snap je niet aan de volgorde van
- maak een stuk SQL aan, bv. in de variabele $sql
- voer deze query uit
- controleer of de query is gelukt
?
Wanneer je 1 query hebt, staat dit stukje 1x in je code. Heb je 2 queries, dan staat dit 2 x in je code. Etc.
Het is mij volkomen onduidelijk wat je daar niet aan zou kunnen begrijpen. Gewoon 1-voor-1 de queries aanmaken, uitvoeren en controleren. En klaar is kees!
Uiteraard zijn er technieken om hier fraaie lussen van te maken, maar dat lijkt mij in dit geval nog even iets te hoog gegrepen.
Dit zal volgens mij wel werken, je controleert alleen niet of de query is gelukt en hoeveel records er zijn bijgewerkt. Dit laatste kun je met de functie mysql_affected_rows() opvragen.
Verder hier een voorbeeld van netjes scripten (op- en aanmerkingen zijn altijd welkom!). Doe er je voordeel mee:
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL); // Toon alle fouten en waarschuwingen
$aError = array(); // => de a in $aError staat voor Array, een s staat voor String.
// Maak verbinding met de database
// @ kun je gebruiken omdat je hier een eigen foutafhandeling gebruikt
if (!@mysql_connect($aDB['host'], $aDB['user'], $aDB['password'])) {
$aError[] = 'Connectie met de host mislukt: '.mysql_error();
}
// @ kun je gebruiken omdat je hier een eigen foutafhandeling gebruikt
if (!@mysql_select_db($aDB['db'])) {
$aError[] = 'Connectie met de database mislukt: '.mysql_error();
}
// ophalen navigatie-elementen:
$query = "SELECT url, tekst FROM navigatie WHERE active = 1";
if (!$result = mysql_query($query)) {
// mislukt:
$aError[] = 'Query "'.$query.'" is mislukt vanwege de volgende fout: '.mysql_error();
}
else {
$sNav = '<ul id="navigation">'.PHP_EOL;; // string waar de navigatie in komt te staan
while ($row = mysql_fetch_assoc($result)) {
$sNav .= '<li><a href="'.$row['url'].'">'.$row['tekst'].'</li>'.PHP_EOL;
}
$sNav .= '</ul>'.PHP_EOL; // netjes afsluiten van de list
}
// Ophalen tekst voor de pagina
$query = "SELECT tekst FROM verhalen WHERE active = 1 ORDER BY datum DESC LIMIT 5"; // oude $query is nu overschreven!
if (!$result = mysql_query($query)) { // oude $result is nu overschreven!
// mislukt:
$aError[] = 'Query "'.$query.'" is mislukt vanwege de volgende fout: '.mysql_error();
}
else {
$sText = '<table id="text">'.PHP_EOL;; // string waar de teksten in komen te staan
while ($row = mysql_fetch_assoc($result)) { // oude $row is nu overschreven
$sText .= '<tr><td>'.$row['tekst'].'</td></tr>'.PHP_EOL;
}
$sText .= '</table>'.PHP_EOL; // netjes afsluiten van de list
}
// En niet te vergeten: De output op het scherm gaan zetten (doe je als laatste!)
if (isset($aError)) { // Zijn er fouten?
echo 'De volgende fouten zijn opgetreden:'.PHP_EOL;
echo '<ul id="error">'.PHP_EOL;
foreach ($aError as $error) { // doorloop de array $aError
echo '<li>'.$error.'</li>'.PHP_EOL;
}
echo '</ul>'.PHP_EOL;
}
if (isset($sNav)) { // Is $sNav wel aangemaakt?
echo $sNav;
}
if (isset($sText)) { // Is $sText wel aangemaakt?
echo $sText;
}
?>
De stylesheet mag je er even bijdenken... ;)
okay leuk voorbeeld over netjes scripten...is mij veels te ingewikkeld...ik wilde alleen maar een klein werkend script, vanmorgen gepost op forum...maar blijkbaar weet niemand het antwoord op mijn vraag