/ 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
Data sendes men ender ikke i mySQL
Fra : ck1973@gmail.com


Dato : 07-09-06 15:14

Hej

Jeg prøver at sende data fra en tilmeldingsform til min databse, men
databasen registrerer ikke oplysningerne, kan I hjælpe?

Formen ser således ud:
<form method="post" action="indmeldelses_data.php" id="indmeldelse">

      <p><label for="fornavn">Fornavn:</label><br />
      <input type="text" id="fornavn" name="fornavn"></p>
      <p><label for="efternavn">Efternavn:</label><br />
      <input type="text" id="efternavn" name="efternavn"></p>
      <p><label for="adresse">Adresse:</label><br />
      <input type="text" id="adresse" name="adresse"></p>
      <p><label for="by">By:</label><br />
      <input type="text" id="by" name="by_"></p>
      <p><label for="postnr">postnr:</label><br />
      <input type="text" id="postnr" name="postnr"></p>
      <p><label for="email">Email:</label><br />
      <input type="text" id="email" name="email"></p>
      <p><label for="telefonnr">Telefonnr:</label><br />
      <input type="text" id="telefonnr" name="telefonnr"></p>

<p>Hvilken aldersgruppe er dit barn i?<p>

      <p><label for="bh_3kl">Børnehaveklassen - 3. klasse"</label>
      <input type="checkbox" id="bh3kl" name="bh3kl"><br />

      <label for="4kl_6kl">4. klasse - 6. klasse"</label>
      <input type="checkbox" id="3kl6kl" name="3kl6kl"></p>

      <p><input type="submit" value="Send" id="afsender"></p>
</form>


Og php-koden der skal overføre data ser således ud:

<?
$username="xxx";
$password="yyy";
$database="";

$fornavn=$_request["fornavn"];
$efternavn=$_request["efternavn"];
$adresse=$_request["adresse"];
$by_=$_request["by_"];
$postnr=$_request["postnr"];
$email=$_request["email"];
$telefonnr=$_request["telefonnr"];
$bhsmaa=$_request["bh3kl"];
$klstore=$_request["3kl6kl"];

mysql_connect('ooo.ooo.dk',$username,$password);
@mysql_select_db($database) or die( "Unable to select database");

$query = "INSERT INTO ibf1 VALUES
('','$fornavn','$efternavn','$adresse','$postnr','$by_','$email','$telefonnr','$klsmaa','klstore')";
mysql_query($query);

mysql_close();
?>

VH
Christopher


 
 
Ove Lie (07-09-2006)
Kommentar
Fra : Ove Lie


Dato : 07-09-06 15:37

<ck1973@gmail.com> skrev i melding
news:1157638468.955292.64430@d34g2000cwd.googlegroups.com...

her åner du basen:
mysql_connect('ooo.ooo.dk',$username,$password);
@mysql_select_db($database) or die( "Unable to select database");

Her lager d utekst i en phpvariabel med navn $query:
$query = "INSERT INTO ibf1 VALUES
('','$fornavn','$efternavn','$adresse','$postnr','$by_','$email','$telefonnr
','$klsmaa','klstore')";

her skriver den (kanskje) i basen:
mysql_query($query);

Her lukkes den:
mysql_close();


Hva med å få en feilmelding når du skriver?

function feiltekst($feil) {
echo "<P>$feil</P>";
if ($mysql_feil = mysql_error()) {
echo "<BR>Feilen er: <EM>$mysql_feil</EM>";
}exit;}

$resultat = mysql_query($query);
if(!$resultat) {feiltekst("Kunne ikke skrive: <em>$query</em>");}

Da får du vite om det er en feil og kanskje også hva som er feil.






Jesper Brunholm (07-09-2006)
Kommentar
Fra : Jesper Brunholm


Dato : 07-09-06 16:25

ck1973@gmail.com skrev:
> $fornavn=$_request["fornavn"];

Du laver forhåbentlig lidt tjek på hvad der ligger i $_REQUEST (med
stort!!) inden du smider i databasen? ellers er risikoen for indbrud
lovlig stor. Mere info: Google -> "sql injection database"

> mysql_connect('ooo.ooo.dk',$username,$password);
> @mysql_select_db($database) or die( "Unable to select database");

Det giver ikke ret god mening at undertrykke fejlmeddelelser (med @) og
specificere hvilken fejlmeddelelse du vil have - du er nødt til at
vælge. Det smarteste er at sørge for at almindelige brugere ikke får
fejlmeddelelser, mens du selv gør det, se evt. mere om dette i
<http://groups.google.com/group/dk.edb.internet.webdesign.serverside.php/browse_thread/thread/f938cb1bb084f6f8/6d1473d50324b0bc#anchor_9d62029427353a3c>

> $query = "INSERT INTO ibf1 VALUES
> ('','$fornavn','$efternavn','$adresse','$postnr','$by_','$email','$telefonnr','$klsmaa','klstore')";

Prøv en "echo $query; " her

> mysql_query($query);

fejl! sørg altid for at få en fejlmeddelelse når du arbejder med databasen.
mysql_query($query)or trigger_error(mysql_error());
eller
mysql_query($query)or die("Fejl ved inddatering. Fejl: ".mysql_error());

- eller lignende, hjælper dig meget med at forstå hvad der går galt!

mvh

Jesper Brunholm

ck1973@gmail.com (07-09-2006)
Kommentar
Fra : ck1973@gmail.com


Dato : 07-09-06 21:51

Tak for begge jeres svar.

Jeg har indsat kode, som du foreslog mig :

> Hva med å få en feilmelding når du skriver?
>
> function feiltekst($feil) {
> echo "<P>$feil</P>";
> if ($mysql_feil = mysql_error()) {
> echo "<BR>Feilen er: <EM>$mysql_feil</EM>";
> }exit;}
>
> $resultat = mysql_query($query);
> if(!$resultat) {feiltekst("Kunne ikke skrive: <em>$query</em>");}
>
> Da får du vite om det er en feil og kanskje også hva som er feil.

Resultatet er følgende:

Kunne ikke skrive: INSERT INTO ibf1 VALUES
('','','','','','','','','','klstore')
Feilen er: No Database Selected

Hmm, det forstår jeg ikke. Tabellen er oprettet og har de rigtige
values. Hvad gør jeg forkert? Jeg er newbie indenfor mysql. Og "ibf1"
er tabellens navn!


/Christopher


ck1973@gmail.com (07-09-2006)
Kommentar
Fra : ck1973@gmail.com


Dato : 07-09-06 22:09

Jesper Brunholm skrev:
> Du laver forhåbentlig lidt tjek på hvad der ligger i $_REQUEST (med
> stort!!) inden du smider i databasen? ellers er risikoen for indbrud
> lovlig stor. Mere info: Google -> "sql injection database"

Tænker du, at jeg skal udskifte REQUEST med POST? Eller?


> > @mysql_select_db($database) or die( "Unable to select database");
>
> Det giver ikke ret god mening at undertrykke fejlmeddelelser (med @) og
> specificere hvilken fejlmeddelelse du vil have - du er nødt til at
>vælge.

OK.

> sørg altid for at få en fejlmeddelelse når du arbejder med databasen.
> mysql_query($query)or trigger_error(mysql_error());
> eller
> mysql_query($query)or die("Fejl ved inddatering. Fejl: ".mysql_error());
>
> - eller lignende, hjælper dig meget med at forstå hvad der går galt!

Ok, det kan jeg godt se. Vidste bare ikke hvordan man gjorde. Er vant
til ASP.

/Christopher


Jesper Brunholm (07-09-2006)
Kommentar
Fra : Jesper Brunholm


Dato : 07-09-06 23:25

ck1973@gmail.com skrev:
> Jesper Brunholm skrev:
>> Du laver forhåbentlig lidt tjek på hvad der ligger i $_REQUEST (med
>> stort!!) inden du smider i databasen? ellers er risikoen for indbrud
>> lovlig stor. Mere info: Google -> "sql injection database"
>
> Tænker du, at jeg skal udskifte REQUEST med POST? Eller?

$_REQUEST er godt nok (får du stadig tomme felter når du skriver den med
stort?), men du skal sikre dig imod sql injection, gerne ved at bruge
funktionen mysql_real_escape_string() på hver variabel, efter at du har
forbundet til databasen.

>> sørg altid for at få en fejlmeddelelse når du arbejder med databasen.
>> mysql_query($query)or trigger_error(mysql_error());
>> eller
>> mysql_query($query)or die("Fejl ved inddatering. Fejl: ".mysql_error());
>>
>> - eller lignende, hjælper dig meget med at forstå hvad der går galt!
>
> Ok, det kan jeg godt se. Vidste bare ikke hvordan man gjorde. Er vant
> til ASP.

fino, så har du styr på det nu

mvh

Jesper Brunholm

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste