Archief - Variabele post-buttons!

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.

Deadangel

Legacy Member
Mijn code errort als ik op een post-knop druk, iemand die weet hoe 't wél moet ?
PHP:
<?php if(isset($_GET['nr'])) { 
 if($_SERVER['REQUEST_METHOD']=='POST') { 
 
 	$nr = $_GET['nr'];
	$klas = $_GET['klas'];
	$cat= $_GET['cat'];
				  $query = mysql_query("SELECT * FROM materiaal WHERE rubriek='" . $cat . "'") or die(mysql_error());
				$obj = mysql_fetch_object($query);
			echo'<BR><div class="blok">';
					echo'Nr. ';
					echo $nr;
					echo' van klas ';
					echo $klas;
					echo' heeft het volgende materiaal mee: ';
					echo'<BR>';
			foreach($_POST['gekozen'] as $obj->Materiaal_ID) {
					echo '<b>';
					echo  $voorwerpen[$obj->Materiaal_ID];
					echo '</b><br></div><br>';			}
		
	} 
	}
?>
<form method="post">
<center>
  <table width="376">
    <tr>
      <th width="76" bgcolor="#666666" scope="col">Voorwerp</th>
      <th width="44" bgcolor="#666666" scope="col">Aantal</th>
      <?php if(isset($_GET['nr'])) { ?> <th width="150" bgcolor="#666666" scope="col">Kiezen</th><?php } ?>
    </tr>
    <?php 
		$cat= $_GET['cat'];
  $query = mysql_query("SELECT * FROM materiaal WHERE rubriek='" . $cat . "'") or die(mysql_error());
    while ($obj = mysql_fetch_object($query)) {
				?>
    <tr>
      <td><center>
       <?php echo $obj->Omschrijving; ?>
      </center></td>
      <td><center>
        <?php echo $obj->Aantal_beschikbaar; ?>
      </center></td>
     <?php if(isset($_GET['nr'])) { ?> <td><center>
        <input type="submit" value="<?php echo $obj->Materiaal_ID; ?>" />
      </center></td><?php } ?>
    </tr>
    <?php
  }
  ?>
  </table>
 </form>
 <?php }
 }
 
?>

adrianhates

Legacy Member
als je op een post knop drukt zal je nooit in je code komen aangezien je eerst kijkt of die get wel gezet is :s

<?php if(isset($_GET['nr'])) {

}
?>

Je zal nooit hierin komen als je method="post" gebruikt

Deadangel

Legacy Member
Ja, nee die "nr" haalt em uit de url he..
( die word aangegeven door 'n andere form dat ik include.. maar das eigenlijk totaal geen probleem, enkel die variabele submit-knop :)

adrianhates

Legacy Member
Deadangel zei:
Ja, nee die "nr" haalt em uit de url he..
( die word aangegeven door 'n andere form dat ik include.. maar das eigenlijk totaal geen probleem, enkel die variabele submit-knop :)

welke error ?

Jerre Muesli

Legacy Member
als ik een form zie zonder action-tag dan denk ik zowieso al 0_o oink

passero

Legacy Member
zonder action tag dan post hij dat gewoon naar zijn de huidige URL.

IN heel uw form zie ik maar 1 formelement:

<input type="submit" value="<?php echo $obj->Materiaal_ID; ?>"

En dat heeft dan nog geen naam...

Ik vermoed dus dat
foreach($_POST['gekozen'] as $obj->Materiaal_ID)
Niet zal werken aangezien je geen element hebt met de naam "gekozen".
$_POST['gekozen'] zal dus leeg zijn en die loop zal dus niet worden uitgevoerd

Jerre Muesli

Legacy Member
Ja sure, maar het action attribuut is gewoon required voor DTD.
Ik zeg niet dat daar de fout ligt.

Curahee Q

Legacy Member
- Het is <br /> en niet <BR> of <br>
- Aangezien je </div> in je foreach hebt staan zal je dus meerdere keren je div afsluiten
- Gebruik van <p>-tags in plaats van <br /> tags
- De bold-tag (<b>) wordt al een tijdje niet meer gebruikt, deze is vervangen door <strong>test</strong>
- Waarom zoveel echo's? Dat kan allemaal in 1 regel:

PHP:
<?php
echo '<div class="blok">
                <p>Nr. ' . $nr . ' van klas ' . $klas . ' heeft het volgende materiaal mee:</p>
      </div>';
?>

Haal die foreach is weg hé, wat zegt hij dan?

Deadangel

Legacy Member
Code:
 if($_SERVER['REQUEST_METHOD']=='POST') { 
 
 	$nr = $_GET['nr'];
	$klas = $_GET['klas'];
	$cat= $_GET['cat'];

			echo '<div class="blok">
                <p>Nr. ' . $nr . ' van klas ' . $klas . ' heeft het volgende materiaal mee:</p>' . gekozen[$obj->Materiaal_ID]; . '</div>';			}
		
	} 
	}
?>


<form method="post">
<center>
  <table width="376">
    <tr>
      <th width="76" bgcolor="#666666" scope="col">Voorwerp</th>
      <th width="44" bgcolor="#666666" scope="col">Aantal</th>
      <?php if(isset($_GET['nr'])) { ?> <th width="150" bgcolor="#666666" scope="col">Kiezen</th><?php } ?>
    </tr>
    <?php 
		$cat= $_GET['cat'];
  $query = mysql_query("SELECT * FROM materiaal WHERE rubriek='" . $cat . "'") or die(mysql_error());
    while ($obj = mysql_fetch_object($query)) {
				?>
    <tr>
      <td><center>
       <?php echo $obj->Omschrijving; ?>
      </center></td>
      <td><center>
        <?php echo $obj->Aantal_beschikbaar; ?>
      </center></td>
     <?php if(isset($_GET['nr'])) { ?> <td><center>
        <input type="submit" value="Selecteer" name="gekozen[<?php echo $obj->Materiaal_ID; ?>]""/>
      </center></td><?php } ?>
    </tr>
    <?php
  }
  ?>
  </table>
 </form>

Zo of wat ?
Haha, dat werkt helemaal ni hé, hoe weet hij nu welke post-buton ik heb ingedrukt ? Want het zijn er een variabel aantal

Curahee Q

Legacy Member
Lees mijn post ne keer tegoei a.u.b. voor ge mij begint uit te lachen. In uw eerste post zegt ge dat uw code errort. Hieronder versta ik dat er een PHP-error komt, of gewoon helemaal niks? Om nu uit te maken of het enkel aan je foreach-loop ligt kan je deze TIJDELIJK weghalen om te zien of de rest van je code wel werkt zoals het hoort.

Doet deze het wel, kan je verder een oplossing zoeken naar je foreach-probleem.

En zet een action-attribute in je form want zoals al eerder aangegeven moet dit volgens de regels.

Deadangel

Legacy Member
Ha, ik dacht dat ge bedoelde dat het opgelost was als ik die foreach definitief weghaalde.. Excuses

Jerre Muesli

Legacy Member
grappig als je hulp vraagt en mensen uitlacht die je helpen

Deadangel

Legacy Member
x4xk3 zei:
grappig als je hulp vraagt en mensen uitlacht die je helpen

He, Ho!
Ten eerste dacht ik dat hij dat bedoelde als oplossing.
En ik lachte dus met de oplossing, en niet met de persoon. ;)

Curahee Q

Legacy Member
Excuses aanvaard :).

Maar dan nu, werkt de code dan voor de rest wel?

Deadangel

Legacy Member
Ja, hij geeft bij het laden dit aan: "Invalid argument supplied for foreach()"

( Ik moet namelijk een post-buton in drukken om dit scherm te krijgen. Waarschijnlijk word deze hierbij gerekend: if($_SERVER['REQUEST_METHOD']=='POST')

Maar goed, als ik op post druk; krijg ik gewoon te zien:

"Nr. 1 van klas IICT heeft het volgende materiaal mee:"
en staat daaronder niets.

passero

Legacy Member
Ik denk dat dit de fout is:

foreach($_POST['gekozen'] as $obj->Materiaal_ID)

Die $obj->Materiaal_ID mag daar toch niet? Ge moet een gewone variabele zetten:

foreach($_POS['gekozen'] as $key => $value)
{
....
}

$key is dan de index van u waarde en $value is dan de effectieve waarde...

PHP: foreach - Manual

Deadangel

Legacy Member
Dan krijg ik deze fout:


Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\Layout\mat.php on line 44

Zero Grav

Legacy Member
passero zei:
In heel uw form zie ik maar 1 formelement:

<input type="submit" value="<?php echo $obj->Materiaal_ID; ?>"

En dat heeft dan nog geen naam...

Ik vermoed dus dat
foreach($_POST['gekozen'] as $obj->Materiaal_ID)
Niet zal werken aangezien je geen element hebt met de naam "gekozen".
$_POST['gekozen'] zal dus leeg zijn en die loop zal dus niet worden uitgevoerd

Als ge hier niet op gaat reageren gaat het niet opgelost geraken. Zolang wij niet weten wat voor element gekozen is en hoe gij het verwerkt gaat het niet werken. We moeten dus een formelement gaan zien met de naam gekozen[].

En sowieso is $obj->Materiaal_ID daar fout. Zie ook de andere opmerking van passero.

--

'k Heb ook zo het gevoel dat gij gewoon die data uit uw database wilt halen en helemaal niet uit een post element? Dus dat gij data UIT $obj->Materiaal_ID probeert te halen? Dan zijt ge op deze manier fout bezig, want foreach op die manier probeert de data van $_POST['gekozen'] in $obj->Materiaal_ID te pompen.
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