Select option

Status
Niet open voor verdere reacties.
In een HTML form-tag (<form>) zijn verschillende attributen (attributes) mogelijk. Bijvoorbeeld (gelijk de belangrijkste) method en action.

method geeft aan of het via een POST- of GET manier moet worden verstuurd. GET betekent dat de waardes ook in de URL-balk te zien zijn, POST niet. Dit is een van de redenen dat POST gebruikt wordt voor login-dingen. Voor nu maakt het even niet uit wat je gebruikt, maar in je PHP script wel. Zie later deze post.

action is de locatie van het 'opvangende' script. Ofwel, de pagina welke alles afhandeld. Hier moet je gewoon een valide URL in opgeven, bijvoorbeeld mijnpagina.php of http://www.google.com/iets/. Als je deze leeg laat (dus: action='') wijst het naar zichzelf.


Nu, het afhandelen. Voor het gemak zeggen we even dat we naar een andere pagina toe wijzen, genaamd afhandel.php. Nu ziet afhandel er bijvoorbeeld zo uit:
PHP:
<?php
   //evnetueel standaard layout ofzo?

   if(isset($_GET['merken']))   /* als er een merk meegegeven is */
   {
      $merken = $_GET['merken'];   /* sla het op in variabele $merken */
   }else{
      die('geen merk opgegeven!');   /* stop script en echo de melding */
   }

   echo $merken;   /* als het wel goed ging, echo het merk */
?>
Als je de actie 'POST' had ipv. 'GET', moetten alle 'GET's hierboven 'POST's worden.


Het idee van alles-op-dezelfde-pagina is ook goed mogelijk. Zoals je ziet hierboven zit er in de 'else'-clause (gedeelte) alleen maar een foutmelding. Maar stel je voor dat je daar nou je form neer zet? Dan krijg je altijd OF je form, OF de echo. Zoiets:
PHP:
<?php

   if(isset($_GET['merken']))   /* als er een merk meegegeven is */
   {
      $merken = $_GET['merken'];   /* sla het op in variabele $merken */

      /* doe iets met $merken... of niet. */

      echo $merken;

   }else{
      /* er was niets gegeven! Dus, of de gebruiker had niets geselecteerd,
         of hij was 'nieuw' op de pagina. Spuug het form dus uit: */
?>

<form name="autoform" action="" method="POST">
   <select name="merken">
      <option value="1">Ford</option>
      <option value="2">Audi</option>
      <option value="3">VW</option>
   </select>
</form>

<?php
   }   /* einde if/else */
?>
Zoals je ziet stop ik gewoon met php code, zet ik de HTML neer, en ga verder met PHP. Dit mag gewoon zo! Je kan ook je gehele form uit echo'en, maar dit ziet er net iets leesbaarder uit.


Nu, ik vond het if/else gedoe in het begin ook lastig (met de post en dat soort dingen iig), dus probeer het gewoon op te bouwen. Begin makkelijk:
PHP:
if(    )
{
   //doe iets
}else{
   //doe iets anders
}
verder uitbreiden:
PHP:
if(isset($_GET['iets']))
{
   //doe iets
}else{
   //doe iets anders
}
again:
PHP:
if(isset($_GET['iets']))
{
   echo $_GET['iets'];
}else{
   //doe iets anders
}
...
PHP:
if(isset($_GET['iets']))
{
   echo $_GET['iets'];
}else{
?>
   hier komt het form
<?php
}
etcetera.


Hopelijk heb je hier wat aan :thumb:
 
Laatst bewerkt:
Hoeveel script bestanden je nodig hebt hangt van je project af. Bijv. bij een eenvoudig contact formulier kan meestal alles in 1 php bestand.
Je bent nu net begonnen met PHP, dan zou ik me eerst op de basis van php concentreren en zo als het er nu uit ziet kan je project nog steeds in 1 PHP bestand.

Is het gelukt met de query aan te passen?
 
eerst wil ik even zeggen dat ik het onwijs tof vind dat jullie de tijd voor me nemen om een poging te doen om me dit bij te brengen. Mijn ervaringslevel met programmeren is niet zo hoog. Ik heb alleen van Oracle sql ervaring en dan hoofdzakelijk om het te lezen en enkele eenvoudige update scripts te maken. Maar, blijkbaar is deze kennis ook handig voor mysql :cool:

het is me nog niet gelukt met het script. Behalve wat leeswerk heb ik deze kerstdagen niet echt ge-php-t. Nu weer verder dus.

is het niet overzichtelijker om juiste losse scripts te maken? anders krijg ik zo'n enorme lap tekst :)
tot nu toe is er een databaselink als apart bestand.
ik denk dat er een soort van main bestand gaat komen waarin ik met css de opmaak bepaal, in dat bestand diverse includes doe.
ik denk dat ik het form ook apart maak en die dan aanroep op de plek waar ik die wil hebben. is dat een handige opzet?

ik weet niet of ik het al had genoemd, maar mijn idee is om een proggie te maken waarin gebruikers bij kunnen houden welke onderhoudsacties ze voor hun auto uitgevoerd hebben (laten doen). Met de eerder genoemde picklist kan de gebruiker (eenmalig) zijn merk en type kiezen. Die keuze moet dan gekoppeld worden aan zijn account gegevens. Als dat account eenmaal aangemaakt is, zouden die settings steeds getoond moeten worden. en daarnaast de onderhoudsgegevens.

voor mijn database heb ik tot nu toe een import gedaan in een tabel met alle automerken, een tabel met alle autotypen, een tabel met ussers en met de onderhoudsgegevens. de database wordt ongetwijfeld steeds aangevuld en mogelijk uitgebreid.

vanavond weer wat verder stoeien met het form.
 
PHP:
$db = mysql_connect("localhost", "inlognaam", "wachtwoord");
$result = mysql_query("SELECT Merk FROM merken", $db);
 while ($list = mysql_fetch_assoc($result)) {
   echo "<option>".$list["Merk"]."</option>\n";
}

kan iemand me weer even op gang helpen? in de bron van mijn output krijg ik de melding <b>Warning</b>: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in ...... en dan verwijst hij naar de while regel.

Dit heb ik voor het php staan:
<body>
<form>
<select name="merken">

Dit na de php tag:
</select>
</form>
</body>
 
Dat betekent waarschijnlijk dat de query mislukt. Verander regel 2 eens in
PHP:
$result = mysql_query("SELECT Merk FROM merken", $db) or die("Fout: " . mysql_error());
 
als ik dat gedaan heb, krijg ik: Fout: mysql_error in mijn bron

overigens na mysql_error moet blijkbaar geen nieuw haakje openen (
 
Het haakje openen en sluiten moeten wel na mysql_error. Het is namelijk een functie die de foutmelding van de laatste mysql query weergeeft.
Heb je die regel gecopy-pasted? Dan zou je namelijk: Fout: <hier de foutmelding van mysql> moeten zien.
 
je hebt gelijk, ik had een haakje te weinig gekopieerd!!

de melding die ik krijg is: No database selected

in welk deel moet ik de database noemen?
 
die heb ik nu toegevoegd, direct na het connect gedeelte.

toch blijft de bron aangeven dat er geen database gevonden wordt. wat doe ik niet goed? :confused:

<body>
<form>
<select name="merken">
<?php
$db = mysql_connect("localhost", "username", "password");
mysql_select_db ("test");
$result = mysql_query("SELECT Merk FROM merken", $db)
or die("Fout: ".mysql_error());
while ($list = mysql_fetch_assoc($result)) {
echo "<option>".$list["Merk"]."</option>\n";
}
?>
</select>
</form>
</body>
 
Bestaat er wel een database met de naam "test"?
Probeer anders eens dit
PHP:
mysql_select_db ("test") or die("Fout: ".mysql_error());
 
yes!!!! gelukt!! ik moest mijn accountnaam meenemen in de database naam (accountnaam_test).
hier wordt ik heel blij van!!!! :thumb::thumb::thumb:

Nu verder met goed proberen te begrijpen wat er gebeurt!!
En daarna de vervolgstappen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan