Suchabfrage mit bestimmten Kriterien

Deletemaster

Erfahrenes Mitglied
Hallo zusammen,
ich möchte eigentlich eine sehr simple Sache lösen:
Code:
SELECT * FROM Tabelle WHERE vrn LIKE (Wert aus TextBox vrn)

In C# würde das ganze so aussehen:
Code:
string str_vrn = txt_Vrn.Text; //zuweisung des Wertes von vrn
"SELECT * FROM Tabelle WHERE vrn LIKE ' " + str_Vrn + " ' ";

Nun ist ja ja wohl in PHP so, daß Variablen erst zur Laufzeit bestimmt werden...

Ausgabe:
PHP:
$result = mysql_query("select * from tabelle WHERE vrn LIKE <meine Variable_VRN") or die (mysql_error());
    if (mysql_num_rows($result) != 0)
    {
        $thisrow = '';
        while ($row = mysql_fetch_array($result))
        {
    $thisrow .= "<b>Vorname:</b>";
    $thisrow .= '<input type="text" value="'.$row['vorname'].'" />';
    $thisrow .= "<br>\n";
    $thisrow .= "<b>Nachname:</b>";
	$thisrow .= '<input type="text" value="'.$row['nachname'].'" />';
	$thisrow .= "<br>\n";

Das bedeutet: Ich möchte die Daten über einen eindeutigen Bezeichner (vrn) ausgeben lassen. Im Prinzip nichts anderes als eine Rückwärtssuche der Klicktel, da vrn die zusammengesetzte Vorwahl + Rufnummer beinhaltet
Der user muss vorwahl in eine Textbox eingeben und die Rufnummer in die nächste TextBox, diese Werte wiederum verkette ich und erhalte meine vrn.
diese weise ich einer Variablen zu und möchte diese Variable in meinem SELECT verwenden.
Ich hoffe ich habe mich nicht zu kompliziert ausgedrückt.

Vielen Dank für Eure Hilfe
 
Hi,

mach Dir einfach ein Formular mit den input-Feldern "vorwahl" und "rufnr" (z.B.). Die eingegebenen Werte findest Du in PHP dann im $_POST-Array ($_POST['vorwahl'] bzw. $_POST['rufnr']). Der Verkettungsoperator in PHP ist der Punkt ($var = $var1 . $var2).

Hilft das?

LG
 
Hallo kuddeldaddeldu,
danke erst mal für Deine Antwort.
Leider werde ich nicht komplett schlau daraus.

PHP:
<?php
$result = mysql_query("select * from tabelle") or die (mysql_error());
if ($result)
{
while ($row = mysql_fetch_array($result))
?>
echo "<input type=\"text\" name=\"name\" value=\"". $row["name"]."\" />";
<?php
}

Jetzt wird mir im Textfeld der Wert des Feldes ausgegeben. Prima

Jetzt möchte ich aber nach bestimmten Kriterien suchen:

Suchkriterium: Textfeld vorwahl, Textfeld telefon
Query: SELECT * FROM Tabelle WHERE vorwahl=Textfeld_vorwahl AND telefon=Textfeld_telefon

Ausgabe:
Textfeld_vorname = vorname (passend zur Telefonnummer)
Textfeld_nachname = nachname (passend zur Telefonnummer)

Ich habe einige Bücher zum Thema PHP/MySql aber ich habe kein anschauliches Beispiel gefunden.

Danke für Deine Hilfe
 
Zuletzt bearbeitet:
Also nach einigem Suchen bin ich auf folgendes gestossen:

Query mit Kriterien:

PHP:
$str_vorwahl = $_POST['txt_vorwahl'];
$str_telefon = $_POST['txt_telefon'];
$str_vrn = $str_vorwahl . $str_telefon;

<input name="str_vorwahl" type="text" id="str_vorwahl" value="txt_vorwahl" />
<input name="str_telefon" type="text" id="str_telefon" value="txt_telefon" />

"SELECT * FROM tabelle WHERE vrn=$str_vrn"
(vrn ist die zusammengesetzte VorwahlTelefon als eindeutiger Bezeichner)

PHP:
<?php
include("dbconnect.php");
if ($_REQUEST["submit"] == "Suche Datensatz")
{
	$query = "SELECT * FROM tabelle WHERE vrn=$str_vrn";

	mysql_query($query);
?>
echo "<input type=\"text\" name=\"name\" value=\"". $row["name"]."\" />";
<?php
}

Wäre das so Richtig?
 
PHP:
<?php 
    $zeige_input = false;
    if(isset($_POST['submit']))
    {
        $db = mysql_connect("Host","Benutzer","Passwort");
        mysql_select_db('Datenbank',$db) or die('Konnte keine Verbindung zur Datenbank herstellen');

        $query = 'SELECT 
                          *
                    FROM 
                           adresse
                   WHERE 
                           vname = "'.mysql_real_escape_string($_POST['vname']).'"
                     AND 
                           nname = "'.mysql_real_escape_string($_POST['nname']).'"';

        $result = mysql_query($query) or die(mysql_error());
        if($row = mysql_fetch_array($result))
        {
           $zeige_input = true;
        }           
    }
?>
HTML:
<form action="#" method="post" >
    <p>Vorname:</p>
    <input type="text" name="vname" value="<?php echo $_POST['vname'] ?>" ><br/>
    <p>Nachname:</p>
    <input type="text" name="nname" value="<?php echo $_POST['nname'] ?>" ><br/><br/><hr/>
    <?php
        if($zeige_input == true)
    {
    ?>
    <br/>
    <p>Ihre Telefonnummer ist:</p>
    <p>Vorwahl:</p>
    <input type="text" name="vorw" value="<?php echo $row['vorwahl'] ?>" ><br/>
    <p>Telefonnummer:</p>
    <input type="text" name="teln" value="<?php echo $row['telefonnr'] ?>" ><br/>
    <?php } ?>
    <br/>
    <input type="submit" name="submit" value="senden" />
</form>
 
Hi,

Wäre das so Richtig?

Was haben Tests ergeben? ;)

Wenn Du einem input-Feld den Namen "str_vorwahl" gibst, kommt der eingegebene Wert in $_POST['str_vorwahl'] an. Da bringst Du noch etwas durcheinander. Schau Dir RS9999's Code an und bau es auf Deine Inverssuche um.

LG
 
Hallo zusammen, ich habe versucht den code anzupassen, bekomme aber Fehlermeldungen über nicht definierte Variablen!?

seite: suche_ds.php
PHP:
<?php 
    $zeige_input = false;
    if(isset($_POST['submit']))
    {
        $db = mysql_connect("localhost","root","");
        mysql_select_db('adressen',$db) or die('Konnte keine Verbindung zur Datenbank herstellen');

        $query = 'SELECT 
                          *
                    FROM 
                           adressen
                   WHERE 
                           vorname = "'.mysql_real_escape_string($_POST['vorname']).'"
                     AND 
                           nachname = "'.mysql_real_escape_string($_POST['nachname']).'"';

        $result = mysql_query($query) or die(mysql_error());
        if($row = mysql_fetch_array($result))
        {
           $zeige_input = true;
        }           
    }
?>

Ausgabeseite, die aufgerufen wird: zeige_ds.php

PHP:
<form action="#" method="post" >
    <p>Vorname:</p>
    <input type="text" name="vorname" value="<?php echo $_POST['vorname'] ?>" ><br/>
    <p>Nachname:</p>
    <input type="text" name="nachname" value="<?php echo $_POST['nachname'] ?>" ><br/><br/><hr/>
    <?php
        if($zeige_input == true)
    	{
    ?>
    <br/>
    <p>Ihre Telefonnummer ist:</p>
    <p>Vorwahl:</p>
    <input type="text" name="vorwahl" value="<?php echo $row['vorwahl'] ?>" ><br/>
    <p>Telefonnummer:</p>
    <input type="text" name="telefon" value="<?php echo $row['telefon'] ?>" ><br/>
    <?php 
		} ?>
    <br/>
    <input type="submit" name="submit" value="senden" />
</form>

Fehlermeldung:

PHP Notice: Undefined index: vorname in C:\Inetpub\wwwroot\php\zeige_ds.php on line 4 PHP Notice: Undefined index: nachname in C:\Inetpub\wwwroot\\php\zeige_ds.php on line 6 PHP Notice: Undefined variable: zeige_input in C:\Inetpub\wwwroot\php\zeige_ds.php on line 8

Ist doch nicht ganz so simpel
 
Hi,

Fehlermeldung:

PHP Notice: Undefined index: vorname in C:\Inetpub\wwwroot\php\zeige_ds.php on line 4 PHP Notice: Undefined index: nachname in C:\Inetpub\wwwroot\\php\zeige_ds.php on line 6 PHP Notice: Undefined variable: zeige_input in C:\Inetpub\wwwroot\php\zeige_ds.php on line 8

Woher soll zeige_ds.php auch die Variablen von suche_ds.php kennen? Wenn suche_ds.php überhaupt angestossen wird (sehe ich nirgends). Hast Du den Code von RS9999 einfach kopiert?

LG
 
Zurück