Just nu i M3-nätverket
Gå till innehåll

Förklara kod


AcidFrog

Rekommendera Poster

Jag har problem med att förstå en sak i denna kod, denna kod är hämtad ur "build your own databasedriven site using php & mysql"

 

grunden till denna kod är att man ska samla ihop en författare och dennes skämt och radera dessa ur databasen och det funkar jättebra men när jag kommer till "while ($row = mysqli_fetch_array($result))

{

$jokeId = $row[0];" då undrar jag varför $row är 0???

 

vill någon vänlig själ förklara detta om det går :)

 

if (isset($_POST['action']) and $_POST['action'] == 'Delete')
{
 include $_SERVER['DOCUMENT_ROOT'] . '/includes/db.inc.php';
 $id = mysqli_real_escape_string($link, $_POST['id']);

 //Hämta skämt som tillhör författaren
 $sql = "SELECT id FROM joke WHERE authorid='$id'";
 $result = mysqli_query($link, $sql);
 if (!$result)
 {
   $error = 'Kunde ej hämta lista med skämt som skulle raderas.';
   include 'error.html.php';
   exit();
 }

 //För varje skämt
 while ($row = mysqli_fetch_array($result))
 {
   $jokeId = $row[0];

   //Raderar varje skämts kategori
   $sql = "DELETE FROM jokecategory WHERE jokeid='$jokeid'";
   if (!mysqli_query($link, $sql))
   {
     $error = 'Kunde inte radera kategoriinlägg.';
     include 'error.html.php';
     exit();
   }
 }

 //Radera skämt tillhörande författare
 $sql = "DELETE FROM joke WHERE authorid='$id'";
 if (!mysqli_query($link, $sql))
 {
   $error = 'Kunde ej radera skämt tillhörande författare.';
   include 'error.html.php';
   exit();
 }

 //Radera författaren
 $sql = "DELETE FROM author WHERE id='$id'";
 if (!mysqli_query($link, $sql))
 {
   $error = 'Kunde inte radera författaren';
   include 'error.html.php';
   exit();
 } 

 header('Location: .');
 exit();
}

 

Tack på förhand

//Matthias

 

Länk till kommentar
Dela på andra webbplatser

då undrar jag varför $row är 0???
Du hämtar ju ut alla id:n för en viss författare och lagrar dessa i en variabel.

För att få tag i ett id i taget lagrar du id:na i en array($row).

Och det är första positionen(värde 0) i array:n och dess värde(id) du i loopen vill radera, därav row[0].

 

Man skulle ju även kunna köra en delete-fråga som baseras på författtar-id:t.

 

Länk till kommentar
Dela på andra webbplatser

Ja just varje gång while loopen körs så är där en nytt skämt med idet= 0?

 

Tack för hjälpen det var inte så svårt att förstå!

 

Det blir poäng för det tack!!

 

Länk till kommentar
Dela på andra webbplatser

är där en nytt skämt med idet= 0?
Nej, inte med id 0 utan att position 0 i array:n innehåller id-värdet, vilket kan t ex vara 123456.

 

Tack själv!

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...