webForumDet fria alternativet

SQL frågor.

21 svar · 917 visningar · startad av B22

B22Medlem sedan mars 2004256 inlägg
#1

Hej hej!

Jag försöker ta bort en medlem från en tabell och skriver så här:

$sql= mysql_query("DELETE FROM Members WHERE Fullname ='$fullname' ");

Där $fullname får jag från att sätta ihop två variabler som har sitt värde från ett formulär så här:

$fullname= $fname." ".$lname;

Men jag får inte bort datat från tabellen, bör jag skriva på annat sätt?

PeddaMedlem sedan juni 20006 032 inlägg
#2

Ser rätt ut, men du behöver inte ha $sql = före queryn. Ta även bort mellanslaget i slutet och se om det hjälper.
Har inte användarna ett unikt id i databasen? Som du gör nu så raderas ju alla personer om det är flera som har samma namn, men det kanske är så du vill ha det.

Får du något felmeddelande?
Lägg till or die(mysql_error()) på queryn och se om du får något felmeddelande annars.

PeeerMedlem sedan mars 20025 907 inlägg
#3

Innehåller variablerna det du tror att de innehåller? Prova att skriva ut sql-satsen istället för att exekvera den.

B22Medlem sedan mars 2004256 inlägg
#4

Pedda skrev:

Ser rätt ut, men du behöver inte ha $sql = före queryn. Ta även bort mellanslaget i slutet och se om det hjälper.
Har inte användarna ett unikt id i databasen? Som du gör nu så raderas ju alla personer om det är flera som har samma namn, men det kanske är så du vill ha det.

Får du något felmeddelande?
Lägg till or die(mysql_error()) på queryn och se om du får något felmeddelande annars.

Alla användare har ett unikt id i databasen som öka automatiskt ja, hur ställer jag frågan då om jag ska ta bort efter id och inte namn?

Jag får inget felmeddelnade heller.

B22Medlem sedan mars 2004256 inlägg
#5

Peeer skrev:

Innehåller variablerna det du tror att de innehåller? Prova att skriva ut sql-satsen istället för att exekvera den.

Samma variabler använder jag för att lägga till medlemmar i databasen och det fungerar, för jag ser att det jag matat in dyker verkligen upp i tabellen.

Som du ser så har jag slagit ihop dessa två variabler till en och användet bara den när jag ställer sql frågorna, jag vet inte om det har något med det att göra.

TroxyMedlem sedan mars 20041 505 inlägg
#6

Testa skriv såhär för att se om du får något felmeddelande.

$sql = "DELETE FROM Members WHERE Fullname ='$fullname'";
mysql_query($sql) or die(mysql_error() . "<br>\n" . $sql);
andyoumaydieMedlem sedan dec. 2006608 inlägg
#7

B22 skrev:

Alla användare har ett unikt id i databasen som öka automatiskt ja, hur ställer jag frågan då om jag ska ta bort efter id och inte namn?

Först o främst, jag har inte en aning om någotsomhelst inom php-programmering...
Men det här är SQL. :)
Hur vet du vilket namn du ska radera, vet du namnet borde du ju rimligtvis kunna ta reda på id:t.

SQL = Select id Where fieldName = '" & namnet_t_ex_lasse & "'"

Sådär enkelt kan man ju få reda på ett id om man vet namnet i asp.
PHP borde ju rimligtvis inte vara nämnvärt jobbigare.
/Patrik

PeddaMedlem sedan juni 20006 032 inlägg
#8

B22 skrev:

Alla användare har ett unikt id i databasen som öka automatiskt ja, hur ställer jag frågan då om jag ska ta bort efter id och inte namn?

Jag får inget felmeddelnade heller.

Queryn ser likadan ut förutom att du givetvis får byta ut tabellnamnet Fullname mot tabellnamnet för id och byta till variabeln där du har användarens idnummer.

Var hämtar du medlemmens förnamn och efternamn? Hämta idnummret samtidigt.

B22Medlem sedan mars 2004256 inlägg
#9

Jag blir inte klok på detta, ännu konstigare är att medelandet om att borttagningen har skett skrivs ut trots min lilla kontroll innan dess, datat ligger kvar i tabellen! Jag tror att det är bäst om ni får se hela koden så kanske hittar ni något som inte är rätt där.

<?php 
session_start();

// om ingen session finns med rätt användarnamn och lösenord visas inloggningssidan igen
if (!isset($_SESSION['sess_id']) || !isset($_SESSION['sess_user'])) {
header("Location: adm_login.php");
exit;
}

if(isset($_POST["send"])){

         $fname = $_POST["firstname"]; //hämtar datat i varje fält genom att anropa dess name attribut
	$lname = $_POST["lastname"];
	$fullname= $fname." ".$lname;
         
           
           include("config.php");

            
	//Gör en förfrågan till databasen 
       $sql= "DELETE FROM Members WHERE Fullname ='$fullname'";
       mysql_query($sql) or die(mysql_error()."<br>\n".$sql);
   

  
   
	    if(!$sql)
             {
                echo"<b>Borttagningen misslyckades!</b>";
             }
             else
             {
                echo "<b>Medlemmen är borttagen.</b>";
             }
}

echo '
<form id="form" method="post"  action="" name="form" >		
		
<h3>Använd nedanstående formulär för att tabort en medlem från databasen.</h3> 

<h5>Ange medlemmensnamn</h5> 
<p>Förnamn: <input type="text" size="20" style="margin-left: 10px" id="falt1" name="firstname" /></p>
<p>Efternamn: <input type="text" size="20" style="margin-left: 10px" id="falt2" name="lastname" /></p>

<p>
<input type="reset" id="rensa" name="rensa" value="Rensa" />
<input type="submit" id="skicka" name="send" value="Radera medlem" /></p>

</form> ';
?>
B22Medlem sedan mars 2004256 inlägg
#10

Pedda skrev:

Var hämtar du medlemmens förnamn och efternamn? Hämta idnummret samtidigt.

Jag hämtar för och efternamn med hjälp av formuläret, det som användaren fyller i alltså, så även om jag hämtar id till medlemen som har det för och efternmanet, är det inte troligt att jag får upp flera ifall det finns mer än en som har det namnet?

Jag menrar löser jag verkligen problemet med dubbletter på så vis?
Tycker ni att jag ska söka på annat än namnet?
Tabellen innehåller namn adress och telefon nummer.

@ndersMedlem sedan juni 200032 969 inlägg
#11

Har du skrivit ut SQL-frågan som Peeer tipsar om? Har du kontrollerat att du inte har några inledande eller släpande mellanslag i något av fälten?

Kontrollera med mysql_affected_rows() om någon post påverkades av din SQL-fråga.

Jag hämtar för och efternamn med hjälp av formuläret, det som användaren fyller i alltså, så även om jag hämtar id till medlemen som har det för och efternmanet, är det inte troligt att jag får upp flera ifall det finns mer än en som har det namnet?

Hmm, låter ungefär hur farligt som helst. Som du har skrivit nu försöker du ju ändå ta bort alla som råkar heta likadant...
Du måste använda id-nummer för att vara säker på att du tar bort rätt post.

B22Medlem sedan mars 2004256 inlägg
#12

Med mysql_affected_rows() får jag att 0 poster är raderade.

Jag vet inte riktigt vad det innebär att skriva ut frågan istället för att exekvera den, hur gör jag det?

Igen, hur vet jag vilken person är den rätta att radera ifall jag får upp flera id? Hoppas du kan förklara det för mig lite utförligt...

@ndersMedlem sedan juni 200032 969 inlägg
#13

Jag vet inte riktigt vad det innebär att skriva ut frågan istället för att exekvera den, hur gör jag det?

Tja, i din kod använder du echo för att skriva ut saker. Gör det med din sql-fråga också, istället för att exekvera den med mysql_query().

Igen, hur vet jag vilken person är den rätta att radera ifall jag får upp flera id? Hoppas du kan förklara det för mig lite utförligt...

Om det nu finns chans att det är flera - visa en lista med sökresultat, där du visar tillräckligt mycket information för varje person så att du kan avgöra vilken det är du ska ta bort. Gör en länk per person där du använder id som identifierare istället för namn, så kan du sedan ta bort användare genom att klickar på den länken istället.

B22Medlem sedan mars 2004256 inlägg
#14

@nders skrev:

Jag vet inte riktigt vad det innebär att skriva ut frågan istället för att exekvera den, hur gör jag det?

Tja, i din kod använder du echo för att skriva ut saker. Gör det med din sql-fråga också, istället för att exekvera den med mysql_query().

Igen, hur vet jag vilken person är den rätta att radera ifall jag får upp flera id? Hoppas du kan förklara det för mig lite utförligt...

Om det nu finns chans att det är flera - visa en lista med sökresultat, där du visar tillräckligt mycket information för varje person så att du kan avgöra vilken det är du ska ta bort. Gör en länk per person där du använder id som identifierare istället för namn, så kan du sedan ta bort användare genom att klickar på den länken istället.

Aha. fick det förslaget också tidigare, men jag tyckte det var mer jobb med det kanske och att det kanske går att göra som jag har gjort nu, har lite tidspress på mig just nu, jag vet att det är verkligen en bra idé men jag vill spara lite tid bara..eller det kanske inte kräver så mycket jobb? Vet faktiskt inte...

B22Medlem sedan mars 2004256 inlägg
#15

Nu har jag tömt tabellen från phpmyadmin manulet alltså, och la till en post via webbplatsen, sedan försökte jag ta bort posten igen via webbplatsen och det gick!! Jag vet inte vad det var som spökade...

När jag skrev ut så fick jag detta :

mysql_query($sql) or die(mysql_error()."
\n".$sql)

Alltså frågan i klartext.

TroxyMedlem sedan mars 20041 505 inlägg
#16

Alltså nej...det där är inte SQL-frågan i klartext :P
SQL-frågan är en vanlig variabel som heter $sql.
Skriv ut den med hjälp av echo:

echo $sql;
B22Medlem sedan mars 2004256 inlägg
#17

Troxy skrev:

Alltså nej...det där är inte SQL-frågan i klartext :P
SQL-frågan är en vanlig variabel som heter $sql.
Skriv ut den med hjälp av echo:

echo $sql;

Ooops! :r

Detta fick jag nu (lite skillnad ja :r ) :

'DELETE FROM Members WHERE Fullname ='Kalle Kalle'' Antal raderade poster: 1

Så det är rätt innehåll i alla fall.

B22Medlem sedan mars 2004256 inlägg
#18

@nders skrev:

Om det nu finns chans att det är flera - visa en lista med sökresultat, där du visar tillräckligt mycket information för varje person så att du kan avgöra vilken det är du ska ta bort. Gör en länk per person där du använder id som identifierare istället för namn, så kan du sedan ta bort användare genom att klickar på den länken istället.

Har du någon länk där jag kan se hur man gör det?

@ndersMedlem sedan juni 200032 969 inlägg
#19

Jag kan i stort sett ingenting om PHP - men det finns säkert många exempel om du söker lite här på webForum - eller kanske till och med på google. :)

lycka till!

B22Medlem sedan mars 2004256 inlägg
#20

Ok. Tack för all hjälp!

135 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)