Link

Kalito

Erfahrenes Mitglied
Hallo Community,

ich habe in einer Datenbank Produktdaten und will Daten mittels Links an eine andere Seite schicken

Der link funktioniert auch wunderbar und sieht dann so aus

http://www.test.de/test/vergleichen.php?id=20

mit der id kann ich die Produktgruppe bestimmen.

Nun möchte ich aber das der Link SEO freundlicher wird,sprich das der Link so aussieht:

http://www.test.de/test/vergleichen.php?Produktname

wenn ich aber den sql_query auf den besagten produktname ändere, dann klappt es nicht und wird nichts übermittelt.

wie kann ich als am bessten die id als zahl senden und gleichzeitig den namen des produktes in der url anzeigen.

kann man vielleicht daten im link als geu und post variablen senden?
 
du kannst eine url-Umleitung in der .htaccess einrichten. Dann hast du zb einen Link in der Art von
Code:
http://www.test.de/test/vergleichen/Produktname/30

Das ganze nennt sich Rewrite. Hab mal etwas gesammelt: http://wiki.yaslaw.info/wikka/PhpRewrite

In deinem Fall könnte das etwa so aussehen (Dies als .htaccess in das Verzeichnis von vergleichen.php ablegen)
Code:
#Rewrite Engine einschalten
    RewriteEngine on
#nur Pfade umleiten die keine Datei sind    
    RewriteCond %{REQUEST_FILENAME} !-f
#nur Pfade umleiten die kein Ordner sind
    RewriteCond %{REQUEST_FILENAME} !-d
#den Pfad vergleichen/irgendwas/[id] nach vergleichen.php?id=[id] weiterleiten
RewriteRule ^vergleichen\/[^\/]*\/([[:digit:]]+)$ vergleichen.php?id=$1 [L,QSA]
 
Wer als Parameter der wirkliche "Produktname" angegeben wird, kann man diesen nicht auch so auslesen:

PHP:
<a href="seitenname.php?produktname">link</a>

<?php

echo urldecode($_SERVER["QUERY_STRING"]);
// bzw. für die Abfrage
$sql = "SELECT * FROM artikel WHERE artikeltext = '" .urldecode($_SERVER["QUERY_STRING"]) ."'";
?>
 
Also ich hatte das jetzt so probiert

PHP:
$group = urlencode($daten['product_name'])
echo '<a href="index.php?site=2&id=$group"></a>';
Aber die Daten werden nicht übergegeben. Wenn ich auf der neuen Seite Var_dump reinhaue, dann wird zwar der produktname vollstzändig (inkl. Leerzeichen aber ohen Pluszeichen) angezeigt aber ich kann mit dem nicht arbeiten.
 
Wo wird der Produktname angezeigt, auf der Seite auf der der obige Link erzeugt wird?
Da oben kannst du dir "urlencode" noch sparen. So wie die Daten aus der Datenbank kommen, kannst du sie an den Link anhängen.

Wenn du mit "...kann mit dem nicht arbeiten..." meinst das du mit dem Wert keine SQL-Abfrage ausführen kannst, dann solltest du mal die Abfrage zeigen.

Erkläre mal genauer bis wo der Code jetzt richtig ausgeführt wird und wo genau was nicht stimmt.

Und wird in der echo-Anweisung die Variable $group überhaupt ausgelesen? Ich schreibe das immer so:

PHP:
echo '<a href="index.php?site=2&id=' .$group .'"></a>';
 
Ich habe eine Seite Auswahl.php mit mehreren dynamischen links.
PHP:
            echo '<table align="center"  cellpadding="0" cellspacing="3">';
            echo '<tr>';
                $id=1;
                while($id<=5){
                    $sql =  'SELECT * FROM test WHERE category_id = '.$cat.'';
                    $abfrage = mysql_query($sql);
                    while($daten = mysql_fetch_array($abfrage)){
                        $encode = $daten['product_name'];
                        $group = urlencode($encode);
                        if($id%4 == 1){
                            echo '</tr><tr>';
                        }
                        echo "<td><a href=\"body.php?id=$group\" class=\"bild\"><img src=\"".$daten['image_url']."\"   width=\"150px\" height=\"150px\" border=\"0\"/></a>  </td>";
                        $id++;
                    }
                }
            echo '</tr>';
            echo '</table>';
In der URL wird jetzt schön index.php?site=2&id=Das+ist+ein+Produkt angezeigt.

In der vergleichen.php brauche ich aber eine bestimmte gruppen_id, zu der das Produkt gehört.

Wollte es eigentlich so lösen:
PHP:
     $decode = $_GET['id'];
     $new = urldecode($decode);
     $sql = "SELECT group_id FROM test WHERE product_name='".$new."'  "  ;
     echo $sql;
     $id = mysql_query($sql);
Der SQL-Befehl ist richtig, da ich IHN, wenn ich es so, wie im echo ausgegeben, ín phpmyadmin teste das richtige ergebnis kommt. Aber in der php kommt nur Ressource id#4
und die Daten werden nicht ermittelt bzw die group_id nicht ermittelt
 
Nun mal abgesehen davon das ich den Produktnamen hierfür als ziemlich ungeeignet ansehe (warum nicht die Artikelnummer die ist garantiert eindeutig) wo gibst du die ermittelte ID aus.

Doch nicht etwa so:

PHP:
echo $id;

Das dürfte genau die Ausgabe erzeugen die du bekommst.

PHP:
echo mysql_result($id, 0, "group_id");

Sollte dagegen das gewünschte Ergebnis bringen.
 
Hallo,

Naja ich bekomme die Produktdaten so geliefert und kann daran nichts ändern. Da mir leider die Artikelnummern nicht zur Verfügung stehen, habe ich eine künstliche gruppen-ID geschaffen.Ich will sie eigentlich auch nicht angezeigt bekommen, nur wie kann ich dann mit der übermittelten id --> Produktnamen die Gruppen-id ermitteln
mein SQLcode list ja schon in meinem letzten Post. Das ergebnis von Var_dump ist "SELECT group_id FROM test WHERE 'Das ist ein Produkt'" und mit phpmyadmin getestet zeigt er mir auch die group_id an. Nur wird dann diese group_id nicht verarbeitet. Muss ich vielleicht noch ein mysql_fetch_array einbauen?

Gibt es vielleicht einen weg die Variable group_id in den Link mit zu versenden, aber als Post?
 
Zurück