Archief - PHP: Aanspreken dropdown HTML

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Zyh

Legacy Member
Gegroet,

Ik ben voor een schoolproject bezig met het maken van een nieuwssite. Tot nu toe (verbazingwekkend, want ik leer PHP nog maar een maand of 2) ging alles vrij goed, maar nu heb ik een probleem.

In het admin-gedeelte van de site is er een mogelijkheid om (uiteraard) nieuws toe te voegen. Daar kun je ook een categorie kiezen (binnenland, buitenland, politiek, economie en cultuur).

Deze functie lukt perfect, maar nu wil ik dat bijvoorbeeld een nieuwsbericht over politiek ook onder het gedeelte politiek staat. En dat lukt niet.

Hieronder code:

Formulier (auteur, titel, post, post2 worden aangesproken via db, cat niet.
Code:
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
  
      <p><b>Titel: </b><br />
 
      <input type="input" name="titel" size="25" maxlength="60" value="<?php if(isset($_POST['titel'])) echo $_POST['titel']; ?>" /></p>
 
      <p><b>Gebruikernaam: </b><br />

      <input type="input" name="auteur" size="15" maxlength="35" value="<?php if(isset($_POST['auteur'])) echo $_POST['auteur']; ?>" /></p>
  
      <p><b>Bericht: </b><br />

      <textarea rows="7" cols="55" name="post"><?php if(isset($_POST['post'])) echo $_POST['post']; ?></textarea></p>
      
      <p><b>Bericht2: </b><br />

      <textarea rows="7" cols="55" name="post2"><?php if(isset($_POST['post2'])) echo $_POST['post2']; ?></textarea></p>
      
      <p><b>Categorie:</b> <br /><select name="cat" id="username" value="<?php if(isset($_POST['cat'])) echo $_POST['cat']; ?>">
				<option value="Binnenland">Binnenland</option>
				<option value="Buitenland">Buitenland</option>
				<option value="Politiek">Politiek</option>
				<option value="Cultuur">Cultuur</option>
				<option value="Economie">Economie</option>
			</select></p>
      
 
      <p><input type="submit" name="submit" value="Voeg toe" /></p>

      <input type="hidden" name="submitted" value="TRUE" /></p>
 
      </form>

Buitenland.php (een categorie)
Code:
<?php
  
      include ('mysql_connect.php');	 
	  	  
	  $cat = $_POST['cat'];  
  
      $query = "SELECT id, titel, auteur, post, post2, DATE_FORMAT(datum, '%M %d, %Y') as sd FROM nieuws_info";	  
	  
	  [b]$query2 = "SELECT cat VALUES ('$cat')";
  
      $result = @mysql_query($query && $query2 );	
	  
	  
	  
	  if($cat = $_POST['Buitenland']) {  [/b]
		
      if ($result )
	  
	  {
  
      while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
	  		{
  
      $url = 'comments.php?id='.$row['id'];
	  
	  $url2 = 'news.php?id='.$row['id'];
  
      echo '<div id="post"><div id="titel"><p><b>'.$row['titel'].'</b></div>
  
      <div id="bericht">'.$row['sd'].'<br />
 
      Auteur : <b>'.$row['auteur'].'</b><br />	  
	  
	  
	  Categorie : <b>[b]'.$row['cat'].'[/b]</b><br /><br />
 
      '.$row['post'].'	  
	  
	  
	  <div><a href="read_more.php?id='.$row['id'].'" id="read_more">lees meer</a></div><br />
	  
	    
      <i>Comments zijn niet beschikbaar. Log in voor ze te zien of zelf te plaatsen.</i></div></div>';
	  
	  		}      
 
      } else {
 
      echo '<div id="comment">Geen nieuwe berichten</div>';

      } 
	  }

      ?>

Int vetgedrukt zit de fout, denk ik.
Als ge nog fouten ziet, zeg maar, kben nog ne leek, eh :D

Merci

frenzal

Legacy Member
je maakt een html fout, value is niet van toepassing bij dropdowns je moet per optie kijken of het overeenkomt met de waarde in kwestie en dan selected="selected" zetten

dJeez

Legacy Member
Naast wat frenzal zegt, nog het volgende :

PHP:
$result = @mysql_query($query && $query2 );
kan nooit werken uiteraard.

Dat je zomaar POST (of GET) variabelen rechtstreeks in queries gaat gebruiken is overigens ook een big no-no. Je moet die eerst controleren op hun geldigheid (validity check). En gebruik aub ofwel 1 van de vele object wrappers voor DB toegang (voor betere portabiliteit van je code) ofwel de mysql_real_escape_string functie om die parameters als het strings zijn daadwerkelijk in je queries te gaan gebruiken.

Verder verwissel je ook = met == in je code, oa.
PHP:
if($cat = $_POST['Buitenland']) {
wat overigens wellicht ook simpelweg
PHP:
if ($cat == 'Buitenland') {
moet worden, maar soit.

Kortom, je kan misschien toch beter eens de basis eens grondig aanleren in een goed boek of via een goede tutorial alvorens te pogen van ze toe te passen.

Zyh

Legacy Member
Ok, zal de dingskes hier es proberen en m'n kennis bijschaven :p

Merci voor antwoorden in ieder geval
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan