/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
MySql
Fra : Bengt Wendt Sørensen


Dato : 20-09-02 07:34

Hej jeg har en database med en tabel og 4 kolonner
database navn = bbbnoder
tabel navn = noner

Jeg havde tænkt mig at bruge PHP til at hente date gennem en søgefunktion.
Min ide er at man skriver 1 søgeord og så bliver alle kolonner søgt igennem
og alt hvad der ligner søgeordet vliver skrevet ud i en tabel.

Er her nogle gode ideer hvordan dette gøres ???

Venligst Bengt



 
 
Jesper Brunholm (20-09-2002)
Kommentar
Fra : Jesper Brunholm


Dato : 20-09-02 09:19

Bengt Wendt Sørensen wrote:
> Hej jeg har en database med en tabel og 4 kolonner
> database navn = bbbnoder
> tabel navn = noner

> Jeg havde tænkt mig at bruge PHP til at hente date gennem en søgefunktion.
> Min ide er at man skriver 1 søgeord og så bliver alle kolonner søgt igennem
> og alt hvad der ligner søgeordet vliver skrevet ud i en tabel.

Mener du virkelig det - at du vil lede i alle kolonner? i så fald må du
igang med noget a la (jeg skriver kun mysql-delen - at få det ud i php
kan vi vende tilbage til):

select * from noner where kolonne1Navn like '%søgtOrd%' or kolonne2Navn
like '%søgtOrd%' [etc., opremsning af kolonnerne]

Hvis du som jeg forventer i virkeligheden ønsker at søge alle rækker af
en given kolonne igennem så kan du nøjes med

select * from noner where kolonne1Navn like '%søgtOrd%'

Jeg har brugt kolonnerne "kolonne1Navn" og "kolonne2Navn" i eksemplet.
Det ville være en del lettere at svare hvis jeg vidste hvad dine
kolonner i virkeligheden hedder

Venligst

Jesper Brunholm

--
Phønix - dansk folk-musik fra unge musikere - http://www.phonixfolk.dk


Jesper Brunholm (20-09-2002)
Kommentar
Fra : Jesper Brunholm


Dato : 20-09-02 10:28

[Bengt har skrevet til mig privat - det er nok en fejl, så jeg poster
det lige her og svarer her]

Bengt Wendt Sørensen wrote:
> "Jesper Brunholm" <nospam@brunholm-scharff.dk> skrev i en meddelelse

>>>Min ide er at man skriver 1 søgeord og så bliver alle kolonner søgt
>>
> igennem
>
>>>og alt hvad der ligner søgeordet vliver skrevet ud i en tabel.
>>
>>Mener du virkelig det - at du vil lede i alle kolonner? i så fald må du
>>igang med noget a la (jeg skriver kun mysql-delen - at få det ud i php
>>kan vi vende tilbage til):

> Jaaa mener og mener,,,, dem der skal bruge databasen er ikke så gode
til at
> søge efter data, så for at gøre det nemt for brugeren.

Jo - men der er sjældent grund til at søge efter 'Mozard' i 'Arkiv nr'...

Omvendt kan jeg godt se at det vil forenkle sagen blot at lave en
søgeboks som søger i alt. Du skal dog overveje:

* det belaster databasen (serveren) væsentligt mere
* det hjælper ikke nødvendigvis brugeren til at få det rette resultat at
han _ikke_ skal tage stilling til hvilke kolonner han skal søge i.
Man kunne godt forestille sig at folk bliver inspireret til at bruge
databasen bedre hvis de ved at de kan vælge kun at søge i Komponist
eller Anvendelse.
Det kan dog gøre det enklere for dig at lave et søge-interfac i første
runde (- det har til gengæld også lov

>>select * from noner where kolonne1Navn like '%søgtOrd%' or kolonne2Navn
>>like '%søgtOrd%' [etc., opremsning af kolonnerne]

bliver så til (med mysql-elementer med stort for bedre læsevenlighed. vi
leder efter mozart):


SELECT * FROM noder WHERE Arkiv LIKE '%mozart%' or Komponist LIKE
'%mozart%' or Titel LIKE '%mozart%' or Anvendelse LIKE '%mozart%'

> Ellers kan man vel lave 4 steder man skrive sit søgeord ind, ed for
> hver kolonne?

Ja - eller man kan lave:
'Søg efter: [______________________] i områderne (kryds af): [_] Arkiv
nr, [_] Komponist, [_] Titel, [_] Anvendelse.'

Du skal så efterfølgende bruge php til at udforme din query til mysql så
den kun søger de steder som den er blevet bedt om - det er så galt.

>>Jeg har brugt kolonnerne "kolonne1Navn" og "kolonne2Navn" i eksemplet.
>>Det ville være en del lettere at svare hvis jeg vidste hvad dine
>>kolonner i virkeligheden hedder
>
> kolone 1 Arkiv nr:
> kolone 2 Komponist
> kolone 3 Tittel
> kolone 4 Anvendelse.

fint nok - det gør det lettere at svare, og sikkert også mere forståeligt.

Venligst

Jesper Brunholm

--
Phønix - dansk folk-musik fra unge musikere - http://www.phonixfolk.dk


Bengt Wendt Sørensen (23-09-2002)
Kommentar
Fra : Bengt Wendt Sørensen


Dato : 23-09-02 07:38

Først undskyld jeg vik sendt den til dig privat.

Jeg har kigget tænkt lidt over de muligheder der er for at søge i databasen,
og det du siger med [_________] søgeord og afkrydsningsboxe, er en helt fin
måde at gøre det på.
Men jeg fatter ikke helt hvordan jeg skal starte på det.

Efter at have læst en masse side ( på nettet) om PHP MySql, har jeg fattet
så meget at man skal kontakte databasen og tabellen men jeg kan ikke få det
til at virke, jeg har forsøgt med det her:
Men det virker heller ikke??????
Funktion:
<? {

$server = "webserver";

$bruger = "root";

$kodeord = "";

$database = "bbbnoder";



if (!mysql_connect("$server","$bruger","$kodeord")) {

udskriv_fejl("Kunne ikke oprette en forbindelse til MySQL.");

}



if(!mysql_select_db("$database")) {

udskriv_fejl("Kunne ikke vælge databasen: $database");

}

}

?>



Henter:
<?php

require("funktioner.php");



//aabn_forbindelse_og_vaelgdb("bbbnoder");



$array = sql_spoerg_og_faa_svar("select * noder");



for ($i = 0; $i < sizeof($array); $i++) {

extract($array[$i]);

echo "$Jeg har fundet følgende $komponist";

}



luk_forbindelse();

?>














Beelze (23-09-2002)
Kommentar
Fra : Beelze


Dato : 23-09-02 12:22

prøv at lave være med at bruge " rundt om dine variabler, men kun
$hostname = 'localhost'; (eller din comp's navn)
$username = 'fit_brugernavn';
$password = 'dit_password';
$database = 'din_database';

$link_id = mysql_connect($hostname, $username, $password) or die ("Kunne
ikke connecte til DB'en");
mysql_select_db($database, $link_id) or die ("Kunne ikke vælge DB");


"Bengt Wendt Sørensen" <bengt@ready.dk> skrev i en meddelelse
news:TCyj9.17735$Qk5.872227@news010.worldonline.dk...
> Først undskyld jeg vik sendt den til dig privat.
>
> Jeg har kigget tænkt lidt over de muligheder der er for at søge i
databasen,
> og det du siger med [_________] søgeord og afkrydsningsboxe, er en helt
fin
> måde at gøre det på.
> Men jeg fatter ikke helt hvordan jeg skal starte på det.
>
> Efter at have læst en masse side ( på nettet) om PHP MySql, har jeg fattet
> så meget at man skal kontakte databasen og tabellen men jeg kan ikke få
det
> til at virke, jeg har forsøgt med det her:
> Men det virker heller ikke??????
> Funktion:
> <? {
>
> $server = "webserver";
>
> $bruger = "root";
>
> $kodeord = "";
>
> $database = "bbbnoder";
>
>
>
> if (!mysql_connect("$server","$bruger","$kodeord")) {
>
> udskriv_fejl("Kunne ikke oprette en forbindelse til MySQL.");
>
> }
>
>
>
> if(!mysql_select_db("$database")) {
>
> udskriv_fejl("Kunne ikke vælge databasen: $database");
>
> }
>
> }
>
> ?>
>
>
>
> Henter:
> <?php
>
> require("funktioner.php");
>
>
>
> //aabn_forbindelse_og_vaelgdb("bbbnoder");
>
>
>
> $array = sql_spoerg_og_faa_svar("select * noder");
>
>
>
> for ($i = 0; $i < sizeof($array); $i++) {
>
> extract($array[$i]);
>
> echo "$Jeg har fundet følgende $komponist";
>
> }
>
>
>
> luk_forbindelse();
>
> ?>
>
>
>
>
>
>
>
>
>
>
>
>
>



Beelze (23-09-2002)
Kommentar
Fra : Beelze


Dato : 23-09-02 12:30

Glemte lige resten

// henter tabellen test fra databasen
$query = mysql_query( "SELECT * FROM test" );
// skriver feltet 'data' ud for alle de rows som findes i tabellen
while( $res = mysql_fetch_array( $query ) )
print "Feltet 'data' indeholder: " . $res['data'];

Det skulle gerne virke... (Hvis det var det der var dit spørgsmål... kunne
se at du egentlig startede tråden mhp. søgning i tabellen)

"Bengt Wendt Sørensen" <bengt@ready.dk> skrev i en meddelelse
news:TCyj9.17735$Qk5.872227@news010.worldonline.dk...
> Først undskyld jeg vik sendt den til dig privat.
>
> Jeg har kigget tænkt lidt over de muligheder der er for at søge i
databasen,
> og det du siger med [_________] søgeord og afkrydsningsboxe, er en helt
fin
> måde at gøre det på.
> Men jeg fatter ikke helt hvordan jeg skal starte på det.
>
> Efter at have læst en masse side ( på nettet) om PHP MySql, har jeg fattet
> så meget at man skal kontakte databasen og tabellen men jeg kan ikke få
det
> til at virke, jeg har forsøgt med det her:
> Men det virker heller ikke??????
> Funktion:
> <? {
>
> $server = "webserver";
>
> $bruger = "root";
>
> $kodeord = "";
>
> $database = "bbbnoder";
>
>
>
> if (!mysql_connect("$server","$bruger","$kodeord")) {
>
> udskriv_fejl("Kunne ikke oprette en forbindelse til MySQL.");
>
> }
>
>
>
> if(!mysql_select_db("$database")) {
>
> udskriv_fejl("Kunne ikke vælge databasen: $database");
>
> }
>
> }
>
> ?>
>
>
>
> Henter:
> <?php
>
> require("funktioner.php");
>
>
>
> //aabn_forbindelse_og_vaelgdb("bbbnoder");
>
>
>
> $array = sql_spoerg_og_faa_svar("select * noder");
>
>
>
> for ($i = 0; $i < sizeof($array); $i++) {
>
> extract($array[$i]);
>
> echo "$Jeg har fundet følgende $komponist";
>
> }
>
>
>
> luk_forbindelse();
>
> ?>
>
>
>
>
>
>
>
>
>
>
>
>
>



Bengt Wendt Sørensen (23-09-2002)
Kommentar
Fra : Bengt Wendt Sørensen


Dato : 23-09-02 13:43

Tjaa det var nok mit spørgsmål, men lige nu bliver jeg rigtig glad bare den
skriver et eller andet ud, bare ikke en fejl.

Jeg har strikket denher sammen::

<?
$hostname = localhost;
$username = mig;
$password = kode;
$database = bbbnoder;

$link_id = mysql_connect($hostname, $username, $password) or die ("Kunne
ikke connecte til DB'en");

mysql_select_db($database, $link_id) or die ("Kunne ikke vælge DB");
$array=mysql_query("SELECT * FROM noder");
while( $res = mysql_fetch_array( $query ) )
print "Feltet 'data' indeholder: " . $res['data']; [dette er linie
13]


luk_forbindelse();

?>
Og så får jeg meddelsen

Parse error: parse error, unexpected $ in c:\wwwdir\test\funktioner.php on
line 13

Jeg håber på lidt mere hjælp

Bengt





Regin Larsen (23-09-2002)
Kommentar
Fra : Regin Larsen


Dato : 23-09-02 20:52

Bengt Wendt Sørensen wrote:
> $hostname = localhost;
> $username = mig;
> $password = kode;
> $database = bbbnoder;

Da det er tekststrege skal de omgives med enten ' eller ".
f.eks.: $hostname = 'localhost';

> $array=mysql_query("SELECT * FROM noder");
> while( $res = mysql_fetch_array( $query ) )

Ret $array til $query, eller omvendt.

> Jeg håber på lidt mere hjælp

Og jeg håber på, at du vil kigge forbi
http://usenet.dk/netikette/citatteknik.html.


--
Regin


Bengt Wendt Sørensen (24-09-2002)
Kommentar
Fra : Bengt Wendt Sørensen


Dato : 24-09-02 07:28


"Regin Larsen" <newsspam@opia.dk> skrev i en meddelelse
news:3d8f70dd$0$49420$edfadb0f@dspool01.news.tele.dk...
<klip>
> Da det er tekststrege skal de omgives med enten ' eller ".
> f.eks.: $hostname = 'localhost';
>
> > $array=mysql_query("SELECT * FROM noder");
> > while( $res = mysql_fetch_array( $query ) )
>
> Ret $array til $query, eller omvendt.
>
> > Jeg håber på lidt mere hjælp
>
> Og jeg håber på, at du vil kigge forbi
> http://usenet.dk/netikette/citatteknik.html.
> Regin

Ja der har jeg kigget, men jeg mener at nogle gange er det bedre at slette
hele citatet.
Som du kan se har jeg rettet mine koder til som du beskriver.
<?
$link_id = mysql_connect($localhost, $root, $kode) or die ("Kunne
ikke connecte til DB'en");

mysql_select_db($bbbnoder, $link_id) or die (" ikke vælge DB");
$query=mysql_query("SELECT * FROM noder");
while( $res = mysql_fetch_array( $query ) )
print "Feltet 'data' indeholder: " . $res['Titel'];

?>

Jeg for nu beskeden " ikke vælge database"

Bengt



Jesper Brunholm (24-09-2002)
Kommentar
Fra : Jesper Brunholm


Dato : 24-09-02 10:33

Bengt Wendt Sørensen wrote:
>>Og jeg håber på, at du vil kigge forbi
>>http://usenet.dk/netikette/citatteknik.html.
>>Regin
>
> Ja der har jeg kigget, men jeg mener at nogle gange er det bedre at slette
> hele citatet.

Tjah - man skal bare altid kunne læse hvad du svarer på

> Som du kan se har jeg rettet mine koder til som du beskriver.
> <?
> $link_id = mysql_connect($localhost, $root, $kode) or die ("Kunne
> ikke connecte til DB'en");
>
> mysql_select_db($bbbnoder, $link_id) or die (" ikke vælge DB");

Jeg vil foreslå en lidt alternativ, og til tider mere sigende
fejlprocedure:

mysql_select_db($bbbnoder, $link_id) or die ("ikke vælge DB".mysql_error());

Ligeledes ville jeg her typisk bruge:
$query=mysql_query("SELECT * FROM noder") or trigger_error(mysql_error());

(bemærk tilføjelse)

Når vi så er igang så vil jeg foreslå en ændring i følgende også:
> while( $res = mysql_fetch_array( $query ) )
> print "Feltet 'data' indeholder: " . $res['Titel'];

> while( $res = mysql_fetch_assoc( $query ) ) /* assoc: du får
associerede resultater */
extract($res); /* laver variabler ud af $res'positioner, så du i det
efterfølgende kan skrive kolonnenavne som variabler. Se eks: */
> print "Feltet 'data' indeholder: " . $Titel;

mvh

Jesper Brunholm

--
Phønix - dansk folk-musik fra unge musikere - http://www.phonixfolk.dk


Bengt Wendt Sørensen (24-09-2002)
Kommentar
Fra : Bengt Wendt Sørensen


Dato : 24-09-02 13:42


"Jesper Brunholm" <nospam@brunholm-scharff.dk> skrev i en meddelelse
news:ampbg2$rd4$1@news.net.uni-c.dk...
> Bengt Wendt Sørensen wrote:

> > Som du kan se har jeg rettet mine koder til som du beskriver.
> > <?
> > $link_id = mysql_connect($localhost, $root, $kode) or die ("Kunne
> > ikke connecte til DB'en");
> >
> > mysql_select_db($bbbnoder, $link_id) or die (" ikke vælge DB");
>
> Jeg vil foreslå en lidt alternativ, og til tider mere sigende
> fejlprocedure:
>
> mysql_select_db($bbbnoder, $link_id) or die ("ikke vælge
DB".mysql_error());
>
> Ligeledes ville jeg her typisk bruge:
> $query=mysql_query("SELECT * FROM noder") or
trigger_error(mysql_error());
>
> (bemærk tilføjelse)
>
> Når vi så er igang så vil jeg foreslå en ændring i følgende også:
> > while( $res = mysql_fetch_array( $query ) )
> > print "Feltet 'data' indeholder: " . $res['Titel'];
>
> > while( $res = mysql_fetch_assoc( $query ) ) /* assoc: du får
> associerede resultater */
> extract($res); /* laver variabler ud af $res'positioner, så du i det
> efterfølgende kan skrive kolonnenavne som variabler. Se eks: */
> > print "Feltet 'data' indeholder: " . $Titel;
>
> mvh
>
> Jesper Brunholm
>
> --
> Phønix - dansk folk-musik fra unge musikere - http://www.phonixfolk.dk

Hej jeg har lavet de ændringer du beskriver, men jeg komme ikke længere?

Kilde:

<?
$link_id = $mysql_connect($localhost, $root, $istsifjy) or die ("Kunne
ikke connecte til DB'en");

mysql_select_db ($bbbnoder, $link_id) or die " ikke vælge
DB".mysql_error()); """ Linie 5 """
$query=$mysql_query("SELECT * FROM noder")or trigger_error(mysql_error());
while( $res = mysql_fetch_assoc( $query ) )extract($res);
print "Feltet 'data' indeholder: " . $Titel;

?>
resultat:

Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in
c:\wwwdir\test\funktioner1.php on line 5

Venligst Bengt



Niels Andersen (24-09-2002)
Kommentar
Fra : Niels Andersen


Dato : 24-09-02 15:31

Bengt Wendt Sørensen wrote in
<V2Zj9.25436$Qk5.1112347@news010.worldonline.dk>:
> mysql_select_db ($bbbnoder, $link_id) or die " ikke vælge
> DB".mysql_error()); """ Linie 5 """

Der mangler en parentes-start lige efter "die":

mysql_select_db ($bbbnoder, $link_id) or die(" ikke vælge
DB".mysql_error()); """ Linie 5 """

Det er ofte en god ide at tælle parenteser. Altså, tæl antal "(" og antal
")", der skulle gerne være lige mange.
Det samme gælder i øvrigt {} og [].

> $query=$mysql_query("SELECT * FROM noder")or

Her vil du nok få den næste fejl, der skal ikke være dollar-tegn foran
"mysql_query".

$query = mysql_query("SELECT * FROM noder")or

--
Mvh.

Niels Andersen
(la nels. anersyn.)

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408524
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste