Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Php - поиск и MySQL 2


Автор: BigN 28.5.2005, 14:00
Короче надо сделать поик по автору из Tabel: Verfasser ...




Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 
4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<h2>Traumgruppe GD2 - Elektronikdokument Datenbank </h2>
<h2>Implementation des 4. Blattes</h2>
<hr>
<h2>Teil 2: Suche in der DatenBank - Suchergebnisse</h2>
    <?php
        // information
        echo("begin<br>");
        
        $selSucTyp = $_REQUEST["selSucTyp"];
        $txtSucTer = $_REQUEST["txtSucTer"];
        trim($txtSucTer);
        if (!$selSucTyp || !$txtSucTer){
            echo("bitte fühlen Sie die Form!!!");
            exit();
        }
        $selSucTyp = addslashes($selSucTyp);
        $txtSucTer = addslashes($txtSucTer);
        
        // dummie : echo($selSucTyp);
        //echo($txtSucTer);
        //connect to dababase
        $dbcnn = mysql_connect("localhost","gd2","d02"); 
        if (!dbcnn){
            echo("database not connected");
            exit();
        }
        $dbsel = mysql_select_db("gd2");
        
        if (!dbsel){
            echo("database not selected");
            exit();
        }
        
        echo("preliminary tasks carried out <br>");
        
        if ($btnSubmit= "Submit"){
            echo("executing...<br>");
            
            
            switch ($selSucTyp){
/*            case "Titel":
                $suchCondition= "Titel like '%".$txtSucTer."%'";
                break;
            case "Dis":
                $suchCondition= "DispJahr=".$txtSucTer;
                break;    
*/
            case "Ver":
                $suchCondition= 
"Verfasser.Nachname = ".$txtSucTer." OR Verfasser.Vorname = ".$txtSucTer." 
AND Verfasser.Verid = wird_verfasst.Verid AND Dokument.Dokid = wird_verfasst.Dokid";
                break;
/*                default:
                $suchCondition= "true";
*/
            }
            
            $str1= "select * from Dokument, Verfasser, wird_verfasst 
WHERE Verfasser.Nachname = ".$txtSucTer." OR Verfasser.Vorname = ".$txtSucTer." 
AND Verfasser.Verid = wird_verfasst.Verid AND Dokument.Dokid = wird_verfasst.Dokid";

            $query= $str1;
            echo("query:<br>");
            echo($str1);    
            $result= mysql_query($query);
            $num_result= mysql_num_rows($result);
            echo("<p><b>".$num_result."</b> books found</p>");
            echo("<table border='1'>".
            "<tr><td>Dokument Id</td><td>Titel</td>
            <td>Dokument Typ</td><td>Disputation Jahr</td></tr>");
            for($i=0;$i<$num_result;$i++){
                $rows= mysql_fetch_array($result);
            echo("<tr>");
           echo("<td>".$rows[Dokid]."</td>");
           echo("<td>".$rows[Titel]."</td>");
           echo("<td>".$rows[Typ]."</td>");
                echo("<td>".$rows[DispJahr]."</td>");
            echo("</tr>");
                
            }
            echo("</table>");
        }
    ?>
    
</body>
</html>






Код


CREATE DATABASE gd2;
show databases;
use gd2;
CREATE TABLE Dokument(Dokid int(20) NOT NULL AUTO_INCREMENT, 
Titel varchar(100) NOT NULL, Typ varchar(20) NOT NULL, 
Dispjahr year(4) NOT NULL, PRIMARY KEY(Dokid) );

use gd2;
CREATE TABLE Verfasser( Verid int(20) AUTO_INCREMENT NOT NULL, 
Vorname varchar(30) NOT NULL, Nachname varchar(30) NOT NULL, 
Email varchar(30) default NULL, PRIMARY KEY(Verid));

use gd2;
CREATE TABLE wird_verfasst( Dokid int(20) NOT NULL, Verid int(20) NOT NULL);

INSERT INTO Dokument VALUES 
(1, 'Context Awareness in Information Logistics', 'Dissertation', 2005);

INSERT INTO Dokument VALUES 
(2, 'Exp 92 in Sevilla. Ziele, MaЯnahmen und Wirkungen', 'Diplomarbeit', 1998);

INSERT INTO Dokument VALUES 
(3, 'Weiblichkeit und aesthetisches Handeln bei zeitgenoessischen', 'Dissertation', 2004);


INSERT INTO Verfasser VALUES (1, 'Aulikki', 'Eromaeki', NULL);
INSERT INTO Verfasser VALUES (2, 'Ingrid', 'Wagner-Kantuser', NULL);
INSERT INTO Verfasser VALUES (3, 'Haselloff', 'Sandra','Haseloff@yahoo.com');
INSERT INTO Verfasser VALUES (4, 'Pamela', 'Heise', 'Franchesko@yahoo.com');


INSERT INTO wird_verfasst VALUES (1, 3);
INSERT INTO wird_verfasst VALUES (2, 4);
INSERT INTO wird_verfasst VALUES (3, 1);
INSERT INTO wird_verfasst VALUES (3, 1);
INSERT INTO wird_verfasst VALUES (3, 2);





ok search.html

Код
 <html>
<head>
<title>search database</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<form action="search.php" method="post" name="frmSearch">
    <table width="200" border="0" id="tblSearch">
       <caption>
        Dokument dababase search
        </caption>

    <tr>
     <td width="82">Verfasser</td>
     <td width="6"></td>
     <td colspan="2"><input name="txtVer" type="text" size="100"></td>
    </tr>
    <tr>
     <td>Title</td>
     <td>&nbsp;</td>

     <td colspan="2"><input name="txtTitle" type="text" size="100"></td>
    </tr>
    <tr>
      <td>Dokumenttyp</td>
      <td>&nbsp;</td>
      <td colspan="2"><input name="txtDoktyp" type="text" size="100"></td>
      </tr>
    <tr>

     <td>&nbsp;</td>
     <td>&nbsp;</td>
     <td width="488">&nbsp;</td>
        <td width="108"><input name="btnSubmit" type="submit" id="btnSubmit" value="Submit"></td>
    </tr>
</table>

</form>
</body>
</html>


[/code]

[/code]

Автор: Mal Hack 28.5.2005, 14:02
BigN и в чем проблема-то?
Поиск по базе - выборка. Запрос SELECT. Выполняешь, далее разбираешь результат.

Автор: BigN 28.5.2005, 14:50
проблема в том что после поиска ничего видно !!! ни одного результата

Автор: BigN 28.5.2005, 15:05
smile где то во здесь

$str1= "select * from Dokument, Verfasser, wird_verfasst

WHERE Verfasser.Nachname = ".$txtSucTer." OR Verfasser.Vorname = ".$txtSucTer."

AND Verfasser.Verid = wird_verfasst.Verid AND Dokument.Dokid = wird_verfasst.Dokid";


Автор: Joes 28.5.2005, 19:07
Вот это ".$txtSucTer." лучше возьми в одинарные кавычки...
А выводишь ты как???

Автор: BigN 29.5.2005, 00:42


a tak oni uje tam

25 $selSucTyp = addslashes($selSucTyp);
26 $txtSucTer = addslashes($txtSucTer);




ti eto imeesh vvidu

".$txtSucTer." ==>> ' ".$txtSucTer." '

Автор: Joes 29.5.2005, 07:14
нет просто '.$txtSucTer.', а то путаница быть может, у тебя весь запрос в двойных да и тут еще двойные...
Покажи как выводишь $str1, а то может просто вывод неверно составлен...

Автор: Mal Hack 29.5.2005, 11:50
BigN а в самой таблице записи есть? Посмотри через phpmyadmin.

Автор: BigN 29.5.2005, 12:14
tablizu s pomoshi phpmyadmin sdelal. smile

Автор: Mal Hack 29.5.2005, 12:17
Цитата(BigN @ 29.5.2005, 13:14)
tablizu s pomoshi phpmyadmin sdelal. smile

Я про данные говорю. Они там есть?
И еще. Запусти скрипт, добавив в начало строки:
Код
error_reporting( E_ALL );
ini_set( 'display_errors' ,'1' );

Автор: BigN 29.5.2005, 12:22

Joes, pomenyal :

$query = "select * from Dokument, Verfasser, wird_verfasst
WHERE Verfasser.Nachname = '.$txtSucTer.'
OR Verfasser.Vorname = '.$txtSucTer.'
AND Verfasser.Verid = wird_verfasst.Verid
AND Dokument.Dokid = wird_verfasst.Dokid";




resul'tat smile


query:
select * from Dokument, Verfasser, wird_verfasst WHERE Verfasser.Nachname = '.Einstein.' OR Verfasser.Vorname = '.Einstein.' AND Verfasser.Verid = wird_verfasst.Verid AND Dokument.Dokid = wird_verfasst.Dokid

0 books found
Dokument Id Titel Dokument Typ Disputation Jahr

Добавлено @ 12:24
2 tochki ubral


$query = "select * from Dokument, Verfasser, wird_verfasst
WHERE Verfasser.Nachname = '$txtSucTer'
OR Verfasser.Vorname = '$txtSucTer'
AND Verfasser.Verid = wird_verfasst.Verid
AND Dokument.Dokid = wird_verfasst.Dokid";

RESULT:

begin
preliminary tasks carried out
executing...
query:
select * from Dokument, Verfasser, wird_verfasst WHERE Verfasser.Nachname = 'Einstein' OR Verfasser.Vorname = 'Einstein' AND Verfasser.Verid = wird_verfasst.Verid AND Dokument.Dokid = wird_verfasst.Dokid

0 books found
Dokument Id Titel Dokument Typ Disputation Jahr
Добавлено @ 12:27

delo v tom chto u nas bolee chem 1 tabliz, i shas chitayu o funkziyah JOIN i UNION


no est nekotorie nedostatiki:

$query= "select * from Dokument
UNION
select * Verfasser
UNION
select * wird_verfasst
WHERE Verfasser.Nachname = '$txtSucTer'
OR Verfasser.Vorname = '$txtSucTer'
AND Verfasser.Verid = wird_verfasst.Verid
AND Dokument.Dokid = wird_verfasst.Dokid";
smile

Автор: PARROT 30.5.2005, 10:34
BigN, На кнопку Код, сил уже не хватает?
Приятнее читать твой код так:
Код

тут код.

Пользуйся пожалуйста! smile

Автор: BigN 30.5.2005, 19:09
mojet sledushiy raz tak i sdelayu, no izza paru strok glaza ne ustanut je... smile
smile

smile

peace

Автор: PARROT 30.5.2005, 19:28
Согласись, тут не пару строк:
Код

$query = "select * from Dokument, Verfasser, wird_verfasst 
WHERE Verfasser.Nachname = '.$txtSucTer.' 
OR Verfasser.Vorname = '.$txtSucTer.' 
AND Verfasser.Verid = wird_verfasst.Verid 
AND Dokument.Dokid = wird_verfasst.Dokid";

//resul'tat  


query:
select * from Dokument, Verfasser, wird_verfasst WHERE Verfasser.Nachname = '.Einstein.' OR Verfasser.Vorname = '.Einstein.' AND Verfasser.Verid = wird_verfasst.Verid AND Dokument.Dokid = wird_verfasst.Dokid

0 books found
Dokument Id Titel Dokument Typ Disputation Jahr

//Добавлено @ 13:24 
//2 tochki ubral


$query = "select * from Dokument, Verfasser, wird_verfasst 
WHERE Verfasser.Nachname = '$txtSucTer' 
OR Verfasser.Vorname = '$txtSucTer' 
AND Verfasser.Verid = wird_verfasst.Verid 
AND Dokument.Dokid = wird_verfasst.Dokid";

//RESULT:

begin
preliminary tasks carried out
executing...
query:
select * from Dokument, Verfasser, wird_verfasst WHERE Verfasser.Nachname = 'Einstein' OR Verfasser.Vorname = 'Einstein' AND Verfasser.Verid = wird_verfasst.Verid AND Dokument.Dokid = wird_verfasst.Dokid

0 books found
Dokument Id Titel Dokument Typ Disputation Jahr 

//delo v tom chto u nas bolee chem 1 tabliz, i shas chitayu o funkziyah JOIN i UNION
//no est nekotorie nedostatiki:

$query= "select * from Dokument
UNION
select * Verfasser
UNION
select * wird_verfasst 
WHERE Verfasser.Nachname = '$txtSucTer' 
OR Verfasser.Vorname = '$txtSucTer' 
AND Verfasser.Verid = wird_verfasst.Verid 
AND Dokument.Dokid = wird_verfasst.Dokid";

А 48 строк!

Автор: BigN 30.5.2005, 21:39
za chem so mnoi sporish , hochesh spamit' chto li?

a tak ya tye pokaju skolko tam strok esli kod ne mojesh razlichat' ... smile
Добавлено @ 21:42
Joes, pomenyal :

Код

$query = "select * from Dokument, Verfasser, wird_verfasst
WHERE Verfasser.Nachname = '.$txtSucTer.'
OR Verfasser.Vorname = '.$txtSucTer.'
AND Verfasser.Verid = wird_verfasst.Verid
AND Dokument.Dokid = wird_verfasst.Dokid";




resul'tat smile

Код

query:
select * from Dokument, Verfasser, wird_verfasst WHERE Verfasser.Nachname = '.Einstein.' OR Verfasser.Vorname = '.Einstein.' AND Verfasser.Verid = wird_verfasst.Verid AND Dokument.Dokid = wird_verfasst.Dokid


0 books found
Dokument Id Titel Dokument Typ Disputation Jahr

Добавлено @ 12:24
2 tochki ubral

Код

$query = "select * from Dokument, Verfasser, wird_verfasst
WHERE Verfasser.Nachname = '$txtSucTer'
OR Verfasser.Vorname = '$txtSucTer'
AND Verfasser.Verid = wird_verfasst.Verid
AND Dokument.Dokid = wird_verfasst.Dokid";


RESULT:

begin
preliminary tasks carried out
executing...
query:
select * from Dokument, Verfasser, wird_verfasst WHERE Verfasser.Nachname = 'Einstein' OR Verfasser.Vorname = 'Einstein' AND Verfasser.Verid = wird_verfasst.Verid AND Dokument.Dokid = wird_verfasst.Dokid

0 books found
Dokument Id Titel Dokument Typ Disputation Jahr
Добавлено @ 12:27

delo v tom chto u nas bolee chem 1 tabliz, i shas chitayu o funkziyah JOIN i UNION


no est nekotorie nedostatiki:
Код

$query= "select * from Dokument
UNION
select * Verfasser
UNION
select * wird_verfasst
WHERE Verfasser.Nachname = '$txtSucTer'
OR Verfasser.Vorname = '$txtSucTer'
AND Verfasser.Verid = wird_verfasst.Verid
AND Dokument.Dokid = wird_verfasst.Dokid";
smile

Автор: BigN 30.5.2005, 22:37
вообшемто у меня проблема с созданием запрос для трех связанных таблиц

Код


$query = "SELECT * FROM Verfasser as t3
            LEFT JOIN wird_verfasst as t2 ON (t3.Verid = t2.Verid)
            LEFT JOIN Dokument        as t1 ON (t1.Dokid = t2.Dokid)
            WHERE t3.Nachname = 'Einstein'";

            echo($query);
            $result= mysql_query($query);
            $num_result= mysql_num_rows($result);
            echo("<p><b>".$num_result."</b> books found</p>");


Автор: BigN 1.6.2005, 18:20
sam podtaralsa


Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<h2>Implementation des 4. Blattes</h2>
<hr>
<h2>Teil 2: Suche in der DatenBank - Suchergebnisse</h2>
    <?php
        // information
        echo("begin<br>");

        $selSucTyp = $_REQUEST["selSucTyp"];
        $txtSucTer = $_REQUEST["txtSucTer"];
        $selSorTyp = $_REQUEST["selSorTyp"];

        trim($txtSucTer);
        if (!$selSucTyp || !$txtSucTer){
            echo("bitte füllen Sie die Form aus!!!");
            exit();
        }
        $selSucTyp = addslashes($selSucTyp);
        $txtSucTer = addslashes($txtSucTer);
        $selSorTyp = addslashes($selSorTyp);
        $dbcnn = mysql_connect("localhost","gd2","d02");
        if (!dbcnn){
            echo("database not connected<br>");
            echo(mysql_error());
            exit();
        }
        $dbsel = mysql_select_db("gd2");

        if (!dbsel){
            echo("database not selected");
            echo(mysql_error());
            exit();
        }

        echo("preliminary tasks carried out <br>");

        if ($btnSubmit= "Submit"){
            echo("executing...<br>");


            switch ($selSucTyp){
            case "Titel":
                $str1= "select distinct * from Verfasser v, Dokument d, wird_verfasst w where d.Dokid= w.Dokid and w.Verid=v.Verid and "
                ."Titel like '%".$txtSucTer."%'";
                break;
            case "Dis":
                $str1= "select distinct * from Verfasser v, Dokument d, wird_verfasst w where d.Dokid= w.Dokid and w.Verid=v.Verid and "
                ."DispJahr= '".$txtSucTer."'";
                break;
            case "Ver":
                $str1="select distinct * from Dokument d, Verfasser v, wird_verfasst w where d.Dokid= w.Dokid and w.Verid=v.Verid and "
                ."v.Vorname = '".$txtSucTer."' or v.Nachname = '".$txtSucTer."'";
                break;
            default:
                //$str1= " select distinct * from Verfasser v, Dokument d, wird_verfasst w where d.Dokid= w.Dokid and w.Verid=v.Verid";
                $str1= "select distinct * from Verfasser v, Dokument d, wird_verfasst w where d.Dokid= w.Dokid and w.Verid=v.Verid"
                ." order by ".$selSorTyp
                ;
            }

            //test
            //$str1="select * from dokument,verfasser";
            $query= $str1;
            echo("query:<br>");
            echo($str1);
            $result= mysql_query($query);
            $num_result= mysql_num_rows($result);
            echo("<p><b>".$num_result."</b> book(s) found</p>");
            echo("<table border='1'>".
            "<tr><td>Dokument-Id</td> <td width='250'>Titel</td> <td>Dokumententyp</td> <td>Disputationsjahr</td>
            <td>Verid</td><td>Vorname</td><td>Nachname</td></tr>");
            for($i=0;$i<$num_result;$i++){
                $rows= mysql_fetch_array($result);
            echo("<tr>");
           echo("<td>".$rows[Dokid]."</td>");
           echo("<td>".$rows[Titel]."</td>");
           echo("<td>".$rows[Typ]."</td>");
                echo("<td>".$rows[Dispjahr]."</td>");
                echo("<td>".$rows[Verid]."</td>");
                echo("<td>".$rows[Vorname]."</td>");
                echo("<td>".$rows[Nachname]."</td>");
            echo("</tr>");

            }
            echo("</table>");
        }
    ?>

</body>
</html>

smile

Автор: Joes 1.6.2005, 21:14
Код

36: if (!dbsel){
            echo("database not selected");
            

$ забыл smile

Автор: BigN 2.6.2005, 01:07
pasibo Joes smile
Добавлено @ 01:07
pasibo Joes smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)