---
title: "Problem med loopning"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/156032-problem-med-loopning"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "egxezex"
published: "2007-01-16T15:39:28.000Z"
updated: "2007-01-17T18:16:51.000Z"
replies: 13
views: 617
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/156032-problem-med-loopning"
---

# Problem med loopning

## #1 — egxezex, 2007-01-16T15:39Z

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:

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

Permalänk: https://www.webforum.nu/p/156032

## #2 — The_Hulk, 2007-01-16T17:01Z

du får nog ge lite mer information om hur databasen ser ut, vad som finns i $line.
hur set SQL-frågan ut?

Permalänk: https://www.webforum.nu/p/1924207

## #3 — egxezex, 2007-01-16T17:22Z

```php
$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
```

Permalänk: https://www.webforum.nu/p/1924215

## #4 — The_Hulk, 2007-01-16T20:09Z

jag skulle nog gjort om det lite 

```php
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.

Permalänk: https://www.webforum.nu/p/1924252

## #5 — Tulork, 2007-01-16T20:46Z

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

Permalänk: https://www.webforum.nu/p/1924265

## #6 — The_Hulk, 2007-01-17T07:13Z

Lägg till lite debugutskrifter så du ser vad programmet går genom

```php
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;
    }
}
```

Permalänk: https://www.webforum.nu/p/1924341

## #7 — The_Hulk, 2007-01-17T07:17Z

såg precis att du hade lagt till lite mer kod

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

```php
 foreach ($line as $col_value) {
       echo "\t\t<td class=\"text\">$col_value</td>\n";
   }
```

och ha bara 

```php
?>
<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
```

Permalänk: https://www.webforum.nu/p/1924342

## #8 — egxezex, 2007-01-17T14:34Z

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.

Permalänk: https://www.webforum.nu/p/1924441

## #9 — The_Hulk, 2007-01-17T15:07Z

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

```php
 ?>
<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
```

Permalänk: https://www.webforum.nu/p/1924454

## #10 — egxezex, 2007-01-17T15:50Z

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:

```php
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.

Permalänk: https://www.webforum.nu/p/1924477

## #11 — The_Hulk, 2007-01-17T16:24Z

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

Permalänk: https://www.webforum.nu/p/1924494

## #12 — The_Hulk, 2007-01-17T16:25Z

vill man slippa bry sig om $\_POST och $\_GET kan man använda $\_REQUEST\['action\] och $\_REQUEST\['id'\]

Permalänk: https://www.webforum.nu/p/1924496

## #13 — The_Hulk, 2007-01-17T16:27Z

såg precis att det var jag som hade råkat blanda de i mitt meddelande, ska rätta till det.

Permalänk: https://www.webforum.nu/p/1924498

## #14 — egxezex, 2007-01-17T18:16Z

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.

Permalänk: https://www.webforum.nu/p/1924513

---

Tråden på webben: https://www.webforum.nu/amne/php/156032-problem-med-loopning
