|
| 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
| |
|
|