Avatar billede carlo1 Nybegynder
02. august 2005 - 14:40 Der er 11 kommentarer og
1 løsning

Finde variabler med $_POST

Jeg har fået til opgave at gennemgå noget kode fra et hvor man kan bestille reservedele. Det skal kunne virke med register globals=off, så derfor har jeg lavet en hulens masse $_GET og $_POST, men nu er jeg stødt på et problem.
Her er et uddrag af en side:

-----
if (isset($submit)) {
$i=0;
    $db=new DB_Sql;
    $db->query("SELECT * FROM tabel1");
    while($db->next_record()){
        if(isset(${"ant".$i}) && ${"ant".$i}!=0){
            $str.="<tr><td>${"no".$i}</td><td>${"besk".$i}</td><td>${"ant".$i}</td></tr>\n";
        }
        $i++;
    }


<form action="<? print $PHP_SELF; ?>" method="post" name="reservedelsform">
<table width="100%" cellspacing="0" border="0" class="contentbox">
    <tr class="contenthead">
        <td>&nbsp;Bestillingsformular:
        </td>
        </tr><tr bgcolor="#ffffff"><td>
        <table width="100%" cellspacing="0" border="0" cellpadding="0">
        <tr bgcolor="#ffffff"><td><b>&nbsp;Nr:</b>
        </td><td><b>Beskrivelse:</b>
        </td><td><b>Antal:</b>
        </td><td>&nbsp;</td></tr><?php
        $db=new DB_Sql;
    $i=0;
        $db->query("SELECT * FROM tabel1");
        while($db->next_record()){
            ?><tr bgcolor="#ffffff"></td><td style="width:70">&nbsp;
                            <?php print $db->f(no); ?>
      <input type="hidden" name="no<?php print $i ?>" value="<?php print $db->f(no); ?>" style="width:70">
        </td><td style="width:250" >
                            <?php print $db->f(beskrivelse); ?>
      <input type="hidden" name="besk<?php print $i ?>" value="<?php print $db->f(beskrivelse); ?>" style="width:250">
        </td><td>
      <input type="text" name="ant<?php print $i ?>" value="<?php if(isset(${"ant".$i})) print ${"ant".$i}; ?>" style="width:40">
        </td>

Det er mest de steder hvor følgende linie optræder
(${"ant".$i})

jeg ikke kan hitte ud af. Linien betyder vel at "ant" skal sættes sammen med $i og at det så bliver til een variabel eller hvad?

Jeg må skulle sætte nogle _POST ind et par steder, men hvordan?
Avatar billede coderdk Praktikant
02. august 2005 - 14:49 #1
$PHP_SELF bør være $_SERVER['PHP_SELF']
${"ant".$i} bør nok være $_POST['ant' . $i]
Avatar billede carlo1 Nybegynder
02. august 2005 - 15:51 #2
Nja, den er ikke glad for dit forslag. Jeg får en blank skærm når jeg prøver at skrive det som i din 2. linie.
Avatar billede jaw Nybegynder
02. august 2005 - 18:05 #3
if (isset($submit)) {

skal være:

if(isset($_POST['submit'])) {

vil jeg gå ud fra - derfor du får en blank skærm, da $submit aldrig vil være sat...
Avatar billede carlo1 Nybegynder
03. august 2005 - 08:25 #4
Det er heller ikke det. Det er en syntaksfejl af en art, ligesom hvis man sætter et } for meget.
Avatar billede jaw Nybegynder
03. august 2005 - 12:45 #5
Hvis det er det, så vil du få en fejlmeddelelse, og så vil vi meget gerne se den...
Avatar billede coderdk Praktikant
03. august 2005 - 12:46 #6
Prøv at paste koden som den er nu, og giv os evt. fejlmeddelelser...
Avatar billede carlo1 Nybegynder
03. august 2005 - 15:41 #7
Jamen så får i hele koden (har dog lige ændret lidt, mailadresse o.lign.)
Som det er her, så sender den en mail når man trykker submit, men den i selve felterne hvor varenummer og beskrivelse skulle stå, er det tomt og jeg ved også hvorfor. Det bunder i at den ikke kan se noget indhold i den if(isset...osv), hvor jeg har skrevet LINIE 27 --> ud for. (Skal selvfølgeligt ikke stå der rigtigt.)
Hvis register globals er sat til virker det fint, så det er 'bare' lige den der variabel eller array eller hvad i vil kalde den, som driller.

<?php

require "access.inc";
require "funcs.inc";

$db=new DB_Sql;
$ac = new Access();
$ac->checkPerm("user");
$from=$ac->email;
$page = "varebestiling";
$thispage = $REQUEST_URI;
pagestart($ac);
if(isset($s)){
    $numb=$num+$nump;
}else{
    $numb=$num;
}
if (isset($_POST[submit])) {


    $str="<html><head></head><body><table border=\"1\"><tr><td><b>Varenummer:</b></td><td><b>Beskrivelse:</b></td><td><b>Antal:</b></td></tr>";

    $i=0;
    $db=new DB_Sql;
    $db->query("SELECT * FROM forbrugerstof");
    while($db->next_record()){
LINIE 27 -->    if(isset(${"ant".$i}) && ${"ant".$i}!=0){
            $str.="<tr><td>${"no".$i}</td><td>${"besk".$i}</td><td>${"ant".$i}</td></tr>\n";
        }
        $i++;
    }
    $db->query("SELECT * FROM users WHERE uname ='".$ac->uname."'");
    $db->next_record();
    $str.="</table><br><b>Bemærkninger:</b>&nbsp;".$_POST[bemarkninger]."<br><b>Leveringsdato:</b>&nbsp;".$_POST[levdato]."</body></html>";
   
    mail("modtager@xxxx.xx",    "Bestilling, nr ".$db->f(nummer),    $str,    "Return-Path: ".$from."\nContent-Type: text/html\nFrom: $ac->realname<".$ac->email.">"
            );       
?>
   
<table width="100%" cellpadding="2" cellspacing="0" class="contentbox">
  <tr class="contenthead">
        <td>&nbsp;Bestilling er modtaget.</td>
        <td align="right">&nbsp;
       
        </a></td>
    </tr>
    <tr>
        <td colspan="2" valign="top">
        Systemet har modtaget din bestilling.
        </td>
    </tr>
    <tr>
        <td colspan="2" class="divider"><img src="gfx/dot.gif" height="4" border="0"></td>
    </tr>
    <tr>
        <td colspan="2"><a href="index.php">
        <b>[ Varebestilling forside ]</b></a></td>
    </tr>
</table><br>   

<?php
}else{
?>

<table cellpadding="0" border="0" cellspacing="0" width="100%">
<tr class="header">
<td >
&nbsp;Bestilling af forbrugsstoffer:
</td><td align="right">&nbsp;
</td>
</tr>
</table><br>

<form action="<? print $PHP_SELF; ?>" method="post" name="reservedelsform">
<table width="100%" cellspacing="0" border="0" class="contentbox">
    <tr class="contenthead">
        <td>&nbsp;Bestillingsformular:
        </td>
        </tr><tr bgcolor="#ffffff"><td>
        <table width="100%" cellspacing="0" border="0" cellpadding="0">
        <tr bgcolor="#ffffff"><td><b>&nbsp;Nr:</b>
        </td><td><b>Beskrivelse:</b>
        </td><td><b>Antal:</b>
        </td><td>&nbsp;</td></tr><?php
        $db=new DB_Sql;
    $i=0;
        $db->query("SELECT * FROM forbrugerstof");
        while($db->next_record()){
            ?><tr bgcolor="#ffffff"></td><td style="width:70">&nbsp;
                            <?php print $db->f(no); ?>
      <input type="hidden" name="no<?php print $i ?>" value="<?php print $db->f(no); ?>" style="width:70">
        </td><td style="width:250" >
                            <?php print $db->f(beskrivelse); ?>
      <input type="hidden" name="besk<?php print $i ?>" value="<?php print $db->f(beskrivelse); ?>" style="width:250">
        </td><td>
      <input type="text" name="ant<?php print $i ?>" value="<?php if(isset(${"ant".$i})) print ${"ant".$i}; ?>" style="width:40">
        </td>
                    <td align="right">&nbsp;

                    </td></tr><?php
                    $i++;
        }
?></tr>
      </table></td></tr>
      <tr><td>
     
  <table><tr>   
        <td><b>Leveringsdato:</b> </td><td><input type="text" name="levdato"></td>
    </tr>
    <tr>
        <td><b>Bemærkninger:</b> </td><td><textarea name="bemarkninger" cols="30" rows="5" class="grey"></textarea></td>
    </tr>
    </tr></table>
   
    </td></tr> 
      <tr>
        <td class="divider"><img src="gfx/dot.gif" height="4" border="0"></td>
   
     
      <tr bgcolor="#ffffff">
      <td valign="bottom"><center>
            <input type="hidden" name="num" value="<?php print $_POST[numb] ?>">
      <input type="submit" name="submit" value="Afsend">&nbsp;<input type="button" value="Fortryd" onclick="window.location='index.php';">&nbsp;
</td></tr>
</tr></table></form>
<br>
<?php
}
pageend($ac, $thispage);
?>
Avatar billede coderdk Praktikant
03. august 2005 - 16:05 #8
Hmmm hvad er $s ?

$thispage = $REQUEST_URI;

skal være:

$thispage = $_SERVER['REQUEST_URI'];

og

if(isset(${"ant".$i}) && ${"ant".$i}!=0){

skal være:

if(isset($_POST["ant".$i]) && $_POST["ant".$i]!=0){

og

  $PHP_SELF

skal være

  $_SERVER['PHP_SELF']

Generelt skal

${"ant".$i}

bare laves om til

$_POST["ant".$i]

Og mere generelt, de linjer med

${"et_eller_andet".$i}

skal være:

$_POST["et_eller_andet".$i]
Avatar billede carlo1 Nybegynder
04. august 2005 - 09:04 #9
Coderdk, du er min helt. Nu virker det dælme.

Der skulle dog også et par {} rundt om, i linie 28 så det ser således ud
---
while($db->next_record()){
        if(isset($_POST["ant".$i]) && $_POST["ant".$i]!=0){
            $str.="<tr><td>{$_POST["no".$i]}</td><td>{$_POST["besk".$i]}</td><td>{$_POST["ant".$i]}</td></tr>\n";
        }
        $i++;

Og hvad angår det $s, så har det også undret mig, men jeg tror det er noget genbrug fra en anden side, som programmøren har glemt at fjerne.

Over and out.
Avatar billede carlo1 Nybegynder
04. august 2005 - 09:05 #10
Points
Avatar billede carlo1 Nybegynder
04. august 2005 - 09:05 #11
Hovsa, smid et svar coderdk
Avatar billede coderdk Praktikant
04. august 2005 - 11:40 #12
Ok :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester