phun-ky Skrevet 6. oktober 2004 Del Skrevet 6. oktober 2004 (endret) har denne koden på sletting av produkter, og den klarer å slette produktet, men jeg får ut ERROR bare.. ikke SUKSESS.. : <? //deklarering av variabler $todo = $_POST['prodid']; $dato = date("y.d.m, H:i:s", time()); echo ($todo); $sql = "DELETE FROM produkt WHERE produktID = $todo"; //database snakk include("db.php"); $cxn = @ConnectToDb($dbServer, $dbUser, $dbPass, $dbName); mysql_query($sql); $sql = ""; $sql = "SELECT * FROM produkt WHERE produktID = $todo"; mysql_query($sql); if (empty($sql)){ echo "SUKSESS"; } else { echo "ERROR"; } mysql_close(); ?> Endret 6. oktober 2004 av phun-ky Lenke til kommentar
phun-ky Skrevet 6. oktober 2004 Forfatter Del Skrevet 6. oktober 2004 (endret) uææh, fant feilen med en gang.. EDIT: trodde jeg.. nå får jeg: 5 Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /hsphere/local/home/phun-ky/umedia.no/admin/a_prod_slett.php on line 17 SUKSESS som output.. <? //deklarering av variabler $todo = $_POST['prodid']; $dato = date("y.d.m, H:i:s", time()); echo ($todo); $sql = "DELETE FROM produkt WHERE produktID = $todo"; //database snakk include("db.php"); $cxn = @ConnectToDb($dbServer, $dbUser, $dbPass, $dbName); mysql_query($sql); $sql = ""; $sql= mysql_query("SELECT * FROM produkt WHERE produktID = '$todo'"); $numrows = mysql_num_rows($sql); if($numrows == 1) { echo "ERROR"; } else { echo "SUKSESS"; } mysql_close(); ?> Endret 6. oktober 2004 av phun-ky Lenke til kommentar
EirikO Skrevet 6. oktober 2004 Del Skrevet 6. oktober 2004 if (empty($sql)){echo "SUKSESS"; } else { echo "ERROR"; } Dette vil vel bare sjekke om variablen sql er tom eller ikke? Variabelen sql er jo ikke tom.... Lenke til kommentar
phun-ky Skrevet 6. oktober 2004 Forfatter Del Skrevet 6. oktober 2004 hvis variabelen er tom så burde den første spørringen ha slettet produktet? se på den nye.. Lenke til kommentar
phun-ky Skrevet 6. oktober 2004 Forfatter Del Skrevet 6. oktober 2004 løste det.... dreamweaver føkka ftp'en.. Lenke til kommentar
robgar Skrevet 6. oktober 2004 Del Skrevet 6. oktober 2004 <? //deklarering av variabler $sql = "DELETE FROM produkt WHERE produktID = $todo"; //database snakk mysql_query($sql); $sql = ""; $sql = "SELECT * FROM produkt WHERE produktID = $todo"; mysql_query($sql); if (empty($sql)){ echo "SUKSESS"; } else { echo "ERROR"; } mysql_close(); ?> [OFFTOPIC] Hei, du har definert variabelen $sql tre ganger. Hva er hensikten med det, da du kun sletter den raden. etter det finnes den jo ikke mer. Hvorfor tar du da en dømt feil spørring "SELECT * FROM... WHERE ProdID=prodid" Den er jo slettet. [/OffTopic] [ONTOPIC] Det du kan gjøre, er: <? //deklarering av variabler $todo = $_POST['prodid']; $dato = date("y.d.m, H:i:s", time()); echo ($todo); $sql = "DELETE FROM produkt WHERE produktID = $todo"; //database snakk include("db.php"); $cxn = @ConnectToDb($dbServer, $dbUser, $dbPass, $dbName); mysql_query($sql); if($sql) { echo "SUKSESS"; } else { echo "FEIL"; } mysql_close(); ?> [/ONTOPIC] Lenke til kommentar
Torbjørn Skrevet 6. oktober 2004 Del Skrevet 6. oktober 2004 den verste feilen er vel at du sjekker if($sql), som er en lang streng og alltid vil være sann. meningen var nok å lagre resultatet av mysql_query og sjekke dette. Lenke til kommentar
phun-ky Skrevet 6. oktober 2004 Forfatter Del Skrevet 6. oktober 2004 ehm.. hvis dere leser topicen.. så står det løst der.. men jeg fikk ordnet det.. Lenke til kommentar
???????? Skrevet 7. oktober 2004 Del Skrevet 7. oktober 2004 Du har muligens løst det, men det finnes en mye enklere måte å sjekke om raden ble slettet. Ta en kikk på mysql_affected_rows() Bruk alltid denne funksjonen for å bekrefte at data er lagret, oppdatert og slettet. Lenke til kommentar
phun-ky Skrevet 7. oktober 2004 Forfatter Del Skrevet 7. oktober 2004 er ikke: if($numrows == 1) { echo "ERROR"; } else { echo "SUKSESS"; } det samme som: if(mysql_rows_affected() == 1) { echo "ERROR"; } else { echo "SUKSESS"; } Lenke til kommentar
Torbjørn Skrevet 7. oktober 2004 Del Skrevet 7. oktober 2004 spørs hva $numrows er det... hvis du derimot lurer på om mysql_num_rows() og mysql_affected_rows() gjør samme ting, så står det beskrevet sort på blått i manualen Lenke til kommentar
???????? Skrevet 7. oktober 2004 Del Skrevet 7. oktober 2004 Og mer spennende, hva er mysql_rows_affected? Det heter vel mssql_rows_affected når du bruker MSSQL, men mysql_affected_rows() når du bruker MySQL. Det er ikke det samme å sjekke resultatet av en spørring, $result = mysql_query($sql); if ($result) som å sjekke om det faktisk ble gjort noen endringer! mysql_query() returnerer false kun dersom det er noe i veien med spørringen - uavhenig om noe er endret. "UPDATE tabell SET felt = 'oppdatering' WHERE id = 5" Dersom du ikke har noen rad med id = 5 så blir ikke noe oppdatert, men det er ikke noe i veien med spørringen - så $result vil ikke returnere false. Derfor finnes funksjonen mysql_affected_rows() - den sjekker om det er noe som ble endret. Lenke til kommentar
phun-ky Skrevet 7. oktober 2004 Forfatter Del Skrevet 7. oktober 2004 skjønner det at det bør brukes ved update.. men hvis det bare er snakk om insert/delete spørringer så bruker jeg: $numrows = mysql_num_rows($sql); Lenke til kommentar
???????? Skrevet 7. oktober 2004 Del Skrevet 7. oktober 2004 Håper du mener i alle fall mysql_num_rows($result); Hvis ikke så sjekker du om en string er true, det vil den alltid være - se php.net/bool Videre så skjønner jeg over hodet ikke hvorfor du vil sjekke på den måten. Det står klart og tydelig i manualen at mysql_num_rows ikke skal brukes til dette. Selv om ting fungerer i den versjonen av PHP du kjører nå så hold deg til det som står i manualen. This command is only valid for SELECT statements. To retrieve the number of rows affected by a INSERT, UPDATE or DELETE query, use mysql_affected_rows(). Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå