Leerzeichen im Link umwandeln

bazlivec

Mitglied
Hallo,

durch einen Link soll man zur Seite "xp.php?name=Linkname" gelangen.
Folgender Code ist vorhanden:

linkliste.php:
PHP:
while($row = mysql_fetch_array($abfrage))
{
   echo "<a href=\"xy.php?name=".$row['Name']."\">".$row['Name']."</a>";
}
Generiert die Links im Format "../xy.php?name=Der Peter Meier" - funktioniert!

xp.php:
PHP:
$name = $_GET["name"];
$abfrage = mysql_query("SELECT Name FROM Sheet1 WHERE Titel=$name")

//Ausgabe..
Die Zeile, in der der übergebene Name steht soll ausgegeben werden. Funktioniert leider nicht:
Code:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Peter Meier' at line 1

Ich schätze es liegt an den Leerzeichen im Link? Doch mit 'rawurlencode' konnte ich das Problem nicht lösen.. :(

lg
bazlivec
 
Du solltest einfache Anführungszeichen um die Variable $name im SQL-Query machen.

Außerdem solltest du noch [phpf]mysql_real_escape_string[/phpf] auf diese Variable anwenden, damit zu sicherstellen kannst, dass kein schädlicher Code das Query verändert.
 
Zunächst vielen Dank, klappt aber immer noch nicht ganz:

PHP:
$abfrage = mysql_query('SELECT Titel FROM Sheet1 WHERE Titel=$name')
Bringt: syntax error, unexpected T_VARIABLE
Klar, fehlen noch die ' '.

Wenn ich sie setzte:
PHP:
$abfrage = mysql_query("SELECT Titel FROM Sheet1 WHERE Titel='$name'")
Bringt: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in .. line 20
Zeile 20:
PHP:
while($row = mysql_fetch_array($result))

Habe alles mögliche an Kobinationen von " " und ' ' sowohl oben, als auch im unteren Codeteil versucht.
Leider ohne Erfolg..
 
PHP:
$name = mysql_escape_string($_GET['name']);
$abfrage = mysql_query("SELECT Titel FROM Sheet1 WHERE Titel='".$name."'")  or die (mysql_error());
 
Ähm, du speicherst das Ergebnis in $abfrage und verwendest dann $result für den Fetch? Sollte es nicht so lauten:

PHP:
while($row = mysql_fetch_array($abfrage))
 
Habe jetzt das von euch beiden übernommen. Jetzt gibt's zwar keinen Fehler mehr, doch bekomme ich eine blanko Seite ohne Ausgabe..

Die Ausgabe müsste doch stimmen?!

PHP:
while($row = mysql_fetch_array($abfrage))
{
    echo $row['Name'];
    echo $row['Sonstiges'];
    echo $row['DiesDas'];
}
 
PHP:
// Schreib mich in die erste Zeile des Scripts
error_reporting( E_ALL | E_STRICT );
ini_set( 'display_errors', 1 );
 
@saftmeister:

In der URL im ersten Post ist 'name' kleingeschrieben, aber im Code dann groß.


@bazlivec:

Bau doch am besten mal eine IF-Bedingung ein:
PHP:
/* name ist in der URL kleingeschrieben! */
if ( isset($_GET['name']) )
{
  $name = mysql_real_escape_string($_GET['name']);
  $abfrage = mysql_query("SELECT Titel FROM Sheet1 WHERE Titel='$name'") or die (mysql_error());
  
  while($row = mysql_fetch_array($abfrage))
  {
     echo $row['Titel'];
  }
}
else
{
  exit("Error: $_GET['name'] not set!");
}

Zu deinem Post #3:

Variablen in Strings werden nur dann interpretiert, wenn der String in doppelte Anführungszeichen eingeschlossen ist:
PHP:
$var = "World";
$str1 = "Hello $var!";  /* Wird zu: Hello World! */
$str2 = 'Hello $var!';   /* Wird zu: Hello $var!    */
 
Zurück