|
| php vs mysql Fra : Thomas gade |
Dato : 09-11-05 21:50 |
|
en der vil fortælle mig hvorfor jeg får denne besked?
*Notice*: Use of undefined constant medlemsnummer - assumed
'medlemsnummer' in *c:\programmer\apache
group\apache\htdocs\sql\tilfoej.php* on line *22
*Og hvordan jeg får den til at gå væk?
Min Kode:
Medlemmet <? echo $_POST[navn]; ?> er tilføjet.
<?
if( isset($_POST[medlemsnummer]) &&
isset($_POST[navn]) &&
isset($_POST[vejnavn]) &&
isset($_POST[husnummer]) &&
isset($_POST[postnummer]) ){
mysql_connect('localhost', 'root', 'adgang');
mysql_select_db('forening');
mysql_query(
"INSERT INTO medlemmer" .
"(medlemsnummer, navn, vejnavn, husnummer, postnummer) " .
"VALUES ($_POST[medlemsnummer], ".
"'$_POST[navn]', '$_POST[vejnavn]', " .
"'$_POST[husnummer]', $_POST[postnummer])");
}
?>
Mvh Thomas
| |
Kim Schulz (09-11-2005)
| Kommentar Fra : Kim Schulz |
Dato : 09-11-05 22:09 |
|
On Wed, 09 Nov 2005 21:50:12 +0100
Thomas gade <dazzle@frac.invalid> wrote:
> en der vil fortælle mig hvorfor jeg får denne besked?
>
> *Notice*: Use of undefined constant medlemsnummer - assumed
> 'medlemsnummer' in *c:\programmer\apache
> group\apache\htdocs\sql\tilfoej.php* on line *22
>
> *Og hvordan jeg får den til at gå væk?
>
> Min Kode:
>
> Medlemmet <? echo $_POST[navn]; ?> er tilføjet.
> <?
> if( isset($_POST[medlemsnummer]) &&
> isset($_POST[navn]) &&
> isset($_POST[vejnavn]) &&
> isset($_POST[husnummer]) &&
> isset($_POST[postnummer]) ){
> mysql_connect('localhost', 'root', 'adgang');
> mysql_select_db('forening');
> mysql_query(
> "INSERT INTO medlemmer" .
> "(medlemsnummer, navn, vejnavn, husnummer, postnummer) " .
> "VALUES ($_POST[medlemsnummer], ".
> "'$_POST[navn]', '$_POST[vejnavn]', " .
> "'$_POST[husnummer]', $_POST[postnummer])");
> }
> ?>
prøv at ret
"VALUES ($_POST[medlemsnummer], ".
"'$_POST[navn]', '$_POST[vejnavn]', " .
"'$_POST[husnummer]', $_POST[postnummer])");
til
"VALUES (".$_POST["medlemsnummer"].", ".
"'".$_POST["navn"]."', '".$_POST["vejnavn"]."', " .
"'".$_POST["husnummer"]."', ".$_POST["postnummer"].")");
| |
Peter Brodersen (09-11-2005)
| Kommentar Fra : Peter Brodersen |
Dato : 09-11-05 22:13 |
|
On Wed, 9 Nov 2005 22:08:33 +0100, Kim Schulz <kim@schulz.dk> wrote:
>prøv at ret
> "VALUES ($_POST[medlemsnummer], ".
> "'$_POST[navn]', '$_POST[vejnavn]', " .
> "'$_POST[husnummer]', $_POST[postnummer])");
>
>til
>
> "VALUES (".$_POST["medlemsnummer"].", ".
> "'".$_POST["navn"]."', '".$_POST["vejnavn"]."', " .
> "'".$_POST["husnummer"]."', ".$_POST["postnummer"].")");
Den del er nu korrekt nok. Noticen omhandler fx:
if( isset($_POST[medlemsnummer]) &&
... idet "medlemsnummer" her blot bliver betragtet som en konstant. Kun
fordi denne konstant ikke findes, bliver det konverteret til en
string, og det er det, den notice omhandler.
Da man i sagens natur ikke kan have konstanter inde i strenge, opstår
samme problemstilling ikke ved fx "Jeg hedder $_POST[navn]".
--
- Peter Brodersen
| |
Peter Brodersen (09-11-2005)
| Kommentar Fra : Peter Brodersen |
Dato : 09-11-05 22:10 |
|
On Wed, 09 Nov 2005 21:50:12 +0100, Thomas gade <dazzle@frac.invalid>
wrote:
> if( isset($_POST[medlemsnummer]) &&
> isset($_POST[navn]) &&
> isset($_POST[vejnavn]) &&
> isset($_POST[husnummer]) &&
> isset($_POST[postnummer]) ){
I alle disse tilfælde skal du sætte plinger rundt om dine key-navne,
fx:
if( isset($_POST['medlemsnummer']) &&
isset($_POST['navn']) &&
...
Ellers bliver de opfattet som konstanter, med risiko for at de bliver
opfattet som andre værdier.
Derimod skal du ikke sætte plinger, når du henviser til dem inde i en
string, så følgende kan du lade være uberørt:
> mysql_query(
> "INSERT INTO medlemmer" .
> "(medlemsnummer, navn, vejnavn, husnummer, postnummer) " .
> "VALUES ($_POST[medlemsnummer], ".
> "'$_POST[navn]', '$_POST[vejnavn]', " .
> "'$_POST[husnummer]', $_POST[postnummer])");
--
- Peter Brodersen
| |
Bertel Lund Hansen (09-11-2005)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 09-11-05 22:16 |
|
Thomas gade skrev:
> en der vil fortælle mig hvorfor jeg får denne besked?
Fordi du mangler anførselstegn.
medlemsnummer (og de andre tilsvarende) forsøges behandlet som en
konstant. Da den er udefineret, går det galt.
> Min Kode:
> Medlemmet <? echo $_POST[navn]; ?> er tilføjet.
> <?
> if( isset($_POST[medlemsnummer]) &&
if( isset($_POST['medlemsnummer']) &&
> isset($_POST[navn]) &&
isset($_POST['navn']) &&
osv.
--
Bertel
http://bertel.lundhansen.dk/ http://fiduso.dk/
| |
Thomas gade (09-11-2005)
| Kommentar Fra : Thomas gade |
Dato : 09-11-05 22:30 |
|
Bertel Lund Hansen wrote:
>Thomas gade skrev:
>
>
>
>>en der vil fortælle mig hvorfor jeg får denne besked?
>>
>>
>
>Fordi du mangler anførselstegn.
>
>medlemsnummer (og de andre tilsvarende) forsøges behandlet som en
>konstant. Da den er udefineret, går det galt.
>
>
>
Tak til Bertel og Peter nu kører det fint.
Har dog et ekstra spørgsmål.
Hvordan forståes en konstant i denne sammenhæng?
Mvh Thomas
| |
Peter Brodersen (09-11-2005)
| Kommentar Fra : Peter Brodersen |
Dato : 09-11-05 23:08 |
|
On Wed, 09 Nov 2005 22:30:19 +0100, Thomas gade <dazzle@frac.invalid>
wrote:
>Har dog et ekstra spørgsmål.
>Hvordan forståes en konstant i denne sammenhæng?
Du kan tjekke manualen omhandlende konstanter:
http://dk2.php.net/manual/en/language.constants.php
Der findes PHPs prædefinerede konstanter, og så findes der dem, man
selv opretter med funktionen define()
Eksempel:
<?php
print hilsen; // outputter "hilsen" og notice af førnævnte grunde
define("hilsen", "Velkommen");
print hilsen; // outputter "Velkommen"
$array = array(
"hilsen" => "foo",
"Velkommen" => "bar"
);
print $array[hilsen]; // outputter "bar"
print $array['hilsen']; // outputter "foo"
?>
--
- Peter Brodersen
| |
Thomas gade (09-11-2005)
| Kommentar Fra : Thomas gade |
Dato : 09-11-05 23:19 |
|
Peter Brodersen wrote:
>On Wed, 09 Nov 2005 22:30:19 +0100, Thomas gade <dazzle@frac.invalid>
>wrote:
>
>
>
>>Har dog et ekstra spørgsmål.
>>Hvordan forståes en konstant i denne sammenhæng?
>>
>>
>
>Du kan tjekke manualen omhandlende konstanter:
> http://dk2.php.net/manual/en/language.constants.php
>
>Der findes PHPs prædefinerede konstanter, og så findes der dem, man
>selv opretter med funktionen define()
>
>Eksempel:
>
><?php
>print hilsen; // outputter "hilsen" og notice af førnævnte grunde
>define("hilsen", "Velkommen");
>print hilsen; // outputter "Velkommen"
>
>$array = array(
> "hilsen" => "foo",
> "Velkommen" => "bar"
>);
>
>print $array[hilsen]; // outputter "bar"
>print $array['hilsen']; // outputter "foo"
>?>
>
>
>
Takker, vil kigge næremere på det.
Mvh Thomas
| |
|
|