egxezexMedlem sedan jan. 200786 inlägg Hej. Har problem att loopa ut en sak.
Vi vill att när members loopas ut så vill vi få in en knapp/länk på varje rad. Denna knapp/länk ska sedan användas för att ta bort användaren, så den ska på något sätt länkas till id:t på den raden.(alla members har specifika id)
Det är i denna loop jag vill få in det:
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
echo "\t<tr>\n";
foreach ($line as $col_value) {
echo "\t\t<td class=\"text\">$col_value</td>\n";
}
echo "\t</tr>\n";
}
Här är ett exempel på en knapp jag försökt med.(Ej länkad på något sätt):
<form method=\"post\" action=\"?\">
<input type=\"submit\" name=\"submit\" value=\"Redigera!\"/>
</form>
The_HulkMedlem sedan juni 20031 837 inlägg du får nog ge lite mer information om hur databasen ser ut, vad som finns i $line.
hur set SQL-frågan ut?
egxezexMedlem sedan jan. 200786 inlägg $query = 'SELECT * FROM members';
$result = mysql_query($query) or die('Query failed: ' . mysql_error());
// Printing results in HTML
echo "<link rel=StyleSheet href=\"setts\style.css\" TYPE=\"text/css\">";
echo "<table>\n";
echo "<td class=\"text3\"><strong>ID</strong></td>";
echo "<td class=\"text3\"><strong>User</strong></td>";
echo "<td class=\"text3\"><strong>Pass</strong></td>";
echo "<td class=\"text3\"><strong>Name</strong></td>";
echo "<td class=\"text3\"><strong>UserLevel</strong></td>";
echo "<td class=\"text3\"><strong>Row6</strong></td>";
echo "<td class=\"text3\"><strong>Row7</strong></td>";
echo "<td class=\"text3\"><strong>Row8</strong></td>";
echo "<td class=\"text3\"><strong>Row9</strong></td>";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
echo "\t<tr>\n";
foreach ($line as $col_value) {
echo "\t\t<td class=\"text\">$col_value</td>\n";
}
echo "\t</tr>\n";
}
echo "</table>\n";
// Free resultset
mysql_free_result($result);
så ser den ut..alltså tanken är att på ett mer pedagogiskt sätt ta bort användare..så att administratören bara ska behöva klicka på "ta bort" bredvid den användare som han vill ta bort och sen få bekräftelse "Vill du verkligen ta bort Anders.." hoppas ni förstår hur jag menar..
som ni ser så just nu så skriver den bara ut all information i databasen..
I övrigt så ser databasen ut så här
[B]ID[/B] [B]User[/B] [B]pass[/B] [B]name[/B] [B]UserLevel[/B]
1 Esa2 koko Esa Hell user
2 Esa4 koko Esa Hell user
3 Esa5 koko Esa Hell user
The_HulkMedlem sedan juni 20031 837 inlägg jag skulle nog gjort om det lite
if(isset($_GET['action']) && isset($_GET['id']))
{
if($_GET['action'] == "edit")
{
$id = $_GET['id'];
// gör dina ändringar här.
}
}
$query = 'SELECT * FROM members';
$result = mysql_query($query) or die('Query failed: ' . mysql_error());
// Printing results in HTML
echo "<link rel=StyleSheet href=\"setts\style.css\" TYPE=\"text/css\">";
echo "<table>\n";
echo "<td class=\"text3\"><strong>ID</strong></td>";
echo "<td class=\"text3\"><strong>User</strong></td>";
echo "<td class=\"text3\"><strong>Pass</strong></td>";
echo "<td class=\"text3\"><strong>Name</strong></td>";
echo "<td class=\"text3\"><strong>UserLevel</strong></td>";
echo "</tr>";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
?>
<tr>
<td class="text"><a href="?id=<?php echo $line[0]?>&action=edit"><?php echo $line[0]?></a></td>
<td class="text"><?php echo $line[1]?></td>
<td class="text"><?php echo $line[2]?></td>
<td class="text"><?php echo $line[3]?></td>
<td class="text"><?php echo $line[4]?></td>
</tr>
<?php
}
echo "</table>\n";
// Free resultset
mysql_free_result($result);
har inte testat koden men det kanske kan hjälpa dig lite.
förstår inte varför du har så många celler i din tabell när du bara hämtar ut 5 värden från databasen.
sen har du ingen </tr> efter rubrikerna.
TulorkMedlem sedan aug. 2004903 inlägg jag jobbar med egx på detta projekt, och som ni säkert förstår är vi inte experter på detta :q det du skickade hjälpte lite, men antingen har vi suttit med detta i för många dagar i streck eller så e vi tröga..vi får ingenting att funka, så nu postar jag hela skriptet..
(Jag vet, det är Väldigt stökigt och MKT bortkommenterat, vi hade en annan borttagningsfunktion innan som fungerade fint men vi tyckte inte den va pedagogisk nog)
<?php
ob_start();
session_start(); // Alltid överst på sidan
// Kolla om inloggad = sessionen satt
/*if (!isset($_SESSION['sess_user'])){
header("Location: index.php");
exit;
}
*/
if (!isset($_SESSION['sess_userlevel']) || $_SESSION['sess_userlevel'] != "admin") {
// header("Location: index.php");
header("refresh: 5;url=konto.php");
// eller
echo "Du har inte behörighet till den här sidan";
exit;
}
if (isset($_GET['logout'])){
session_unset();
session_destroy();
header("Location: index.php");
exit;
}
?>
<html>
<head>
<link rel=StyleSheet href="setts/style.css" TYPE="text/css">
</head>
<body class="back">
<?php
include "conn.php";
//if ($_POST['JA'] == "Ja" && strlen($_POST['delete']) && $_POST['delete'] != "6")
//{
// mysql_query("DELETE FROM $mem_table WHERE id = '" . $_POST['delete'] . "'");
// header("Location: remove.php");
// exit;
//}
if(isset($_GET['action']) && isset($_POST['id']))
{
if($_POST['action'] == "edit")
{
$id = $_POST['id'];
mysql_query("DELETE FROM $mem_table WHERE id = '" . $_POST['id'] . "'");
header("Location: remove.php");
exit;
}
}
$query = 'SELECT * FROM members';
$result = mysql_query($query) or die('Query failed: ' . mysql_error());
// Printing results in HTML
//echo "<link rel=StyleSheet href=\"setts\style.css\" TYPE=\"text/css\">";
echo "<table>\n";
echo "<td class=\"text3\"><strong>ID</strong></td>";
echo "<td class=\"text3\"><strong>User</strong></td>";
echo "<td class=\"text3\"><strong>Pass</strong></td>";
echo "<td class=\"text3\"><strong>Name</strong></td>";
echo "<td class=\"text3\"><strong>UserLevel</strong></td>";
echo "<td class=\"text3\"><strong>filename</strong></td>";
echo "<td class=\"text3\"><strong>type</strong></td>";
echo "<td class=\"text3\"><strong>size</strong></td>";
echo "<td class=\"text3\"><strong>content</strong></td>";
echo "</tr>";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
foreach ($line as $col_value) {
echo "\t\t<td class=\"text\">$col_value</td>\n";
}
?>
<tr>
<td class="text"><a href="?id=<?php echo $line[0]?>&action=edit"><?php echo $line[0]?>ff</a></td>
<td class="text"><?php echo $line[1]?></td>
<td class="text"><?php echo $line[2]?></td>
<td class="text"><?php echo $line[3]?></td>
<td class="text"><?php echo $line[4]?></td>
<td class="text"><?php echo $line[5]?></td>
<td class="text"><?php echo $line[6]?></td>
<td class="text"><?php echo $line[7]?></td>
<td class="text"><?php echo $line[8]?></td>
<td class="text"><?php echo $line[9]?></td>
</tr>
<?php
}
echo "</table>\n";
// Free resultset
mysql_free_result($result);
/*
// Performing SQL query
$query = "SELECT * FROM $mem_table";
$result = mysql_query($query) or die('Query failed: ' . mysql_error());
// Printing results in HTML
echo "<link rel=StyleSheet href=\"setts\style.css\" TYPE=\"text/css\">";
echo "<table>\n";
echo "<td class=\"text3\"><strong>ID</strong></td>";
echo "<td class=\"text3\"><strong>User</strong></td>";
echo "<td class=\"text3\"><strong>Pass</strong></td>";
echo "<td class=\"text3\"><strong>Name</strong></td>";
echo "<td class=\"text3\"><strong>UserLevel</strong></td>";
echo "<td class=\"text3\"><strong>Row6</strong></td>";
echo "<td class=\"text3\"><strong>Row7</strong></td>";
echo "<td class=\"text3\"><strong>Row8</strong></td>";
echo "<td class=\"text3\"><strong>Row9</strong></td>";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
echo "\t<tr>\n";
foreach ($line as $col_value) {
echo "\t\t<td class=\"text\">$col_value</td>\n";
}
echo "\t</tr>\n";
}
echo "</table>\n";
// Free resultset
mysql_free_result($result);
*/
if (isset ($_POST ['submit'])){
$delete = $_POST['delete'];
if ($delete=="126"){
echo "<p class=\"text2\">Du kan inte ta bort Admin kontot!<p>";
}
//--------------------------------------------------------------
else {
echo "
<strong><p class=\"warning\">Är du säker på att du vill ta bort Användaren med id:</strong>$delete?<p>
<form method=\"post\" action=\"?\">
<input type=\"submit\" name=\"JA\" value=\"Ja\">
<input type=\"submit\" name=\"NEJ\" value=\"Nej\">
<input type=\"hidden\" name=\"delete\" value=\"$delete\">
</form>";
}
}
ob_end_flush();
//?>
<br><form method="post" action="?">
<label for="delete"> Vilket id vill du ta bort</label>
<input type="text" name="delete" />
<input type="submit" name="submit" value="Ta bort!"/>
</form><br>
<a href="admin.php">Tillbaka</a><br><br>
<?php
echo "<a href=\"index.php?logout=\">Logga ut</a>\n";
?>
</body>
</html>
Den Stökiga databasen (tablen members) ser ut så här
+-----+-----------------+----------+-----------------+-----------+--------------------------------+--------------------------------+------+---------+
| id | user | pass | name | userlevel | filename | type | size | content |
+-----+-----------------+----------+-----------------+-----------+--------------------------------+--------------------------------+------+---------+
| 129 | Life | life1121 | Markus Endal | user | NULL | NULL | NULL | NULL |
| 24 | test4 | erik | erik | | NULL | NULL | NULL | NULL |
| 25 | test5 | erik | erik | | NULL | NULL | NULL | NULL |
| 26 | test6 | erik | erik | | NULL | NULL | NULL | NULL |
| 71 | a66 | erik | erik | | NULL | NULL | NULL | NULL |
+-----+-----------------+----------+-----------------+-----------+--------------------------------+--------------------------------+------+---------+
Deet som händer nu när vi testar det du skickade är att ingenting skrivs ut, förutom de statiska värdena...sen ska ju DELETE, baserat på vem man tryckt in också.
EDIT*
Ändrade lite saker, nu skriver den ut, och den skriver ut länken, och jag la till funktionen för att ta bort, men..som vanligt, funkar inte. :birp
The_HulkMedlem sedan juni 20031 837 inlägg Lägg till lite debugutskrifter så du ser vad programmet går genom
if(isset($_GET['action']) && isset($_GET['id']))
{
echo "action & post";
if($_GET['action'] == "edit")
{
$id = $_GET['id'];
echo "id: $id";
$sql = "DELETE FROM $mem_table WHERE id = '" . $_GET['id'] . "'";
echo "SQL: $sql";
mysql_query($sql);
//header("Location: remove.php");
exit;
}
}
The_HulkMedlem sedan juni 20031 837 inlägg såg precis att du hade lagt till lite mer kod
foreach ($line as $col_value) {
echo "\t\t<td class=\"text\">$col_value</td>\n";
}
?>
<tr>
<td class="text"><a href="?id=<?php echo $line[0]?>&action=edit"><?php echo $line[0]?>ff</a></td>
<td class="text"><?php echo $line[1]?></td>
<td class="text"><?php echo $line[2]?></td>
<td class="text"><?php echo $line[3]?></td>
<td class="text"><?php echo $line[4]?></td>
<td class="text"><?php echo $line[5]?></td>
<td class="text"><?php echo $line[6]?></td>
<td class="text"><?php echo $line[7]?></td>
<td class="text"><?php echo $line[8]?></td>
<td class="text"><?php echo $line[9]?></td>
</tr>
<?php
detta ger ingen bra kod.
du skriver ut fälten dubbla gånger.
plocka bort
foreach ($line as $col_value) {
echo "\t\t<td class=\"text\">$col_value</td>\n";
}
och ha bara
?>
<tr>
<td class="text"><a href="?id=<?php echo $line[0]?>&action=edit"><?php echo $line[0]?>ff</a></td>
<td class="text"><?php echo $line[1]?></td>
<td class="text"><?php echo $line[2]?></td>
<td class="text"><?php echo $line[3]?></td>
<td class="text"><?php echo $line[4]?></td>
<td class="text"><?php echo $line[5]?></td>
<td class="text"><?php echo $line[6]?></td>
<td class="text"><?php echo $line[7]?></td>
<td class="text"><?php echo $line[8]?></td>
<td class="text"><?php echo $line[9]?></td>
</tr>
<?php
egxezexMedlem sedan jan. 200786 inlägg Utan dessa rader får vi inte ut någon alls.
foreach ($line as $col_value) {
echo "\t\t<td class=\"text\">$col_value</td>\n";
}
Dvs $line[0] osv är tomma.
Ingenting lagras i Arrayn men vi förstår hur du menar, men arrayn blir alltid tom.
Hämtningen utav databasen ser ut så här:
$query = 'SELECT * FROM members';
$result = mysql_query($query) or die('Query failed: ' . mysql_error());
(Den ska funka!, har används på fler ställen)
Vi tror att problemet ligger när informationen ska lagras i arrayn.
The_HulkMedlem sedan juni 20031 837 inlägg ok, förstår nog vad som är fel, den använder inte 0,1,2,... som nyckel i arrayn utan namnet på fälten i databasen.
testa att ändra till
?>
<tr>
<td class="text"><a href="?id=<?php echo $line['id']?>&action=edit"><?php echo $line['id']?>ff</a></td>
<td class="text"><?php echo $line['user']?></td>
<td class="text"><?php echo $line['pass']?></td>
<td class="text"><?php echo $line['name']?></td>
<td class="text"><?php echo $line['userlevel']?></td>
<td class="text"><?php echo $line['filename']?></td>
<td class="text"><?php echo $line['type']?></td>
<td class="text"><?php echo $line['size']?></td>
<td class="text"><?php echo $line['content']?></td>
</tr>
<?php
egxezexMedlem sedan jan. 200786 inlägg Oh, det var ju lite klantigt att inte se det utav oss :), men den biten funkar nu. Men själva tabort funktionen fungerar ej.
så här ser koden ut nu:
if(isset($_GET['action']) && isset($_POST['id']))
{
if($_POST['action'] == "edit")
{
$id = $_POST['id'];
mysql_query("DELETE FROM $mem_table WHERE id = '" . $_POST['id'] . "'");
// header("Location: remove.php");
//exit;
echo"testestestes";
}
}
$query = 'SELECT * FROM members';
$result = mysql_query($query) or die('Query failed: ' . mysql_error());
// Printing results in HTML
//echo "<link rel=StyleSheet href=\"setts\style.css\" TYPE=\"text/css\">";
echo "<table>\n";
echo "<td class=\"text3\"><strong>ID</strong></td>";
echo "<td class=\"text3\"><strong>User</strong></td>";
echo "<td class=\"text3\"><strong>Pass</strong></td>";
echo "<td class=\"text3\"><strong>Name</strong></td>";
echo "<td class=\"text3\"><strong>UserLevel</strong></td>";
echo "<td class=\"text3\"><strong>filename</strong></td>";
echo "<td class=\"text3\"><strong>type</strong></td>";
echo "<td class=\"text3\"><strong>size</strong></td>";
echo "<td class=\"text3\"><strong>content</strong></td>";
echo "</tr>";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
//foreach ($line as $col_value) {
// echo "\t\t<td class=\"text\">$col_value</td>\n";
//}
?>
<tr>
<td class="text"><a href="?id=<?php echo $line[id]?>&action=edit"><?php echo
$line[id]?>Ta bort</a></td>
<td class="text"><?php echo $line[user]?></td>
<td class="text"><?php echo $line[pass]?></td>
<td class="text"><?php echo $line[name]?></td>
<td class="text"><?php echo $line[4]?></td>
<td class="text"><?php echo $line[5]?></td>
<td class="text"><?php echo $line[6]?></td>
<td class="text"><?php echo $line[7]?></td>
<td class="text"><?php echo $line[8]?></td>
</tr>
<?php
}
echo "</table>\n";
// Free resultset
mysql_free_result($result);
så här ser addressfältet ut när vi tryckt på "ta bort":
http://127.0.0.1/Grej/remove.php?id=88&action=edit
Så id skickas med, men den går aldrig in i if-satserna där själva DELETE ligger.
The_HulkMedlem sedan juni 20031 837 inlägg du har blandat $_POST och $_GET.
$_GET ska användas när man skickar variablerna via adressfältet och $_POST när de inte syns i adressfältet.
dvs i en länk är det $_GET du ska använda medan för det mest $_POST när det gäller formulär.
du kan dock själva bestämma om formuläret ska skickas som post eller get.
formulär med med post:
<form action="page.php" method="post">
...
</form>
eller med get:
<form action="page.php" method="get">
...
</form>
The_HulkMedlem sedan juni 20031 837 inlägg vill man slippa bry sig om $_POST och $_GET kan man använda $_REQUEST['action] och $_REQUEST['id']
The_HulkMedlem sedan juni 20031 837 inlägg såg precis att det var jag som hade råkat blanda de i mitt meddelande, ska rätta till det.
egxezexMedlem sedan jan. 200786 inlägg Så ja. Nu funkar det :e Fixade det med $_GET istället för $_POST. Tack för hjälpen och lektionen hur man använder $_POST och $_GET. Detta kommer att vara till nytta i framtiden.