Linkanpassung für Rezepteseite

Wie wir alle wissen (sollten) ändert mod_rewrite keine Links im Script. Damit auch die Links auf Deiner Page auf die neuen "Rewrited URLs" zeigen bedarf es der Anpassung im Code. Fragen und Probleme rund um's Coding werden hier diskutiert.

Moderator: Super-Mod

Linkanpassung für Rezepteseite

Beitragvon Reiner » 29.06.2006 18:06

Hallo wer kann mir helfen.
Ich schaffe es einfach nicht den Code anzupassen.

Die Links sollten nach diesem Muster aussehen

http://www.rezepte-zubereiten.de/Auflau ... uflauf.htm

die .htaccess sieht so aus

Code: Alles auswählen
RewriteEngine on
RewriteRule ^[^/]+/([0-9]+)/[^/]+\.htm$ /recipe.php?recipeid=$1 [L]
RewriteRule ^[^/]+/([0-9]+)/[^/]+\.htm$ /list.php?pagenum=0&categoryid=$1 [L]
RewriteRule ^rezepte-([0-9]+)-(.*)\.htm$ /list.php?pagenum=0&categoryid=$1 [L]


und so diie noch nicht umgebaute http://www.rezepte-zubereiten.de/randomrecipe.php

Code: Alles auswählen
<?php

// randomrecipeoftheday.php MUST BE WORLD WRITEABLE - CHMOD 777
$recipe_file = "randomrecipeoftheday.php";

   include("config.php");
   include("dbax.php");
   include("common.php");

      $sql  = "select count(*) as c FROM recipes WHERE recipeid <> '' AND categoryid <> 14";

        $result = mysql_query($sql,$db);
   $recipe_count = mysql_result($result, 0, 'c') ;
zufalls-rezepte.php
srand;
$rand_recipe[] = rand(1,$recipe_count);

srand;
$rand_recipe[] = rand(1,$recipe_count);

srand;
$rand_recipe[] = rand(1,$recipe_count);

$rlist = "$rand_recipe[0], $rand_recipe[1], $rand_recipe[2]";

$html = "<!--ROTDSTART-->\n<ul>\n";

// loop and build the HTML to be inserted
foreach($rand_recipe as $recipeid){

   $sql = "select recipeid, title, date, rating from recipes where recipeid = '$recipeid'";
   $result = mysql_query($sql ,$db);


      if($result){
         $r = mysql_fetch_array($result);
         $title = $r["title"];
         $rating = $r["title"];
      }

   $html .="<li><a href='http://www.rezepte-zubereiten.de/recipe.php?recipeid=$recipeid'>$title</a>&nbsp;&nbsp;";

   $onstars = $rating;

   $offstars = 5 - $onstars;

      for ($i = 1; $i <= $onstars; $i++) {
         $html .="<img src=/images/staron2.gif>";
      }

      for ($f = 1; $f <= $offstars; $f++) {
         $html .="<img src=/images/staroff2.gif>";
      }
}

   $html .="</ul>\n<!--ROTDSTOP-->";

print "$html";


// suck in the contents of the rotd.php file as a string
$handle = fopen($recipe_file, "r");
$contents = fread($handle, filesize($recipe_file));
fclose($handle);


// Search & Destroy..get the current text...
// this gets everything between the "<!--ROTDSTART-->" tag and the "<!--ROTDSTOP-->" tag

$contents = preg_replace('/(<!--ROTDSTART-->)(.*)<!--ROTDSTOP-->/Usi', $html, $contents);


// did we get it? Let's see...
//print "$contents";


// re-write the rotd.php file....
// rotd.php MUST BE WORLD WRITEABLE - CHMOD 777
$fh = fopen($recipe_file, 'r+');
fwrite($fh, "$contents");

// wham bam, we're done, close the file
fclose($fh);

?>


Ich hoffe jemand kann mir helfen oder ist es zu schwierig?
Reiner
.
.
 
Beiträge: 36
Registriert: 06.11.2005 19:45
Wohnort: Bindlach

Beitragvon Bob » 30.06.2006 22:53

RewriteRule ^[^/]+/([0-9]+)/[^/]+\.htm$ /recipe.php?recipeid=$1 [L]
RewriteRule ^[^/]+/([0-9]+)/[^/]+\.htm$ /list.php?pagenum=0&categoryid=$1 [L]
Das funktioniert schon mal nicht. Den exakt gleichen Link kannst du nicht auf zwei unterschiedliche Dateien lenken, du musst Unterscheidungsmerkmale in die URL einbauen, was du wohl mit der dritten regel getan hast, somit ist die zweite überflüssig.


Ich glaube nicht, dass alle Links nur über
$html .="<li><a href='http://www.rezepte-zubereiten.de/recipe.php?recipeid=$recipeid'>$title</a>&nbsp;&nbsp;";
generiert werden (Menüs etc.). Diese Linkgenerirung jedenfalls musst du so abändern, dass das eben passt, ggf. zusätzliche Datenbankabfragen tätigen um die Kategorie etc. zu ermitteln.

Grüße
Robert
Bob
Moderator
Moderator
 
Beiträge: 5044
Registriert: 01.10.2004 13:10

Beitragvon Reiner » 01.07.2006 07:44

Doch.. es geht nur noch um diese eine Seite.
Mit den anderen Seiten hat mir schon mal jemand geholfen. Viielleicht warst es ja sogar Du ;-)

Da ging es um die list.php

Code: Alles auswählen
<?php include("theader.php"); ?>

<?php

   $categoryid = $_REQUEST['categoryid'];
   $letter = $_REQUEST['letter'];

   if ($letter) {

      $sql = "select recipeid, title, date, rating from recipes where title like '$letter%' and status = 'L' ";

   } else {

      $sql = "select recipeid, title, date, rating from recipes where categoryid = $categoryid and status = 'L' ";

   }

   $result = mysql_query($sql ,$db);
   $numrows = mysql_numrows($result);

   $lastpage = false;

   if ($_REQUEST['pagenum'] == 0) {
      $startrow = 0;
   } else {
      $startrow = 25 * $_REQUEST['pagenum'];
   }

   if ($numrows < $startrow + 25) {
      $endrow = $numrows;
      $lastpage = true;
   }

   if ($letter) {

      $sql = "select recipeid, title, date, rating from recipes where title like '$letter%' and status = 'L' limit $startrow,25";
      $pagetitle = "Rezepte mit dem Anfangsbuchstaben '$letter'";

   } else {

      $sql = "select * from categories where categoryid = $categoryid";
      $result = mysql_query($sql ,$db);
      $row = mysql_fetch_row($result);
      $pagetitle = $row[1];

      $sql = "select recipeid, title, date, rating from recipes where categoryid = $categoryid and status = 'L' limit $startrow,25";

   }

?>


    <TD align="left" valign="top" bgcolor="#DEDDDC">
      <table width="100%" border="0" cellspacing="5" cellpadding="5">
        <tr>
          <td valign="top">
            <TABLE width=100% cellpadding=5 cellspacing=0 border=0>

              <tr><td width=500 align=center>

                 <table cellpadding=1 cellspacing=1 border=0><tr><td bgcolor=#000000 width=500 height=20 valign=center align=center>
                    <table cellpadding=0 cellspacing=0 border=0><tr><td bgcolor=#cccccc width=498 height=18 valign=center align=left>
                       <font face="Arial, Helvetica, sans-serif" size="3"><b><?php printf($pagetitle); ?></b></font>
                     </td></tr></table>
                 </td></tr></table>

              </td></tr>

              <TR>
                <TD valign=top>

                <table cellspacing=0 cellpadding=2 border=0>
                   <tr>
                      <th width=300 bgcolor=#bbbbbb align=center><FONT face=arial size=2>Rezept</font></th>
                      <th width=85 bgcolor=#bbbbbb align=center><FONT face=arial size=2>angelegt am</font></th>
                      <th width=75 bgcolor=#bbbbbb align=center><FONT face=arial size=2>Abstimmung</font></th>
                     </tr>

                   <?php

$rowcolor = 1;


$result = mysql_query($sql ,$db);
$categoryid     = addslashes(htmlspecialchars($_GET['categoryid']));

                            ##### Cat-Name holen ####
                           $sql2 = "SELECT category FROM categories WHERE categoryid = '".$categoryid."' ";
                           $result2 = mysql_query($sql2 ,$db);
                           $row = mysql_fetch_array($result2);
                           $catname = $row["category"];

$sql = "select recipeid, title, date, rating from recipes where status = 'L' AND categoryid = '".$categoryid."' order by rating desc limit 0,10";
                        if ($myrow = mysql_fetch_array($result)) {

                           do {
                           
                           ##### ab hier Linkerzeugung #####
                           $link = "/".str_replace(' ', '-', $catname)."/".$myrow["recipeid"]."/".str_replace(' ', '-', $myrow["title"]);
                           ##### Linkerzeugung Ende ######
                              if ($rowcolor == 1) {
                                 $rowcolorhex = "#ffffff";
                                 $rowcolor = 0;
                              } else {
                                 $rowcolorhex = "#dddddd";
                                 $rowcolor = 1;
                              }


printf("<tr>");
printf("<td width=300 bgcolor=%s align=><FONT face=arial size=2><a href=%s.htm>%s</a></font></td>", $rowcolorhex, $link , $myrow["title"]);

printf("<td width=80 bgcolor=%s align=left><FONT face=arial size=2>%s</font></td>", $rowcolorhex, $myrow["date"]);
printf("<td width=75 bgcolor=%s><table bgcolor=%s border=0 cellspacing=0 cellpadding=0><tr>", $rowcolorhex, $rowcolorhex);
                              $onstars = round($myrow["rating"]);
                              $offstars = 5 - $onstars;

                              for ($i = 1; $i <= $onstars; $i++) {
                                 printf("<td width=15 bgcolor=%s align=center valign=center><FONT face=arial size=2><img src=images/staron2.gif></font></td>", $rowcolorhex);
                              }

                              for ($f = 1; $f <= $offstars; $f++) {
                                 printf("<td width=15 bgcolor=%s align=center valign=center><FONT face=arial size=2><img src=images/staroff2.gif></font></td>", $rowcolorhex);
                              }

                              printf("</tr></table></td>");
                              printf("</tr>");
                           } while ($myrow = mysql_fetch_array($result));

                        }

                        printf("<tr>");
                        if ($startrow > 0) {
                           printf("<td align=left><FONT face=arial size=2><a href=list.php?pagenum=%s&searchingred=%s&categoryid=%s&letter=%s>Previous Page</a></font></td>", $_REQUEST['pagenum']-1, $searchingred, $categoryid, $letter);
                        } else {
                           printf("<td>&nbsp;</td>");
                        }
                        printf("<td>&nbsp;</td>");
                        if ($lastpage == false) {
                           printf("<td align=left><FONT face=arial size=2><a href=list.php?pagenum=%s&searchingred=%s&categoryid=%s&letter=%s>Next Page</a></font></td>", $_REQUEST['pagenum']+1, $searchingred, $categoryid, $letter);
                        } else {
                           printf("<td>&nbsp;</td>");
                        }
                        printf("</tr>");

                     ?>

                 </table>

                </TD>
              </TR>

            </TABLE>

          </td>
        </tr>
      </table>
    </TD>

<?php include("tfooter.php"); ?>
Reiner
.
.
 
Beiträge: 36
Registriert: 06.11.2005 19:45
Wohnort: Bindlach


Zurück zu Programmierung & Scriptanpassung für mod_rewrite

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste