ein Teil der URL extrahieren

cofter

Erfahrenes Mitglied
Hi,

ich bin gerade dabei ein größeres Projekt zu verwirklichen, hänge aber gerade fest und weiss nicht mehr weiter. :(

Ich möchte den inhalt von level aus der URL extrahieren.
Nach langem überlegen und durchstöbern der PHP-Referenz bin ich auf $parse_url gestoßen. Das funktioniert soweit auch, nur mein Problem ist das er mir "id=c03&level=20"
ausgibt wo ich aber nur die 20 brauche (die sich je nach level natürlich ändert).
Ich habe dann versucht mit eregi die Zahl in eine Variable zu packen aber entweder ist mein Ausdruck falsch oder der Weg den ich eingeschlagen habe.
Bin für andere Lösungen offen und hoffe auf eure Hilfe.

mfg
Marko

PHP:
<?php

$url = "index.php?id=c03&level=20";

$url_array = parse_url($url);
echo "<br />" .$url_array['query']. "<br />";

if (eregi ("([0-9])",$url_array['query'], $regs)) {
	echo "$regs[0]";
}

$sql = mysql_query("SELECT * FROM rezepte WHERE referenz LIKE 'c03' AND level LIKE '$url_array[query]'");


while ($result = mysql_fetch_array($sql)) {
		echo $result['rezeptname']."<br />";
		echo $result['klasse']."<br />";
		echo $result['level']."<br /><br />"; }

?>
 
Probier mal Folgendes:
PHP:
<?php

	$url = 'index.php?id=c03&level=20';

	if( preg_match('/(?:[&?])level=([0-9]+)(?:&|$)/', $url, $matches) ) {
		var_dump( $matches );
	}

	$query = '
		SELECT
		        *
		  FROM
		        `rezepte`
		  WHERE
		        `referenz` LIKE "c03"
		    AND `level` LIKE "'.$matches[1].'"
		';
	$result = mysql_query($query);

	while( $row = mysql_fetch_array($result, MYSQL_ASSOC) ) {
		echo $row['rezeptname'].'<br />';
		echo $row['klasse'].'<br />';
		echo $row['level'].'<br /><br />';
	}

?>
 
Wow vielen Dank für die schnelle Hilfe!
Funktioniert super. *freu*

Kann ich auch in dem Ausdruck die ID=c03 einbringen oder müsste ich dafür einen extra Ausdruck machen?
Sonst müsste ich für jede ID eine extra Abfrage machen. Wäre schön wenn sich das auch Automatisieren ließe.

Vielen Dank nochmal :)
 
Gumbo du warst schneller mit deinem Post.
Ich habs gerade selbst gefunden. :)

PHP:
<?php
    
    
    $level = $_GET['level']; 
    $id = $_GET['id'];
    
$sql = mysql_query("SELECT * FROM rezepte WHERE referenz LIKE '$id' AND level LIKE '$level'");


while ($result = mysql_fetch_array($sql)) {
		echo $result['rezeptname']."<br />";
		echo $result['klasse']."<br />";
		echo $result['level']."<br /><br />"; }

?>


Es führen ja viele Wege nach Rom. ;D
Danke für deine Hilfe.
 
Hi,

obwohl sich das Thema ja schon erleditg hat, PHP haut auch eine Funktion die dir eine URL so oparst, als wäre sie als $_GET übergeben worden:

Auszug aus der PHP-manual => http://www.php.net/parse_str
PHP:
<?php
$str = "first=value&arr[]=foo+bar&arr[]=baz";
parse_str($str, $output);
echo $output['first'];  // value
echo $output['arr'][0]; // foo bar
echo $output['arr'][1]; // baz

?>
Grüße
 
Zurück