Avatar billede _what_ Nybegynder
08. september 2006 - 09:15 Der er 15 kommentarer og
1 løsning

find og slet ud fra form

Jeg er ved at lave et lille system som skal søge en database igennem og slette det jeg har udfyldt i et felt.

Jeg har lavet følgende..
<?
if($_POST[send]){

$mailname = mysql_query("SELECT * FROM  mail_systen WHERE m_email = '". $_POST[email] ."'");

$count = (mysql_num_rows($mailname));
if($count == 1) {

$adresse = mysql_query("DELETE FROM  mail_systen WHERE m_email = '" . $_POST[email] . "'");
}
}
?>

Problemet er at det der bliver udfyldt i feltet ikke bliver slettet i databasen selvom det findes....
Avatar billede fsconsult.dk Nybegynder
08. september 2006 - 09:33 #1
nu er det vist mere et php spørgsmål ....

men i dit if-statement tester du på $_POST[send], mens du bruger $_POST[email] iøvrigt.
Avatar billede _what_ Nybegynder
08. september 2006 - 09:51 #2
Ja jeg udfylder et felt på siden med noget tekst. Så trykker jeg på knappen. Når jeg trykker på knappen køres det og det er det i feltet email som skal tjekkes.
Avatar billede fsconsult.dk Nybegynder
08. september 2006 - 09:58 #3
prøv evt. at skrive noget debugtekst ud mellem de forskellige linier i koden, så du ved om den faktisk finder noget, og om din DELETE går godt.

prøv at ændre "$adresse = mysql_query("DELETE FROM  mail_systen WHERE m_email = '" . $_POST[email] . "'");"
til "mysql_query("DELETE FROM  mail_systen WHERE m_email = '" . $_POST[email] . "'")  or die(mysql_error());"
Avatar billede _what_ Nybegynder
08. september 2006 - 10:06 #4
har prøvet at smide den die error på nu og der sker ikke noget som helst :( Sletter ikke men kommer heller ikke med fejl.
Avatar billede _what_ Nybegynder
08. september 2006 - 10:08 #5
Er kommet frem til at det er søge strengen. Den finder ikke det indtastede selvom det findes i databasen....
Avatar billede _what_ Nybegynder
08. september 2006 - 10:20 #6
Koden ser nu sådan her ud...

<?
if($_POST[send]){
$mailname = mysql_query("SELECT * FROM  mail_systen WHERE m_email = ". $_POST[email] ."");
$count = (mysql_num_rows($mailname));
if($count == 1) {

$mailtext = "mail slettet";
mail("gone@gone.gone","DELETE TEST","$mailtext","From: DELETE SYSTEM TEST <gone@gone.gone>\nContent-type: text/html");
$adresse = mysql_query("DELETE FROM  mail_systen WHERE m_email = " . $_POST[email] . "")  or die(mysql_error());
}

else {
$mailtext = "mail ikke fundet - ". $_POST[email] ."";
mail("gone@gone.gone","TEST DELETE","$mailtext","From: TEST DELTE <gone@gone.gone>\nContent-type: text/html");
}
}
?>

Jeg for konstant mail om at den ikke er fundet :(
Avatar billede fsconsult.dk Nybegynder
08. september 2006 - 10:23 #7
hvad med at tilføje en :
  echo "email = " . $_POST[email] ."<br>\n";

og se om den finder det forventede?
jeg ville normalt bruge $_POST["email"] ...
Avatar billede _what_ Nybegynder
08. september 2006 - 10:28 #8
Den email jeg sender til mig selv poster jeg jo det den skulle søge efter og det ser rigtigt nok ud
Avatar billede fsconsult.dk Nybegynder
08. september 2006 - 10:33 #9
og tabellen hedder mail_systen ?

du kan også rette det til:
$mailname = mysql_query("SELECT * FROM  mail_systen WHERE m_email = ". $_POST[email] ."") or die(mysql_error());

(det er en god ide at teste på om forespørgslen/opdateringen gik godt, eller om man havde en syntax fejl i sin SQL)
Avatar billede _what_ Nybegynder
08. september 2006 - 10:42 #10
ja se så finder vi jo noget...

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@ændret.com' at line 1

Det ser altså ud til at den dropper det der står foran @ i mailen og derfor ikke finder noget...
Avatar billede showsource Seniormester
08. september 2006 - 10:45 #11
Det er jo samme spm. som i et andet du har oprettet!
Anyway, når du "hopper ind" i PHP i din query, skal du bruge " eller ' i POST GET m.m.

m_email = ". $_POST[email] ."
skal være
m_email = ". $_POST["email"] ."

Og så mangler du lige ' omkring! :O)

m_email = '". $_POST["email"] ."'
Avatar billede _what_ Nybegynder
08. september 2006 - 10:58 #12
Kan godt nok ikke hitte det her bliver sgu forviret :)

Jeg har nu prøvet med... '". $_POST["email"] ."'"

Det giver ingen fejl men den finder stadig ikke noget selvom jeg ved 100% sikkert at det er i databasen.
Avatar billede _what_ Nybegynder
08. september 2006 - 11:08 #13
Har lige rodet lidt i php myadmin nu...

Hvis jeg laver

SELECT * FROM mail_systen WHERE m_email = 'en@email.dk'

Så finder den ikke noget selvom jeg ved den er der.

Hvis jeg laver den lidt om så den ser sådan her ud..

SELECT * FROM mail_systen WHERE m_email LIKE '%en@email.dk%'

Så finder den emailen rigtigt nok....
Avatar billede _what_ Nybegynder
08. september 2006 - 11:12 #14
Ok fandt ud af hvorfor den ikke kan finde ud af det.

Inde i selve databasen er der et mellemrum foran emailen og det gør at den ikke finder den når man søger direkte.

Er der en måde at komme uden om dette på så den finder mailen selvom der er et mellemrum i starten eller slutningen ??
Avatar billede fsconsult.dk Nybegynder
08. september 2006 - 13:00 #15
hvis du ikke ved om der er mellemrum for an, bliver du enten nødt til at søge på LIKE '%mail@domæne.dk', eller lidt mere effektivt 
  (mail_systen=' mail@domain.dk' OR mail_systen='mail@domain.dk')

det bedste er selvfølgelig at rydde op i databasen, og fjerne mellemrum foran email-adresser... så skal du bare huske at rette det program der gemmer email adresserne i databasen, så der ikke kommer flere mellemrum...
Avatar billede _what_ Nybegynder
13. september 2006 - 08:43 #16
Hvordan skal søge strengen helt præcist se ud når jeg laver den med Like ??

Jeg skal ikke lige igennem den og finde dem allesammen så er jeg først færdig om et år eller to :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester