php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 10.06.2008, 13:37  
Benutzer
 
Registriert seit: 24.05.2008
Beiträge: 37
b_i_g_b_o befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Formular und Ausgabe auf der gleiche Webseite

Hallo zusammen

habe folgendes vor und weiss nicht, wie ich das realisieren kann...

Ich habe eine MySQL-Datenbanktablle angelegt, die auch schon befuellt ist mit ein paar Tausend Datensaetzen. Mit Hilfe eines Formulars sollen nun nur die Datensaetze ausgebenen werden, die zu den Daten passen, die im Formular eingegeben wurden.

OK, das was Du grad gelesen hast, habe ich schon realisiert, naemlich mit zwei Dateien:

Eine Datei zur Anzeige des Formulars:

PHP-Code:
<html xmlns="http://www.w3.org/1999/xhtml">
<
head>
  <
title>Hello!</title>
  <
meta http-equiv="content-type" content="text/html; charset=UTF-8" />
</
head>
<
body>
<
form action="ausgabe.php" target="Ausgabe" method="post">
     
Ihr Name:<input type="Text" name="name"><br>
     
Rennen:<input type="Text" name="race"><br>
     <
input type="Submit" value="Absenden">
</
form>
</
body>
</
html

...und eine zweite Datei "ausgabe.php" zur Anzeige des Ergebnisses:

PHP-Code:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>Hello!</title>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
</head>
<body>
<?php
echo "Hier nun die Ausgabe:<br><br>";
$link mysql_connect("localhost""root""pwd")
or die(
"Keine Verbindung möglich: " mysql_error());
echo 
"Verbindung zum Datenbankserver erfolgreich<br><br>";
mysql_select_db("aks_results") or die("Auswahl der Datenbank fehlgeschlagen");
mysql_query("SET NAMES 'utf8'");
$name $_POST["name"];
$race $_POST["race"];
 
echo 
"SELECT * FROM s_results where s_runner_name like '%".$name."%' and s_race_name like '%".$race."%'<br><br>";
$abfrage "SELECT * FROM s_results where s_runner_name like '%".$name."%' and s_race_name like '%".$race."%'";
$ergebnis mysql_query($abfrage);
$menge mysql_num_rows($ergebnis);
echo 
"Es wurde(n) ".$menge." Eintrag/aege gefunden!<br>";
echo 
"<table border=\"1\">";
while(
$row mysql_fetch_object($ergebnis))
   {
      echo 
"<tr><td>$row->s_result_id</td><td>$row->s_race_name</td><td>$row->s_runner_name</td><tr>";
   }
echo 
"</table>";
?>
</body>
</html>
In zwei verschiedenen Dateien klappt das ja auch ganz gut, allerdings wird beim Aufrufen der Datei ausgabe.php aus dem Formular heraus das Formular quasi ausgeblendet/ueberschrieben. Nun moechte ich gerne das Formular und die Ausgabe zusammen in einem Browser-Fenster haben. Und jedesmal, wenn ich den Inhalt des Formulars veraendere und den Absenden-Button druecke, soll die Ausgabe im gleichen Fenster angepasst werden.


Sicher doch ganz einfach zu loesen, oder? Danke fuer Eure Hilfe.

PS. Ausprobiert habe ich schonmal HTML-Frames (schmaler Frame oben fuer Formular und Rest der Browser-Fensters fuer die Ausgabe), da habe ich allerdings das Problem, dass nach Klicken auf Absenden im unteren Frame der PHP-Code der Ausgabe-Datei angezeigt wird....
b_i_g_b_o ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 10.06.2008, 13:48  
Erfahrener Benutzer
 
Registriert seit: 28.03.2008
Beiträge: 1.847
HPR1974 wird schon bald berühmt werden
Standard

mach doch einfach Dein Form oben und dann ein
if($_SERVER['REQUEST_METHOD'] == 'POST'){
// hier kommt jetzt deine ganze ausgabe logik rein...
}
HPR1974 ist offline  
Alt 10.06.2008, 13:59  
Benutzer
 
Registriert seit: 24.05.2008
Beiträge: 37
b_i_g_b_o befindet sich auf einem aufstrebenden Ast
Standard

Danke vielmals HPR1974, klappt prima....
b_i_g_b_o ist offline  
Alt 10.06.2008, 14:10  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Das funktioniert zwar, aber so wird der Bereich in der IF-Abfrage ausgeführt egal von wo die POST-Daten kommen oder welches Formular die Daten sendet, kann ja mal vorkommen das 2 Formulare an die selbe Datei senden (z.B. wenn man alles über ne index.php laufen lässt). Deswegen sollte man sich das glaube ich besser nicht so angewöhnen.

PHP-Code:
if(isset($_POST['name_des_submit_buttons']))
{


So wirds nur ausgeführt wenn wirklich das gewünschte Formular abgesendet wird, natürlich nur wenn man den verschiedenen Submit-Buttons auch verschiedene Namen gibt.

Bei einem Formular das per Enter abgesendet (z.B. Suchfeld) wird sollte man auf den Wert eines Textfeldes prüfen, denn durchs das Enter wird nicht in jedem Browser der Submit-Button mitgesendet
cycap ist offline  
Alt 10.06.2008, 14:11  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Das ganze nennt sich Affenformular (ein guter Suchbegriff für weitere Recherchen) und könnte in deinem Fall etwa so aussehen:
PHP-Code:
<!DOCTYPE html PUBLIC "-//W3C//DtD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
  <title>Hello!</title>
  <meta http-equiv='content-type' content='text/html; charset=UTF-8' />
</head>
<body>
<?php
if (isset($_POST['abgeschickt')){
    echo 
'Hier nun die Ausgabe:<br /><br />';
    
$link mysql_connect('localhost''root''pwd')
        or die(
'Keine Verbindung m&ouml;glich: ' mysql_error());
    echo 
'Verbindung zum Datenbankserver erfolgreich<br /><br />';
    
mysql_select_db('aks_results') or die('Auswahl der Datenbank fehlgeschlagen');
    
mysql_query('SET NAMES 'utf8'');    
    
$name $_POST['name'];
    
$race $_POST['race'];
 
    
$abfrage "
        SELECT
            s_result_id,
            s_race_name,
            s_runner_name
        FROM 
            s_results 
        WHERE
            s_runner_name LIKE '%$name%'
        AND
            s_race_name LIKE '%$race%'"
;
// echo "$abfrage<br />";  // Testausgabe, falls nötig
    
$ergebnis mysql_query($abfrage) or exit(mysql_error());
    
$menge mysql_num_rows($ergebnis);
    echo 
'Es wurde(n) $menge Eintrag/&auml;ge gefunden!<br />';
    echo 
"<table border='1'>";
    while(
$row mysql_fetch_object($ergebnis)){
        echo 
"<tr><td>$row->s_result_id</td><td>$row->s_race_name</td><td>$row->s_runner_name</td><tr>";
    }
    echo 
'</table>';
}
else{
    echo 
"
        <form action='" 
$_SERVER['PHP_SELF'] . "' method='post'>
             Ihr Name: <input type='text' name='name' /><br />
             Rennen: <input type='text' name='race' /><br />
             <input type='hidden' name='abgeschickt' />
             <input type='submit' value='Absenden' />
        </form>"
;
}
</
body>
</
html>
__________________
Gruss
L
lazydog ist offline  
Alt 10.06.2008, 15:13  
Benutzer
 
Registriert seit: 24.05.2008
Beiträge: 37
b_i_g_b_o befindet sich auf einem aufstrebenden Ast
Standard

@lazydog: danke dafuer, das klappt auch prima, fuer meine Zwecke mit einem kleinen Nachteil, da ich ja entweder nur das Formular oder das Ergebnis sehe

@cycap: das ist eine schoene Ergaenzung, die ich gleich eingebaut habe


JETZT ist mit aber nochwas aufgefallen: nach Abschicken des Formulars wird das Ergebnis unterhalb des Formulars angezeigt --> OK
LEIDER ist nun der Inhalt des Formulars geloescht --> nicht so schoen ;-(

PHP-Code:
 
<body>
<form method="post" >
<table>
<tr><td>Name</td><td>Rennen</td></tr>
<tr><td><input type="Text" name="nameRun"></td>
<td><input type="Text" name="race"></td></tr>
</table>
<input type="Submit" value="Absenden" name="Res_Filter">
</form>
 
<?php
if(($_SERVER['REQUEST_METHOD'] == 'POST') and (isset($_POST['nameRun'])) ){
 
echo 
"Hier nun die Ausgabe:<br><br>";
$link mysql_connect("localhost""root""pwd")
or die(
"Keine Verbindung möglich: " mysql_error());
echo 
"Verbindung zum Datenbankserver erfolgreich<br><br>";
mysql_select_db("aks_results") or die("Auswahl der Datenbank fehlgeschlagen");
mysql_query("SET NAMES 'utf8'");
$name $_POST["nameRun"];
$race $_POST["race"];
 
echo 
"SELECT * FROM s_results where s_runner_name like '%".$name."%' and s_race_name like '%".$race."%'<br><br>";
$abfrage "SELECT * FROM s_results where s_runner_name like '%".$name."%' and s_race_name like '%".$race."%'";
$ergebnis mysql_query($abfrage);
$menge mysql_num_rows($ergebnis);
echo 
"Es wurde(n) ".$menge." Eintrag/aege gefunden!<br>";
echo 
"<table border=\"1\">";
while(
$row mysql_fetch_object($ergebnis))
   {
      echo 
"<tr><td>$row->s_result_id</td><td>$row->s_race_name</td><td>$row->s_runner_name</td><tr>";
   }
echo 
"</table>";
 
}
 
?>
</body>
</html>
Wie kann ich denn die urspruenglichen Suchbegriffe behalten? Ich vermute, die werden geloescht, da ja die Seite neu aufgerufen wird. Muesste ich diese Werte per $_POST[] in die Values des Formulars eintragen?

Danke fuer Feedback. Ich probier derweils natuerlich weiter fleissig...
b_i_g_b_o ist offline  
Alt 10.06.2008, 15:15  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Zitat:
Zitat von b_i_g_b_o Beitrag anzeigen
Wie kann ich denn die urspruenglichen Suchbegriffe behalten? Ich vermute, die werden geloescht, da ja die Seite neu aufgerufen wird. Muesste ich diese Werte per $_POST[] in die Values des Formulars eintragen?
Warum fragst du wenn du doch weisst wies geht?
cycap ist offline  
Alt 10.06.2008, 15:20  
Benutzer
 
Registriert seit: 24.05.2008
Beiträge: 37
b_i_g_b_o befindet sich auf einem aufstrebenden Ast
Standard

Danke fuer die Bestaetigung...
b_i_g_b_o ist offline  
Alt 10.06.2008, 15:45  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Ich habe dir eigentlich aus nur so viel Code geschrieben, um dich auf ein paar andere Dinge hinzuweisen:
  • Wenn du im Header schon xhtml deklarierst, benutze auch xhtml, dh. alle Tags geschlossen und alle Tag- und Attribut-Bezeichnungen, ebenso Attributwerte klein geschrieben
  • kein SELECT * FROM v.a. wenn du nur drei Attribute brauchst
  • Code bitte vernünftig einruecken
  • Auch SQL-Code kann anständig formatiert werden
  • mysql_error() immer abfragen
  • Error-Reporting einschalten
Wenn man all das berücksichtigt, nehme ich jetzt nochmals meinen Code, aber so das das Formular immer, und vor dem Resultat angezeigt wird, und die Werte in den Feldern auch erhalten bleiben
PHP-Code:
<!DOCTYPE html PUBLIC "-//W3C//DtD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
  <title>Hello!</title>
  <meta http-equiv='content-type' content='text/html; charset=UTF-8' />
</head>
<body>
<?php
error_reporting
(E_ALL);
$name = isset($_POST['name']) ? $_POST['name'] : '';
$name = isset($_POST['race']) ? $_POST['race'] : '';
echo 
"
    <form action='" 
$_SERVER['PHP_SELF'] . "' method='post'>
            Ihr Name: <input type='text' name='name' value='$name'/><br />
            Rennen: <input type='text' name='race' value='$race' /><br />
            <input type='hidden' name='abgeschickt' />
            <input type='submit' value='Absenden' />
    </form>"
;
}
if (isset(
$_POST['abgeschickt')){
    echo 
'Hier nun die Ausgabe:<br /><br />';
    
$link mysql_connect('localhost''root''pwd')
        or die(
'Keine Verbindung m&ouml;glich: ' mysql_error());
    echo 
'Verbindung zum Datenbankserver erfolgreich<br /><br />';
    
mysql_select_db('aks_results') or die('Auswahl der Datenbank fehlgeschlagen');
    
mysql_query('SET NAMES 'utf8'');
 
    
$abfrage "
        SELECT
            s_result_id,
            s_race_name,
            s_runner_name
        FROM 
            s_results 
        WHERE
            s_runner_name LIKE '%$name%'
        AND
            s_race_name LIKE '%$race%'"
;
// echo "$abfrage<br />";  // Testausgabe, falls nötig
    
$ergebnis mysql_query($abfrage) or exit(mysql_error());
    
$menge mysql_num_rows($ergebnis);
    echo 
'Es wurde(n) $menge Eintrag/&auml;ge gefunden!<br />';
    echo 
"<table border='1'>";
    while(
$row mysql_fetch_object($ergebnis)){
        echo 
"<tr><td>$row->s_result_id</td><td>$row->s_race_name</td><td>$row->s_runner_name</td><tr>";
    }
    echo 
'</table>';
}
</
body>
</
html>
Vergleiche jetzt bitte auch mal die Lesbarkeit mit deinem Code
__________________
Gruss
L
lazydog ist offline  
Alt 13.06.2008, 11:44  
Benutzer
 
Registriert seit: 24.05.2008
Beiträge: 37
b_i_g_b_o befindet sich auf einem aufstrebenden Ast
Standard

lazydog, danke vielmals. Ich werd mein Bestes geben, um meinen Code ebenso leserlich zu gestalten...
b_i_g_b_o ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Keine Ausgabe von Variablen bei Formular luckynuts PHP Tipps 2008 11 15.07.2008 19:34
[Erledigt] Problem mit Formular Mohamedal_hakim PHP Tipps 2008 16 15.07.2008 13:10
[Erledigt] Datum Ausgabe Mysql krackmoe PHP Tipps 2008 9 10.07.2008 20:33
[Erledigt] system() Ausgabe html formatieren pervenches PHP Tipps 2008 3 09.07.2008 10:37
[Erledigt] Fehler im Formular pev PHP Tipps 2008 8 26.06.2008 03:06
[Erledigt] Formatierung im Textfeld per Formular mit übergeben PlanLos23 PHP Tipps 2008 2 25.06.2008 09:05
[Erledigt] Formular in eine Datenbank eintragen Inchie PHP Tipps 2008 6 25.06.2008 08:50
[Erledigt] echo ausgabe funktioniert nicht (anfänger) Dragan PHP Tipps 2008 22 17.06.2008 20:34
[Erledigt] Datensätze löschen nach Auswahl aus Formular (checkboxen) asyoulikeit Datenbanken 3 13.06.2008 15:56
[Erledigt] phpinfo() ohne Ausgabe k.-d. PHP Tipps 2008 14 13.06.2008 07:51
[Erledigt] Moechte BOOL Werte 0 und 1 bei der Ausgabe uebersetzen in sprechende Texte b_i_g_b_o PHP Tipps 2008 13 10.06.2008 16:37
[Erledigt] Php Mysql ausgabe in Tabelle / Gruppentrennung xitam PHP Tipps 2008 3 28.05.2008 22:03
[Erledigt] Formular ausgabe Array cuep PHP Tipps 2008 11 27.05.2008 17:45
[Erledigt] Formular -&gt; Mehrfachauswahl -&gt; Array? Timer PHP Tipps 2008 5 20.05.2008 20:44
Einfacher Eintrag über ein Formular an eine Webseite? Beitragsarchiv 13 06.01.2005 12:46

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php ausgabe auf gleicher seite, formular mit ausgabe, php formular abfrage gleiche seite, mysql formular ein ausgabe gleiches formular, php formular ausgabe auf gleicher seite, formular ausgabe selbe seite, php ausgabe im gleichen fenster, formular ausgabe auf derselben seite, form post ergebnis gleiche seite, html form submit gleiche seite, html formular ausgabe gleiche seite, html formular und ausgabe auf einer seite, php datenbankabfrage auf gleicher seite, ausgabe formular auf website, php ausgabe gleicher seite, php formularauswertung auf gleicher seite, php script output auf gleicher seite, html ausgabe nach button auf gleicher, php abfrage und ausgabe in einem fenster, php formularauswertung auf gleicher seite datenbankabfrage

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:06 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum