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> Bestillingsformular: </td> </tr><tr bgcolor="#ffffff"><td> <table width="100%" cellspacing="0" border="0" cellpadding="0"> <tr bgcolor="#ffffff"><td><b> Nr:</b> </td><td><b>Beskrivelse:</b> </td><td><b>Antal:</b> </td><td> </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"> <?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?
Annonceindlæg tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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]
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.
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...
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.
03. august 2005 - 12:45
#5
Hvis det er det, så vil du få en fejlmeddelelse, og så vil vi meget gerne se den...
03. august 2005 - 12:46
#6
Prøv at paste koden som den er nu, og giv os evt. fejlmeddelelser...
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> ".$_POST[bemarkninger]."<br><b>Leveringsdato:</b> ".$_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> Bestilling er modtaget.</td> <td align="right"> </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 > Bestilling af forbrugsstoffer: </td><td align="right"> </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> Bestillingsformular: </td> </tr><tr bgcolor="#ffffff"><td> <table width="100%" cellspacing="0" border="0" cellpadding="0"> <tr bgcolor="#ffffff"><td><b> Nr:</b> </td><td><b>Beskrivelse:</b> </td><td><b>Antal:</b> </td><td> </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"> <?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"> </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"> <input type="button" value="Fortryd" onclick="window.location='index.php';"> </td></tr> </tr></table></form> <br> <?php } pageend($ac, $thispage); ?>
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]
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.
04. august 2005 - 09:05
#10
Points
04. august 2005 - 09:05
#11
Hovsa, smid et svar coderdk
04. august 2005 - 11:40
#12
Ok :)
Vi tilbyder markedets bedste kurser inden for webudvikling