ID aus datenbank mit formular an andere seite übergeben

keifler

Mitglied
der kunde wählt aus einer liste und klickt das gewünschte an. diese übergabe will ich über die id machen. aber irgendwo habe ich einen denkfehler

while($row = mysql_fetch_object($ergebnis))
{
$id =$row->id;
GLOBAL $id;
echo '<center><table width="95%" border="1"><tr><td><form action="hotelseite.php" method="get">' . $row->name . '</td>
<td>' . $row->ort . '<br>' . $row->strassenummer . '<br>' . $row->telefon . '<br>Zimmerpreise ab&nbsp;' . $row->preise . '&nbsp;CHF</td>
<td><input name="' . $id . '" type="submit" value="ansehen"></form></td></tr>';
}
-------------------------------------------------------------------------
und soll soll sie auf der nächsten seite angezeigt werden:
---------------------------------------------------------------------------
require('verbindung.php');
$id = $_GET["id"];
$abfrage = "SELECT * FROM hotel WHERE ID = $id";
$ergebnis = mysql_query("SELECT * FROM hotel ");
while($row = mysql_fetch_object($ergebnis))...

ich dachte jetzt zeigt er nur den entsprechenden datesatz an, aber er zeigt alles.... blöd...
 
Was soll den das GLOBAL $id bewirken?

Bitte achte auf Groß- und Kleinschreibung und ein konkretes Problem könntest auch schildern!
 
Bitte den Code formatiert in [PHP]mein Code[/PHP] setzen.
So wie er jetzt da steht kann man das Ding kaum lesen
 
nehme mir deinen hinweis zu herzen und versuche es richtig:
und da du ja ganz in der nähe wohnst, kann ich mich endlich mal bei dir bedanken. wenn der schnee weg ist bringe ich dir einen schönen selbstgebackenen kuchen...

hier mein vollst. quellcode der alles hotels auflistet die in der datenbank stehen. Am ende jeders aufgelisteten datensatzes ist ein button und wenn ich den klicke soll das gewählte hotel angezeigt werden.

PHP:
 require('verbindung.php');
	  $abfrage = "SELECT id, name, ort, strassenummer, telefon, preise, kanton  FROM hotel"; //selektiere die spalte from der tabelle hotel

$ergebnis = mysql_query("SELECT id, name, ort, strassenummer, telefon, preise, kanton  FROM hotel");
while($row = mysql_fetch_object($ergebnis))
  { $id =$row->id;
  GLOBAL $id;   
  echo '<center><table width="95%"  border="1"><tr><td><form action="hotelseite.php" method="get">' . $row->name . '</td>
              <td>' . $row->ort . '<br>' . $row->strassenummer . '<br>' . $row->telefon . '<br>Zimmerpreise ab&nbsp;' . $row->preise . '&nbsp;CHF</td>
  <td><input name="' . $id . '" type="submit" value="ansehen"></form></td></tr>';
} 
mysql_close();

nun die seite auf der das gewählte hotel angezeigt werden soll, das erfolgt über die id. die global brauche ich um sie später, ausserhalb der while weiterzuverwenden.
PHP:
require('verbindung.php');
	 $id = $_GET["id"];
$abfrage = "SELECT * FROM hotel WHERE ID = $id";  //selektiere die spalte * from der tabelle hotel  " . (int) $_GET['id'];
$ergebnis = mysql_query("SELECT * FROM hotel "); 
	 while($row = mysql_fetch_object($ergebnis))
  {
    echo  '<h1>' . $row->name . '</h1><br> <td width="43%" align="left"><table width="90%"  border="0" cellpadding="0" cellspacing="3" class="smalltext">
        <tr>
          <td>Ort</td>
          <td>' .  $row->ort . '</td>
        </tr>
        <tr>
          <td width="42%">Adresse</td>
          <td width="58%">' .  $row->strassenummer . '</td>
        </tr>
        <tr>
          <td>Telefonnummer</td>
          <td>' .  $row->telefon . '</td>
        </tr>
        <tr>
          <td>Mail</td>
          <td>' .  $row->mail . '</td>
        </tr>
        <tr>
          <td><span class="smalltext">Internet</td>
          <td>' .  $row->internet . '</td>
        </tr>
      </table></td> <td width="12%"><center>
      <img src="images/fileprint.png" width="40" height="40" class="smalltext">diese Seite drucken
    </center>
      </td>
  </tr>
  <tr>
    <td colspan="3" align="left">' .  $row->beschreibung . '</td>
  </tr>
  <tr>
    <td colspan="3" align="left"><h4>Besonderheiten:</h4>' .  $row->besonderheiten . '</td>'; 
	$mail = $row->mail;
	GLOBAL $mail;
	  $id =$row->id;
  GLOBAL $id;
	 } 
	mysql_close();
 
item: Beim zweiten PHP-Code erstellst du ein $abfrage mit der id als Kriterium.
Warum führst du dann aber mysql_query() auf ein neues SQL ohne Filter aus und nicht auf $abfrage?

PHP:
$abfrage = "SELECT * FROM hotel WHERE ID = $id"; 
//Diese Zeile ist mMn falsch:
$ergebnis = mysql_query("SELECT * FROM hotel ");
//und sollte so aussehen
$ergebnis = mysql_query($abfrage);

item: De ID ist auch ausserhalb der while-schleife gültig ohjne globals. Das brauchst du eher bei functions und classes.
 
habe es geändert und es sieht jetzt so aus und ich bekomme folgende meldung:
------------------------------------------------------------------------------------------------------------------------
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /www/htdocs/hotela/hotelseite.php on line 30
------------------------------------------------------------------------------------------------------------------------
PHP:
require('verbindung.php');
	 $id = $_GET["id"];
$abfrage = "SELECT * FROM hotel WHERE ID = $id";  //selektiere die spalte * from der tabelle hotel  " . (int) $_GET['id'];
$ergebnis = mysql_query($abfrage);  
	 while($row = mysql_fetch_object($ergebnis))
  {
    echo  '<h1>' . $row->name . '</h1><br> <td width="43%" align="left"><table width="90%"  border="0" cellpadding="0" cellspacing="3" class="smalltext">
        <tr>
          <td>Ort</td>
          <td>' .  $row->ort . '</td>
        </tr>
        <tr>
          <td width="42%">Adresse</td>
          <td width="58%">' .  $row->strassenummer . '</td>
        </tr>
        <tr>
          <td>Telefonnummer</td>
          <td>' .  $row->telefon . '</td>
        </tr>
        <tr>
          <td>Mail</td>
          <td>' .  $row->mail . '</td>
        </tr>
        <tr>
          <td><span class="smalltext">Internet</td>
          <td>' .  $row->internet . '</td>
        </tr>
      </table></td> <td width="12%"><center>
      <img src="images/fileprint.png" width="40" height="40" class="smalltext">diese Seite drucken
    </center>
      </td>
  </tr>
  <tr>
    <td colspan="3" align="left">' .  $row->beschreibung . '</td>
  </tr>
  <tr>
    <td colspan="3" align="left"><h4>Besonderheiten:</h4>' .  $row->besonderheiten . '</td>'; 
	$mail = $row->mail;
	GLOBAL $mail;
	  $id =$row->id;
  GLOBAL $id;
	 } 
	mysql_close();
 
Haha! Und wieder ien Fall für mein tutorial...
Da die diese Art von Fragen sehr oft kommt, habe ich mal ein Tutorial geschrieben wie man am besten auf Fehlersuche geht.
PHP MySQL Debug Queries
Geh es doch mal durch und falls du die Lösung nicht findest, poste mal das ausgegebe SQL-Statement ins Forum.

Damit wirst du merken, dass e sken $_GET['id'] gibt. Du msuchst die id nummer mit dem submit. Dein submittbutton hat so als Namen eine Nummer.
Erweiterer dein Formular mit eine hidden-field für die id
HTML:
<input type="hidden" name ="id" value="11" />
<input name="submit" type="submit" value="ansehen" />
 
Du bekommst so nicht die ID des Hotels übermittelt. Lass dir mal den Wert von $_GET[id] oder die SQL Anweisung am Bildschirm ausgeben, dann wirst du sehen das da der Wert "ansehen" drin steht.
 
Danke an alle...es ist soooo einfach. ich habe den Geistesblitz:
in der ersten Seite werden die daten aus der datenbank ausgelesen und in varable umgewandelt. Dann werden die variable mit einem inputfeld ganz normal mit einem formular übergeben und in der 2. datei ist nix mit datenbank sondern einfach nur die formularausgabe über die variable... Natürlich ist jeder datensatz ein separates formular. Und das wir in der while schleife geschrieben...
das einzige ich habe in den form-tag die id festgelegt, deren datensatz ausgegeben werden soll:
PHP:
<form name="' . $id. '" method="post" action="zieldatei>
 
Zurück