/ 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
Hvad er fejlen?
Fra : Lars Axberg


Dato : 11-01-03 15:59

Nej NG!

Jeg er lidt af en nybegynder i PHP og mysql, men sidder og er igang med, at
lave en slags telefonbog/adressebog.

Nu er problemet, at jeg har en tabel hvor i jeg kun har en kolonne (navn:
liste), og derfra har jeg nogle problemer med, at slette !

Nedenstående kode håndterer det input som er kommet fra en html form. Mit
problem område er udhævet!

<?php

require ("htmlfunktioner.php");

require ("mysql.php");



$id = $_REQUEST["id"];

$name = $_REQUEST["name"];

$adr = $_REQUEST["adr"];

$pnr = $_REQUEST["pnr"];

$city = $_REQUEST["city"];

$country = $_REQUEST["country"];

$tlf = $_REQUEST["tlf"];

$mob = $_REQUEST["mob"];

$epost = $_REQUEST["epost"];

$url = $_REQUEST["url"];

$kat = $_REQUEST["kat"];

$liste = $_REQUEST["liste"];

$knap = $_REQUEST["knap"];



if ("$knap" == "send")

{


$sql = "UPDATE telefon set name='$name', adr='$adr', pnr='$pnr',
city='$city',

country='$country', tlf='$tlf', mob='$mob', epost='$epost', url='$url',
kat='$kat' where id='$id'";



open_db();

sql_spoerg($sql);

close_db();


header("location: vis.php");

}

# Ja her er mit problem så! Jeg kan ikke se hvad der er galt men den gider
ikke og slette $liste!

#Det sjove er, at hvis der er nogle rækker i tabelen hvori der ingenting
står, så bliver de slettet!?

#Hjælp og forslag modtages med kysshånd!

elseif ("$knap" == "fjern")

{

$sql = "delete from grupper where liste = '$liste'";

open_db();

sql_spoerg($sql);

close_db();

header("location: update.php?id=$id");

}


else

{

$sql = "insert into grupper(liste)

values('$liste')";

open_db();

sql_spoerg($sql);

close_db();


header("location: update.php?id=$id");


}

?>



Med venlig hilsen

Lars Axberg




 
 
Niels Andersen (11-01-2003)
Kommentar
Fra : Niels Andersen


Dato : 11-01-03 17:28

Lars Axberg wrote in <FiWT9.9542$CG6.177839@news4.e.nsc.no>:
[...]
> $liste = $_REQUEST["liste"];
> $knap = $_REQUEST["knap"];
[...]
> # Ja her er mit problem så! Jeg kan ikke se hvad der er galt men den gider
> ikke og slette $liste!
> #Det sjove er, at hvis der er nogle rækker i tabelen hvori der ingenting
> står, så bliver de slettet!?
[...]
> elseif ("$knap" == "fjern")
> {
> $sql = "delete from grupper where liste = '$liste'";
> open_db();
> sql_spoerg($sql);

Prøv at indsætte dette:
echo "<p>$sql</p>";
Så kan du se hvad der bliver sendt til databasen. Ud fra det kan du (eller
vi) nok se hvad der er galt.

--
Mvh.
Niels Andersen
http://myplace.dk/articles/getpost/?lang=da

Thomas Lindgaard (11-01-2003)
Kommentar
Fra : Thomas Lindgaard


Dato : 11-01-03 18:07

Davs

"Lars Axberg" <omniSPAM@axberg.dk> wrote in
news:FiWT9.9542$CG6.177839@news4.e.nsc.no:

> Nu er problemet, at jeg har en tabel hvor i jeg kun har en kolonne
> (navn: liste), og derfra har jeg nogle problemer med, at slette !

Jeg har lige fundet en linies kode frem nede fra bunden af din mail:

> $sql = "delete from grupper where liste = '$liste'";

Hvilken værdi har $liste? Noget kunne tyde på at det er den tomme streng
eftersom dine tomme rækker bliver slettet. Prøv som før foreslået at
skrive din SQL ud, og tjek værdien af $liste:

print $sql;
var_dump($liste);

.... og så tillader jeg mig lige at komme med et par kommentarer til din
kode :)

1) Hvorfor bruge så megen tid og plads på at pille alle de værdier ud af
$_REQUEST? Du kan jo bare skrive:

$sql = "DELETE FROM grupper WHERE liste='$_REQUEST['liste']'";

2) Udkommentering med # er vist nok gammeldags - brug hellere // eller
/* davs */

3) ... og så lige en ting som jeg selv først for nylig er blevet
opmærksom på: Strenge omsluttet af " bliver fortolket, mens strenge
med ' omkring ikke gør - dvs. der er en performance-mæssig pointe i at
bruge ' hvis man ikke f.eks. har brug for at få værdien af en variabel
skrevet ind i strengen (som i: $hvem = 'dig'; print "hej med $hvem";)

Held og lykke med din kodning :)
/Thomas

Lars Axberg (11-01-2003)
Kommentar
Fra : Lars Axberg


Dato : 11-01-03 18:56


"Thomas Lindgaard" <thomas@it-snedkeren.BLACK_HOLE.dk> wrote in message
news:Xns9300B84B5C555thomasitsnedkerendk@62.243.74.162...
> Hvilken værdi har $liste? Noget kunne tyde på at det er den tomme streng
> eftersom dine tomme rækker bliver slettet. Prøv som før foreslået at
> skrive din SQL ud, og tjek værdien af $liste:
>
> print $sql;
> var_dump($liste);

Hmm... har prøvet at indsætte både: echo "<p>$sql</p>"; og print $sql;
var_dump($liste);

Resultatet er:
delete from grupper where liste = ''

delete from grupper where liste = ''string(0) ""

Så det tyder på, at det var en tom streng. Så jeg kiggede lige min html form
grundigt efter i sømmene og fandt fejlen!

Mange tak for hjælpen og tak for de gode tips med hensyn til kodning etc. !

Med Venlig Hilsen

Lars Axberg



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

Månedens bedste
Årets bedste
Sidste års bedste