/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
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

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste