Fehler bei Ausgabe

counteract

Erfahrenes Mitglied
Hallo!

Ich habe folgende Problemstellung:

Ich lasse mir mit Hilfe von PHP Daten aus meiner DB ausgeben, welche dann auf eine weitere Seite verlinkt sind, diese sollen dann ausgegeben werden.

Diese Auslistung mache ich mit folgenden Code:

PHP:
<?
$dbhost="localhost"; 
$mydb=""; 
$dbuser=""; 
$dbpasswd="";

$db=mysql_connect($dbhost, $dbuser, $dbpasswd); 
mysql_select_db($mydb, $db);

 if ($result = mysql_query ("SELECT projekt_id, pname FROM projekt_gep"))
 {
    while ($line = mysql_fetch_array ($result, MYSQL_ASSOC))
    {
    echo "<a href=projektform.php?projekt_id=" . $line["projekt_id"] . ">" . $line["pname"] . "</a>","<br>";
    }
 }
?>

In der nächsten Datei wo die Daten dann ausgegeben werden schaut der Code so aus:

PHP:
<?php 
$dbhost="localhost"; 
$mydb=""; 
$dbuser=""; 
$dbpasswd="";

$db=mysql_connect($dbhost, $dbuser, $dbpasswd); 
mysql_select_db($mydb, $db);

$sql = "SELECT pname, pbeginn FROM projekt_gep WHERE projekt_id = " . $_POST['projekt_id'];
 
echo '<input type="text" name="projekt_id" value="'.$sql['projekt_id'].'"><br />';
echo '<input type="text" name="pname" value="'.$sql['pname'].'"><br />';

...

Jedoch werden Falsche Werte ausgegeben. Es erscheit dann in beiden Feldern der Wert S in den Textfeldern.

Was ist denn an diesem Code falsch Wies jemand wo der Fehler liegt?

MfG

Counteract
 
Ist ja auch kein $_POST was du übergibst, sondern ein $_GET... Und bitte die Werte prüfen, Stichwort SQL-Injection. Sollte es sich um ein Integer handeln, wovon ich mal ausgehe, dann hilft dir u.A. [phpf]intval[/phpf] weiter...
 
HTML:
<a href=projektform.php?projekt_id=" . $line["projekt_id"] . ">
Ist dein Link, richtig? Also übergibst du project_id in der URL als Variable. Also steht es als $_GET und nicht $_POST zur Verfügung... Ok?
Also:
PHP:
$sql = "SELECT pname, pbeginn FROM projekt_gep WHERE projekt_id = " . intval($_GET['projekt_id']);

Hab ich mich vorher soo unklar ausgedrückt?

Nachtrag
Was ja total fehlt, ist das Absenden der Query an die Datenbank...
 
Zuletzt bearbeitet:
Sorry dass ich mich grad so dumm anstelle aba ich versteh das nich so ganz... leider!

Kannst du einen Newbie wie mir mal zeigen wie die Sache gehn soll, da ich grad mit meinem Latein am ende bin... Bitte

Also das mit dem GET habe ich jetz verstanden... Und der link ist auch richtig, ich habe gerade nochmal geschaut und da wird die richtige id zugewiesen.
 
Zuletzt bearbeitet:
Hast du doch im ersten Script auch schon geschafft?
PHP:
<?php 
$dbhost="localhost"; 
$mydb=""; 
$dbuser=""; 
$dbpasswd="";

$db=mysql_connect($dbhost, $dbuser, $dbpasswd); 
mysql_select_db($mydb, $db);

$sql = "SELECT pname, pbeginn FROM projekt_gep WHERE projekt_id = " . intval($_GET['projekt_id']); 
$qry = mysql_query($sql);

while($row = mysql_fetch_array($qry))
{ 
    echo '<input type="text" name="projekt_id" value="'.$row['projekt_id'].'"><br />';
    echo '<input type="text" name="pname" value="'.$row['pname'].'"><br />';
    // ...
}
 
Juhuuu jetzt funktioniert es

Ich danke dir

Kannst du mir vielleicht noch Idiotensicher erklären warum genau das nun aufeinmal geht?
 
Also:
1. Du hast deine Variable project_id in der URL übergeben, wenn du eine Variable in der URL mitschickst, dann ist das also per (HTTP) GET geschehen und die Variable steht foglich im superglobalen Array $_GET zur Verfügung, daher $_GET['project_id'].

2. Du hast zwar dein Querystring geschrieben, aber den musst du ja noch mittels [phpf]mysql_query[/phpf] an die Datenbank abschicken und deine Ergebnisse mit [phpf]mysq_fetch_array[/phpf], [phpf]mysql_fetch_object[/phpf] oder [phpf]mysql_fetch_row[/phpf] "abholen".
 
Zurück