php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 20.06.2009, 14:42  
Neuer Benutzer
 
Registriert seit: 20.06.2009
Beiträge: 3
PHP-Kenntnisse:
Anfänger
Blinky befindet sich auf einem aufstrebenden Ast
Standard Ergebnis von Select-Abfrage bei Klick an neue Abfrage senden

Hallo zusammen,

ich habe nach eine Lösung für dieses kleine Problem gegoogelt und wurde dabei zu diesem Board verwiesen.

Ich hab versucht nach sinnvollen Synonymen zu suchen. Leider war alles erfolglos.


Ich möchte gerne folgendes umsetzen:

Diese Code steht und funktioniert:
PHP-Code:
<?php
$DBhost 
"localhost";
$DBuser "***";
$DBpass "***";
$DBName "***";
$table "test";

$verbindung=mysql_connect($DBhost,$DBuser,$DBpass) or die("Ich kann Sie leider nicht verbinden.");                        //Zu DB verbinden

@mysql_select_db $DBName ) or die("Ich kann die Datenbank $DBName leider nicht abrufen.");           // DB auswählen

if  (empty($_REQUEST["item"]))
{
$sql = ("SELECT item_id, name, price FROM $table WHERE (name LIKE 'kdfhjdhfgdjfhgdfjgjdhfjdfhgjdfg') ORDER by name");}
else
{
$sql = ("SELECT item_id, name, price FROM $table WHERE (name LIKE '%"$_REQUEST["item"]."%') ORDER by name");}

?>



<div align="center">
  <form method="post" action="<?php echo $_REQUEST["PHP_SELF"]; ?>">
  <label>
    <input type="text" name="item">
  </label>
      <input type="hidden" name="do" value="insert">
  <input type="submit" name="Item suchen" value="Item suchen" border="0" />
    <label></label><label>

    </label>
  </form><br />
  <table cellpadding="1" cellspacing="1" border="1">
    <TR>
      
      <TD><B>ID</B></TD>
      <TD><B>Name</B></TD>
      <TD><B>Preis</B></TD>
      
    </TR>
    
    
    <?php

echo mysql_error();

$result mysql_query $sql );

while ( 
$ergebnis mysql_fetch_array $result ) )
{

?>
    
    
    <tr>
      
      <TD><?=$ergebnis['item_id']?></TD>
      <TD><?=$ergebnis['name']?></TD>
      <TD><?=$ergebnis['price']?></TD>
      
    </tr>
    
    <?php

}

?>
    
    
  </table>
</div>

Bei diesem Teil wusste ich mir nicht anders zu helfen:
PHP-Code:
if  (empty($_REQUEST["item"]))
{
$sql = ("SELECT item_id, name, price FROM $table WHERE (name LIKE 'kdfhjdhfgdjfhgdfjgjdhfjdfhgjdfg') ORDER by name");} 
Ist nicht schön, aber das Resultat ist das, was ich haben wollte...


Wenn man in der Suchmaske dann zum Beispiel "Egg" eingibt, werden alle Einträge aus der DB-Tabelle "Test" aufgeführt, die im Feld "name" das Wort "Egg" enthalten.

Code:
  ID            Name            Preis
1234         Egg-Man      125.000
Man soll auf Egg-Man klicken können, dann wird die ID genommen und damit in einer neuen Abfrage (auch eine neue Tabelle) alles aufgeführt, was in der Zeile diese ID enthält.

Ohje... Ich hoffe, das war verständlich.


Ich habe in diesem Forum Search benutzt, aber ohne Erfolg.

Herzlichen Dank im Vorraus.

Blinky
Blinky ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 20.06.2009, 14:49  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.072
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

Hi,

habe mir erlaubt deine Abfrage etwas zu formatieren:

PHP-Code:
$sql "SELECT
              item_id   ,
              name      ,
              price
        FROM
              " 
$table  "
        WHERE
              name = 'kdfhjdhfgdjfhgdfjgjdhfjdfhgjdfg'
        ORDER BY
              name
"
;
$result mysql_query($sql) OR die (mysql_error());

while (
$row mysql_fetch_array($result)) {
  echo 
'<p>';
  echo 
$row["item_id"] . ' | ';
  echo 
'<a href="script.php?item=' $row["item_id"] . '">' $row["name"] . '</a>';
  echo 
'</p>';

Dort wird die ItemID an den Link gehängt! In der Datei script.php kannst du dann per _GET den Wert von `item` abrufen!
Ich hoffe, du hast das so gemeint.

PS. Benutze statt $_REQUEST besser $_GET und $_POST.

Gruß
Asipak ist offline   Mit Zitat antworten
Alt 20.06.2009, 22:32  
Neuer Benutzer
 
Registriert seit: 20.06.2009
Beiträge: 3
PHP-Kenntnisse:
Anfänger
Blinky befindet sich auf einem aufstrebenden Ast
Standard

Vielen Dank für deine Antwort Asipak. Das hat mir sehr geholfen!

Ich wusel mich gerade in PHP rein, bin also nicht wirklich vertraut damit.

Ich weiß leider nicht, wie ich deinen Rat beherzigen kann:
Zitat:
PS. Benutze statt $_REQUEST besser $_GET und $_POST.


Ich hab das Ganze letztendlich so umgesetzt:
PHP-Code:
<?php
$DBhost 
"localhost";
$DBuser "----";
$DBpass "----";
$DBName "----";
$table "----";

$verbindung=mysql_connect($DBhost,$DBuser,$DBpass) or die("Ich kann Sie leider nicht verbinden.");                        //Zu DB verbinden

@mysql_select_db $DBName ) or die("Ich kann die Datenbank $DBName leider nicht abrufen.");           // DB auswählen

if  (empty($_REQUEST["item"]))
$sql "SELECT
              item_id   ,
              name      ,
              price
        FROM
              " 
$table  "
        WHERE
              name = 'kdfhjdhfgdjfhgdfjgjdhfjdfhgjdfg'
        ORDER BY
              name
"
;
else
$sql "SELECT
              item_id   ,
              name      ,
              price
        FROM
              " 
$table  "
        WHERE
              name LIKE '%"
$_POST["item"]."%'
        ORDER BY
              name
"
;
?>

<div align="center">
  <form method="post" action="<?php echo $_GET["PHP_SELF"]; ?>">
  <label>
    <input type="text" name="item">
  </label>
      <input type="hidden" name="do" value="insert">
  <input type="submit" name="Item suchen" value="Item suchen" border="0" />
    <label></label><label>

    </label>
  </form><br />
  <br />
  <br />
<?php
## Anzahl der Datensätze auslesen ##
$anz $sql->numrows();


echo 
"Es wurden $anz Ergebnisse gefunden.";
?>

  <table cellpadding="1" cellspacing="1" border="1">
    <TR>
      
      <TD width="60px"><B>ID</B></TD>
      <TD width="300px"><B>Name</B></TD>
      <TD width="100px"><B>Preis</B></TD>
      
    </TR>
    
    
    <?php

echo mysql_error();

$result mysql_query $sql );

while ( 
$ergebnis mysql_fetch_array $result ) )
{

?>
    
    
    <tr>
      
      <TD><?=$ergebnis['item_id']?></TD>
      <TD><a href="script.php?item=<?=$ergebnis['item_id'] . '">' $ergebnis['name'?></a></TD>
      <TD><?=$ergebnis['price']?></TD>
      
    </tr>
    
    <?php

}

?>
    
    
  </table>
</div>


Ein neues Problem ist aufgetreten, was ich nicht lösen kann.

Ich möchte gerne Anzahl der gefunden Datensätze anzeigen lassen.
Hab versuch das mit
PHP-Code:
<?php
## Anzahl der Datensätze auslesen ##
$anz $sql->numrows();


echo 
"Es wurden $anz Ergebnisse gefunden.";
?>
zu realisieren. Klappt aber nicht.

Zitat:
Fatal error: Call to a member function numrows() on a non-object

Hab aus einem Buch auch folgenden Code versucht:
PHP-Code:
print 'Es wurden ' $sql->numrows() . ' Einträge selektiert.'
Selber Fehler.



EDIT:
Zitat:
Ich weiß leider nicht, wie ich deinen Rat beherzigen kann:
Zitat:
PS. Benutze statt $_REQUEST besser $_GET und $_POST.
Erledigt. Das O'Reilly Kochbuch hilft also doch ein wenig. Ist ja fast wie ein Buch mit 7 Siegeln für mich...

Geändert von Blinky (20.06.2009 um 23:59 Uhr).
Blinky ist offline   Mit Zitat antworten
Alt 21.06.2009, 02:36  
Erfahrener Benutzer
 
Registriert seit: 03.06.2009
Beiträge: 140
PHP-Kenntnisse:
Anfänger
thomasE befindet sich auf einem aufstrebenden Ast
Standard

$sql enthält nur einen String, der deine Abfrage representiert, und hat somit keine Eigenschaft numrows.
PHP-Code:
$anz mysql_num_rows($result); 
muss es heissen.

in dem Buch, wurde vermutlich mysqli verwendet und $sql war eine Instanz von mysqli_stmt.



wenn ich das richtig verstehe, versuchst du mit
Code:
WHERE name = 'kdfhjdhfgdjfhgdfjgjdhfjdfhgjdfg'
eine Abfrage zu erzeugen, die 0 Datensätze zurückgibt, richtig?
Wenn ja, versuch es doch mal hiermit:
PHP-Code:
<?php
$anz 
0;
if  (!empty(
$_POST["item"]))
{
    
$sql "SELECT
              item_id,
              name,
              price
            FROM
              " 
$table  "
            WHERE
              name LIKE '%"
$_POST["item"]."%'
            ORDER BY
              name
            "
;

    
$result mysql_query($sql);
    
$anz mysql_num_rows($result);
}
echo 
"Es wurden $anz Ergebnisse gefunden.";
?>
  <TABLE cellpadding="1" cellspacing="1" border="1">
    <THEAD>
        <TR>
            <TH width="60px"><B>ID</B></TH>
            <TH width="300px"><B>Name</B></TH>
            <TH width="100px"><B>Preis</B></TH>
        </TR>
    </THEAD>
    <TBODY>
<?php
if($anz 0)
{
    while ( 
$ergebnis mysql_fetch_assoc $result ) )
    {
        echo 
'
        <TR>
            <TD>'
$ergebnis['item_id'] .'</TD>
            <TD><a href="script.php?item='
$ergebnis['item_id'] .'">' $ergebnis['name'] .'</a></TD>
            <TD>'
$ergebnis['price'] .'</TD>
        </TR>'
;
    }
}
?>
    </TBODY>
  </TABLE>
dann schickst du auch nur dann eine Abfrage an die Datenbank, wenn eine Eingabe getätigt wurde


und noch ein kleiner Fehler ist dir unterlaufen. PHP_SELF liegt im $_SERVER-Array, nicht in $_GET. Es muss also korrekt heissen:
PHP-Code:
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
n8 Thomas

Geändert von thomasE (21.06.2009 um 02:40 Uhr).
thomasE ist offline   Mit Zitat antworten
Antwort


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] Kein Ergebnis bei SELECT (MySQL 4.1.9) dr.e. Datenbanken 4 15.06.2008 19:54
[Erledigt] SELECT - Abfrage Datenbanken 2 04.01.2006 09:48
abfrage doppeltes ergebnis?? PHP Tipps 2007 7 14.12.2005 12:46
Im Select eine IFF Abfrage bendigo Datenbanken 4 21.11.2005 14:11
[Erledigt] Gleiches Select aber unterschiedliches Ergebnis Datenbanken 6 05.11.2005 14:13
Select Abfrage mit where-clause + if-Restriktion Datenbanken 4 25.07.2005 03:46
SELECT Abfrage.... seh den wald nich... center Datenbanken 8 01.06.2005 14:32
NOT LIKE Abfrage bringt kein Ergebnis in leerem Feld PHP Tipps 2005 4 26.03.2005 15:25
hochkommas in select abfrage.. ich raffe es nicht. hekto PHP Tipps 2005 31 22.01.2005 18:03
Datenbank Abfrage: Ergebnis nur Array maximus Datenbanken 2 20.01.2005 17:07
Datenbank Abfrage: Nur Array als Ergebnis maximus PHP Tipps 2005 7 20.01.2005 15:14
nach Abfrage mit Ergebnis weiterarbeiten..? Datenbanken 2 13.12.2004 01:01
[Erledigt] [gelöst] MySQL abfrage eingrenzen anhand einer SELECT Auswah Datenbanken 13 01.12.2004 18:42
[Erledigt] 2 mal select 1 form PHP-Fortgeschrittene 1 01.09.2004 20:13
Select abfrage in Schleife PHP Tipps 2004 2 20.07.2004 15:37

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php click datenbank abfragen, php klick abfragen, select klick, php select absenden, php select bei klick auslesen, select an datenbank senden, select abfrage in der datenbank eingeben, select auf ein ergebis einer abfrage, es wurden $anz ergebnisse gefunden, echo \es wurden $anz ergebnisse gefunden.\;, php select mit klick, php abfrage senden, php beim anklicken abfagen, select abfrage abschicken php, php abfrage neu senden, klick abfrage php, php sql select mit klick, select senden bei klick, php select abschicken, klick an ein html object senden

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:09 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