Archief - PHP: Form met id's voert niet uit

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.

Eduw

Legacy Member
Wat is hier fout aan?

PHP:
<? include_once ("config.php");
   $mysql_connection = mysql_connect ($dbhost, $dbuser, $dbpasswd) or die ("Connection failed");
   mysql_select_db ($dbname) or die ("Selecting database failed");
	$query = mysql_query("SELECT * FROM pics WHERE id='". $id ."'");

	$result = mysql_fetch_array($query);
?>

<form name="test" action="test.php" method="post"> 
<select name="event" onchange="MM_jumpMenu('parent',this,0)"> 

<?php 
$query = "SELECT event FROM pics"; 
$sql = mysql_query($query); 
while($record = mysql_fetch_object($sql)) { 
?> 
<option value="test.php?id=<?php echo $record->id; ?>"> 
<?php echo $record->event;?> 
                          </option> 
						  <?php } ?>
                          </select>
                    </form> 
<?
echo $result['event'] ."<br />";
echo $result['maand'] ."<br />";
?>

Een voorbeeld op http://cock-front.fubart.be/new/test.php

thx

orez

Legacy Member
We hebben een PHP Tag die dit net iets overzichtelijker weergeeft...
Als gij uw probleem niet uitlegt kunnen wij hier weinig doen.

Parse error op lijn 46, in de code die jij hier plaatst tel ik met moeite 20 lijnen, hoe verwacht je dan feitelijk dat je deftig geholpen wordt? of moet iedereen iedere letter van je code gaan lezen?

*edit:

Om te beginnen ==> <? ?> is fout en wordt afgeraden, en zal op de meeste servers niet werken, waarom --> verwarring met xml. gebruik <?php ?> (het is zelf een must dit zo te doen!) Nu gebruik je zelfs beiden door elkaar, waar is de structuur naartoe?

gebruike REQUIRE_once voor uw configfile te includen... dit is toch een zeer belangrijke file. Als require_once uw file niet vind zal hem stoppen met excuten, met include_once gaat hij verder executen, en dan krijg je 1 grote pagina's vol met errors..

gebruik mysql_fetch_assoc ipv mysql_fetch_object, mysql_fetch_object is zowat de zwaarste in minst performante manier van ophalen die je je maar kan voorstellen. (opnieuw gebruik je er hier trouwens door elkaar, mysql_fetch_object & mysql_fetch_array, waarbij beiden eigenlijk niet nodig zijn voorwat je feitelijk gebruikt.)

voor uw sql statements leer uw velden opvragen ! try to avoid * dus altijd, SELECT id, event FROM t_event, vraag enkel hetgeen op die nodig is! (opnieuw veel performanter.) geef ook per tabel een duidelijkere naam, noem het hier bijvoorbeeld eventid ipv id... als ge zo 12 tabellen hebt en ge noemt iedere primary key id, en je moet met joins beginnen werken... wat een chaos zal dat niet opleveren?

nog een puntje... je doet helemaal geen controle op je sql statements? geen if of die's ? en je id zomaar gaan inlezen bij die mysql query, zonder controle dat die id ook effectief moet bestaan...?

als je met je form dezelf pagina opvraagt gebruik dan ook $_SERVER["PHP_SELF"] ipv zelf test.php te gaan definieren.. als ge uw paginanaam wilt veranderen, moete ook in uw code opnieuw prutsen, met PHP_SELF niet.

in feite zie ik niet echt iets verkeerd, behalve een enorm vuile messy slechte code... probeer mss eerst eens wat deftigere php code te schrijven... waarschijnlijk zal dat op zich al redelijk wat fouten oplossen. Dit hierboven is hele reeks puntjes en dat op slechts een 20tal lijntjes ! Dit zou genoeg moeten zeggen... probeer bovenstaande tips eens op te volgen en kom dan eens terug indien uw probleem nog altijd niet zou opgelost zijn

Eduw

Legacy Member
komt omdat ik met stukje ander code bezig ben ant sukkelen en vergeten dat da ier nog stond

PHP:
<html>

<head>
<title>test</title>

<script language="javascript">

function go()
{
	box = document.forms[0].navi;
	destination = box.options[box.selectedIndex].value;
	if (destination) location.href = destination;
}
</script>

</head>

<body>

<select name=navi onChange="go()">
<option value='test.php'>--- Selecteer een maand ---</option>
<option value="test.php?m=1">Januari</option>
<option value="test.php?m=2">Februari</option>
<option value="test.php?m=3">Maart</option>
<option value="test.php?m=4">April</option>
<option value="test.php?m=5">Mei</option>
<option value="test.php?m=6">Juni</option>
<option value="test.php?m=7">Julli</option>
<option value="test.php?m=8">Augustus</option>
<option value="test.php?m=9">September</option>
<option value="test.php?m=10">Oktober</option>
<option value="test.php?m=11">November</option>
<option value="test.php?m=12">December</option>

</select>

<?php
	$maand = $_POST["m"];
	include_once ("config.php");
   $mysql_connection = mysql_connect ($dbhost, $dbuser, $dbpasswd) or die ("Connection failed");
   mysql_select_db ($dbname) or die ("Selecting database failed");
	$query = mysql_query("SELECT * FROM pics WHERE maand='". $m ."'");
 	while($data = @mysql_fetch_array($res))
   	{
	$result = mysql_fetch_array($query);
	echo "".$result['event']."<br/>";
	echo "".$result['maand']."<br/>";
	}
	// ton maakje in de where van je sql maand=$m (gaat da wel moeten omzetten lik dat in je database staat wsl)
	// en een loopke van je $result en ge toont alle events
?>

</body>
</html>

taLa.

Legacy Member
Uw code is trouwens ook zeer onveilig. Zomaar gebruik maken van een $_GET variabele in uw SQL string met register_globals aan, foei !

Eduw

Legacy Member
Mja das de volgende stap wel hoor.
Kan er niet genoeg van daarvoor...
wil gewoon me foto's per maand doen weergeven

Fr3aK

Legacy Member
Je zet:

PHP:
$maand = $_POST["m"];
maar je gebruikt achteraf "$m":

PHP:
$query = mysql_query("SELECT * FROM pics WHERE maand='". $m ."'");
Misschien is dat de fout?

Radiance

Legacy Member
PHP:
while($data = @mysql_fetch_array($res))
En waar komt die $res ineens vandaan?
Je bent daar 2 queries onder mekaar aan 't draaien trouwens.

Om u misschien wat te helpen, meest basic manier om zo'n dingen op te vragen :
PHP:
$sql = "SELECT veld1, veld2 FROM tabel;";
if($result = mysql_query($sql))
{
  while($row = mysql_fetch_assoc($result)
  {
    echo('Veld 1 : ' . $row['veld1']);
  }
}

Wat je hier doet :
1. SQL code opstellen, om te bepalen wat we gaan opvragen uit welke tabel
2. alle relevante velden/rijen ophalen uit de database en die in $result steken
3. als er rijen zijn : $result rij per per rij doorlopen, elk veld van die rij in de array $row steken
4. velden uit de rij tonen.
En voor de rest, lees orez's post nog maar ne keer of 5 door.
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