Avatar billede jedimaster Nybegynder
16. april 2006 - 20:26 Der er 4 kommentarer og
1 løsning

Optimering af betingelser

Hej.
Er der en der kan hjælpe med at optimere dette dødsbillede af et script?

Jeg har kun et problem med scriptet, ud over det er djævelsk langt!!! Når jeg beder den om at opdatere tabellen mb_emne_id, så opdaterer den også der hvor $emne_sql == 0 - Den SKAL kun opdaterer når emne_sql > 0.

Kort sagt (og forenklet) går mit system at lave et kartotek til mine film. Man skriver hoveddata ind i EN tabel (mb_film). I tabellen (mb_emne) er de emneord man kan bruge til filmene. og i tabellen (mb_emne_id) bliver de to tabeller "linket" sammen om man vil.

Her er mit script:


$emne1_sql = mysql_query("SELECT id FROM mb_emne WHERE emne = '$emne1' LIMIT 1", $Localhost);
if (mysql_num_rows($emne1_sql) == 1)
{
  //Findes i forvejen - variablen forbliver
 
}
else
{
  //Findes ikke endnu - indsættes og id'et biver nyt
  if ($emne1 == '') { ;
  } else {
 
  mysql_query("INSERT INTO mb_emne (emne) VALUES ('$emne1')", $Localhost);
  $emne1_sql = mysql_query("SELECT id FROM mb_emne WHERE emne = '$emne1' LIMIT 1", $Localhost);

};
};
// ______________________________________________________________________________________________________________________

$emne2_sql = mysql_query("SELECT id FROM mb_emne WHERE emne = '$emne2' LIMIT 1", $Localhost);
if (mysql_num_rows($emne2_sql) == 1)
{
  //Findes i forvejen - variablen forbliver
 
}
else
{
  //Findes ikke endnu - indsættes og id'et biver nyt
  if ($emne2 == '') { ;
  } else {
  mysql_query("INSERT INTO mb_emne (emne) VALUES ('$emne2')", $Localhost);
  $emne2_sql = mysql_query("SELECT id FROM mb_emne WHERE emne = '$emne2' LIMIT 1", $Localhost);

}; };
// ______________________________________________________________________________________________________________________

$emne3_sql = mysql_query("SELECT id FROM mb_emne WHERE emne = '$emne3' LIMIT 1", $Localhost);
if (mysql_num_rows($emne3_sql) == 1)
{
  //Findes i forvejen - variablen forbliver
 
}
else
{
  //Findes ikke endnu - indsættes og id'et biver nyt
  if ($emne3 == '') { ;
  } else {
  mysql_query("INSERT INTO mb_emne (emne) VALUES ('$emne3')", $Localhost);
  $emne3_sql = mysql_query("SELECT id FROM mb_emne WHERE emne = '$emne3' LIMIT 1", $Localhost);

}; };
// ______________________________________________________________________________________________________________________

$emne4_sql = mysql_query("SELECT id FROM mb_emne WHERE emne = '$emne4' LIMIT 1", $Localhost);
if (mysql_num_rows($emne4_sql) == 1)
{
  //Findes i forvejen - variablen forbliver
 
}
else
{
  //Findes ikke endnu - indsættes og id'et biver nyt
  if ($emne4 == '') { ;
  } else {
  mysql_query("INSERT INTO mb_emne (emne) VALUES ('$emne4')", $Localhost);
  $emne4_sql = mysql_query("SELECT id FROM mb_emne WHERE emne = '$emne4' LIMIT 1", $Localhost);

}; };
// ______________________________________________________________________________________________________________________

$emne5_sql = mysql_query("SELECT id FROM mb_emne WHERE emne = '$emne5' LIMIT 1", $Localhost);
if (mysql_num_rows($emne5_sql) == 1)
{
  //Findes i forvejen - variablen forbliver
 
}
else
{
  //Findes ikke endnu - indsættes og id'et biver nyt
  if ($emne5 == '') { ;
  } else {
  mysql_query("INSERT INTO mb_emne (emne) VALUES ('$emne5')", $Localhost);
  $emne5_sql = mysql_query("SELECT id FROM mb_emne WHERE emne = '$emne5' LIMIT 1", $Localhost);

}; };
// ______________________________________________________________________________________________________________________

$emne6_sql = mysql_query("SELECT id FROM mb_emne WHERE emne = '$emne6' LIMIT 1", $Localhost);
if (mysql_num_rows($emne6_sql) == 1)
{
  //Findes i forvejen - variablen forbliver
 
}
else
{
  //Findes ikke endnu - indsættes og id'et biver nyt
  if ($emne6 == '') { ;
  } else {
  mysql_query("INSERT INTO mb_emne (emne) VALUES ('$emne6')", $Localhost);
  $emne6_sql = mysql_query("SELECT id FROM mb_emne WHERE emne = '$emne6' LIMIT 1", $Localhost);

}; };
// ______________________________________________________________________________________________________________________

$emne7_sql = mysql_query("SELECT id FROM mb_emne WHERE emne = '$emne7' LIMIT 1", $Localhost);
if (mysql_num_rows($emne7_sql) == 1)
{
  //Findes i forvejen - variablen forbliver
 
}
else
{
  //Findes ikke endnu - indsættes og id'et biver nyt
  if ($emne7 == '') { ;
  } else {
  mysql_query("INSERT INTO mb_emne (emne) VALUES ('$emne7')", $Localhost);
  $emne7_sql = mysql_query("SELECT id FROM mb_emne WHERE emne = '$emne7' LIMIT 1", $Localhost);

}; };
// ______________________________________________________________________________________________________________________

$emne8_sql = mysql_query("SELECT id FROM mb_emne WHERE emne = '$emne8' LIMIT 1", $Localhost);
if (mysql_num_rows($emne8_sql) == 1)
{
  //Findes i forvejen - variablen forbliver
 
}
else
{
  //Findes ikke endnu - indsættes og id'et biver nyt
  if ($emne8 == '') { ;
  } else {
  mysql_query("INSERT INTO mb_emne (emne) VALUES ('$emne8')", $Localhost);
  $emne8_sql = mysql_query("SELECT id FROM mb_emne WHERE emne = '$emne8' LIMIT 1", $Localhost);

}; };
// ______________________________________________________________________________________________________________________

$emne9_sql = mysql_query("SELECT id FROM mb_emne WHERE emne = '$emne9' LIMIT 1", $Localhost);
if (mysql_num_rows($emne9_sql) == 1)
{
  //Findes i forvejen - variablen forbliver
 
}
else
{
  //Findes ikke endnu - indsættes og id'et biver nyt
  if ($emne9 == '') { ;
  } else {
  mysql_query("INSERT INTO mb_emne (emne) VALUES ('$emne9')", $Localhost);
  $emne9_sql = mysql_query("SELECT id FROM mb_emne WHERE emne = '$emne9' LIMIT 1", $Localhost);

}; };
// ______________________________________________________________________________________________________________________

$emne10_sql = mysql_query("SELECT id FROM mb_emne WHERE emne = '$emne10' LIMIT 1", $Localhost);
if (mysql_num_rows($emne10_sql) == 1)
{
  //Findes i forvejen - variablen forbliver
 
}
else
{
  //Findes ikke endnu - indsættes og id'et biver nyt
  if ($emne10 == '') { ;
  } else {
  mysql_query("INSERT INTO mb_emne (emne) VALUES ('$emne10')", $Localhost);
  $emne10_sql = mysql_query("SELECT id FROM mb_emne WHERE emne = '$emne10' LIMIT 1", $Localhost);

}; };
// ______________________________________________________________________________________________________________________

mysql_query("
INSERT INTO mb_film [ her indsætter den i "hovedtabellen" om man vil.]

$sql_id = mysql_insert_id();
mysql_query(" INSERT INTO mb_emne_id (emne_id,film_id) VALUES
            ('".mysql_result($emne1_sql, 0)."', '$sql_id'),
            ('".mysql_result($emne2_sql, 0)."','$sql_id'),
            ('".mysql_result($emne3_sql, 0)."','$sql_id'),
            ('".mysql_result($emne4_sql, 0)."','$sql_id'),
            ('".mysql_result($emne5_sql, 0)."','$sql_id'),
            ('".mysql_result($emne6_sql, 0)."','$sql_id'),
            ('".mysql_result($emne7_sql, 0)."','$sql_id'),
            ('".mysql_result($emne8_sql, 0)."','$sql_id'),
            ('".mysql_result($emne9_sql, 0)."','$sql_id'),
            ('".mysql_result($emne10_sql, 0)."','$sql_id')", $Localhost);
Avatar billede duejensen Nybegynder
17. april 2006 - 08:27 #1
Puha, den var lang.

For det første bør du bruge et array til emnerne, i stedet for $emne1, $emne2, $emne3 osv. Så kan du lave et loop (f.eks. en for løkke)

Det næste der bør ændres, er at du skal starte med at indsætte i hovedtabellen, og så finde film_id inden du begynder at kontrollere emnerne, og så indsætte i mb_emne_id et ad gangen.

Følgende script laver vist det du har behov for:
---------------------------


$filmtitel="bla bla bla";

$emner=array("emne1", "krimi", "emne4", "dyr", "action", "gyser");


//  her indsætter den i "hovedtabellen" om man vil.


mysql_query("INSERT INTO mb_film(titel) values ('$filmtitel')") or die(mysql_error());


$film_id = mysql_insert_id();

for ($i=0; $i<count($emner); $i++)
{
        // bemærk, her har jeg intet check på om $emner[$i] er blank, det
        // kan man jo godt tilføje
    // undersøg om vi har $emner[$i] i forvejen

    $emne_sql = mysql_query("SELECT id FROM mb_emne WHERE emne = '$emner[$i]' LIMIT 1");
    if (mysql_num_rows($emne_sql) == 1)
    {
          //Findes i forvejen - læs id
        $emne_id=mysql_result($emne_sql,0); 
    }
    else
    {
          //Findes ikke endnu - indsættes og id'et biver nyt
        mysql_query("INSERT INTO mb_emne (emne) VALUES ('$emner[$i]')");
        $emne_id = mysql_insert_id();

    }
    mysql_query("INSERT INTO mb_emne_id (emne_id,film_id) VALUES
            ($emne_id, $film_id)");

}
Avatar billede jedimaster Nybegynder
17. april 2006 - 10:51 #2
Det er rimelig lovende ud. Jeg prøver den lige af og vender tilbage - Tak indtil videre.
Kan iøvrigt se du (duejensen) er ny her på eksperten.dk - velkommen ;-)
Avatar billede duejensen Nybegynder
17. april 2006 - 13:58 #3
Takker.

Ja, jeg er ny her på eksperten, men det skal jo ikke forhindre mig i at besvare spørgsmål :-)
Avatar billede jedimaster Nybegynder
11. maj 2006 - 14:12 #4
duejensen - giver du et svar. Jeg kom frem til en løsning!
Avatar billede duejensen Nybegynder
11. maj 2006 - 14:17 #5
Fino
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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