Avatar billede busschou Praktikant
11. juni 2004 - 19:50 Der er 39 kommentarer og
1 løsning

Kan man søge på noget som indeholder et punktum

Jeg er ikke helt haj til MySql endnu
Og jeg er i tvivl hvorvidt spørgsmålet hører til denne kategori eller php kategorien
Jeg sidder og er ved at lave noget i php og MySql
I min tabel har jeg et antal kolonner.
I den ene kolonne er data af typen "1.bla" og "2.bla"
Altså et tal efterfulgt af et punktum og noget tekst
Når jeg laver min side vil jeg gerne kunne søge på denne data
Siden kaldes ved www.side.dk/test?1.bla
herefter skulle min kode gerne lave en sql query som slår op i den pågældende række i tabellen.
Men den gider ikke rigtig
Jeg forsøgte i phpMyAdmin og søge på samme måde.
Men den gav også fejl
Så umiddelbart er min tanke at den ikke er glad for punktummer?
Er det rigtig og er der noget man kan gøre?
Avatar billede busschou Praktikant
11. juni 2004 - 19:52 #1
min query er umiddelbart:
$query = "SELECT * FROM `tabel` WHERE `punkt`= 1.bla
Avatar billede arne_v Ekspert
11. juni 2004 - 19:54 #2
Der skal vel '' omkring 1.bla ?
Avatar billede thedeathart Nybegynder
11. juni 2004 - 19:55 #3
når du kalder via. text?1.bla , så vil den kalde en fil(eller noget i den stil) som hedder 1.bla, så du bør nok bruge _ (underscore)

Har du evt. noget kode, så må du gerne poste der herinde.
Katogorien er rigtig nok, men man skal huske at angive sprog herinde,
men ud fra phpmyadmin, regner jeg med at det er php. :)
Avatar billede thedeathart Nybegynder
11. juni 2004 - 19:58 #4
noget ala dette her (eller har jeg misforstået totalt ?) :

www.side.dk/test.php?id=1.bla

<?

$id = $_REQUEST['id'];

$query = ("SELECT * FROM 'table' WHERE 'punkt' = '$id' ") or die(mysql_error());

?>
Avatar billede busschou Praktikant
11. juni 2004 - 19:59 #5
yes det er php
skrev forkert først...det jeg gør er: www.minside.dk/siden.htm?punkt=1.bla
i min kode henter jeg så "1.bla" ind ved:
if (isset($_GET['punkt'])) {$punkt = $_GET['punkt'];}
Så kommer queryen:
$query = "SELECT * FROM `tabel` WHERE `punkt`= $punkt";
$y    = mysql_query($query)  or die(mysql_error());
$row  = mysql_fetch_array($y) or die(mysql_error());
På min side kommer den frem med fejlen
You have an error in your SQL syntax near 'bla' at line 1
Altså virker det til at den "fjerner" alt før punktummet
Avatar billede busschou Praktikant
11. juni 2004 - 20:00 #6
Avatar billede thedeathart Nybegynder
11. juni 2004 - 20:02 #7
ja, så kan den nok ikke bruge . (punktum) så prøv med _ (underscore)
Avatar billede busschou Praktikant
11. juni 2004 - 20:08 #8
Oki har rettet det til underscore _ men
Så kommer den med fejlen :
Unknown column '1_bla' in 'where clause'
Den samme fejl giver den når jeg søger i phpMyAdmin
Avatar billede thedeathart Nybegynder
11. juni 2004 - 20:09 #9
det er fordi det ikke kan finde elementet 1_bla i din tabel.

kan du evt. lave et dump af tabllen ?
Avatar billede busschou Praktikant
11. juni 2004 - 20:10 #10
et dump er?
Avatar billede thedeathart Nybegynder
11. juni 2004 - 20:12 #11
phpmyadmin har en funktion som hedder dump.

den viser sql-koden for din database/tabel..
Avatar billede busschou Praktikant
11. juni 2004 - 20:13 #12
# phpMyAdmin SQL Dump
# version 2.5.6-rc1
# http://www.phpmyadmin.net
#
# Vært: hilda.andersenit.dk
# Genereringstidspunkt: 11/06 2004 kl. 20:13:55
# Server version: 3.23.58
# PHP version: 4.3.4
#
# Database: : `busschoudk`
#

# --------------------------------------------------------

#
# Struktur dump for tabellen `HP-klasser`
#

CREATE TABLE `HP-klasser` (
  `id` tinyint(4) NOT NULL default '0',
  `klasse` text NOT NULL,
  `alder` tinyint(4) NOT NULL default '0',
  `beskrivelse` longtext NOT NULL,
  `net` tinyint(4) NOT NULL default '0'
) TYPE=MyISAM;

#
# Data dump for tabellen `HP-klasser`
#
Avatar billede busschou Praktikant
11. juni 2004 - 20:13 #13
det felt jeg søger på er `klasse`
Avatar billede arne_v Ekspert
11. juni 2004 - 20:15 #14
1.bla bør godt kunne sendes over - prøv:

test?1%2Ebla
Avatar billede busschou Praktikant
11. juni 2004 - 20:19 #15
samme fejl :
You have an error in your SQL syntax near 'bla' at line 1
Avatar billede busschou Praktikant
11. juni 2004 - 20:20 #16
Her er lige starten af koden :
<?

$klasse =    $_REQUEST['klasse'];

include("top.php");
include("connect.php");

$query = "SELECT * FROM `HP-klasser` WHERE `klasse`= $klasse";
$y    = mysql_query($query)  or die(mysql_error());
$row  = mysql_fetch_array($y) or die(mysql_error());
$beskrivelse = $row[beskrivelse];
$query = "SELECT * FROM `HP-ledere` WHERE `klasse`=$klasse";
$y    = mysql_query($query) or die(mysql_error());
.....
Avatar billede thedeathart Nybegynder
11. juni 2004 - 20:23 #17
prøv uden ''  .. ved ikke om det har noget effekt, men jeg bruger dem ikke selv normalt
Avatar billede busschou Praktikant
11. juni 2004 - 20:25 #18
uden plinger '' bliver fejlen fra sql:
You have an error in your SQL syntax near '-klasser WHERE klasse = 1.bla' at line 1
Avatar billede busschou Praktikant
11. juni 2004 - 20:27 #19
doh havde glemt jeg havde lavet 1.bla om til 1_bla
men så siger den blot
Unknown column '1_bla' in 'where clause'
Avatar billede thedeathart Nybegynder
11. juni 2004 - 20:30 #20
hmm.. prøv evt. med dette her... men prøv at undgå at bruge - og . i databaser. Da de typisk har andre funktioner, og derfor kan skabe fejl.

http://www.dinside.dk/siden.php?klasse=1_bla

<?

$klasse = $_REQUEST['klasse'];

mysql_query("SELECT * FROM 'HP-Klasser' WHER 'klasse' = '$klasse' ") or die(mysql_error());
Avatar billede thedeathart Nybegynder
11. juni 2004 - 20:31 #21
hmm... har du en post som hedder 1_bla ??

ellers så burde den jo heller ikke finde noget
Avatar billede busschou Praktikant
11. juni 2004 - 20:33 #22
ja har nogen som hedder 1.bla og 2_bla osv
det mest wierd er at jeg lige prøvede at sige 1bla i et ord..
og brokker den sig også nu?!
Avatar billede busschou Praktikant
11. juni 2004 - 20:39 #23
den kommer med den fantastisk sigende fejl
You have an error in your SQL syntax near ''HP-Klasser' WHERE 'klasse' = '1_bla' ' at line 1
Avatar billede busschou Praktikant
11. juni 2004 - 20:42 #24
Så lige at HP-Klasser skulle være HP-klasser ... men det er samme fejl
Avatar billede thedeathart Nybegynder
11. juni 2004 - 20:42 #25
prøv med :

<?php
$conn = mysql_connect("localhost", "root", "");
mysql_select_db("exp");

$id = $_REQUEST['klasse'];

$y    = mysql_query("SELECT * FROM `HP-klasser` WHERE `klasse`= '$id' ");

if ($row[klasse] != "" ) {
$row  = mysql_fetch_array($y) or die(mysql_error());

echo $row[id]    ;
echo $row[klasse]  ;
echo $row[alder]  ;
echo $row[net]    ;

} else { echo"Fejl !"; };

?>


som du så kører med http://www.dinside.dk/side.php?klasse=bla
Avatar billede thedeathart Nybegynder
11. juni 2004 - 20:43 #26
den virker ved mig. når klasse indholder en post med inholdet bla, fortæller den alt som står i echo'ene. Og hvis den er tom siger den: FEjl!
Avatar billede busschou Praktikant
11. juni 2004 - 20:48 #27
ved mig siger den bare fejl
Avatar billede busschou Praktikant
11. juni 2004 - 20:50 #28
måske der så er noget galt med min udbyder
Avatar billede thedeathart Nybegynder
11. juni 2004 - 20:55 #29
prøv at lave et nyt dump, det først indholte ingen data.
Avatar billede busschou Praktikant
11. juni 2004 - 20:56 #30
hov den skriver det ud nu! jeg copy pastede blot dit men der var jo byttet om på to rækker
if ($row[klasse] != "" ) {
$row  = mysql_fetch_array($y) or die(mysql_error());
skulle være omvendt vel... så får jeg datane ud
Avatar billede busschou Praktikant
11. juni 2004 - 20:56 #31
jeg undlod at tage indholdet af tabellen med før for det fylder en del
Avatar billede thedeathart Nybegynder
11. juni 2004 - 20:59 #32
mit if er rigtigt nok, da != betyder NOT EQUAL (ikke ligmed).

Men virker det nu ?
Avatar billede busschou Praktikant
11. juni 2004 - 21:01 #33
den du skrev:
<?php
$conn = mysql_connect("localhost", "root", "");
mysql_select_db("exp");

$id = $_REQUEST['klasse'];

$y    = mysql_query("SELECT * FROM `HP-klasser` WHERE `klasse`= '$id' ");

if ($row[klasse] != "" ) {
$row  = mysql_fetch_array($y) or die(mysql_error());

echo $row[id]    ;
echo $row[klasse]  ;
echo $row[alder]  ;
echo $row[net]    ;

} else { echo"Fejl !"; };

?>
gav FEJL!
Jeg byttede om på to linjer og så kom indholdet ud ved :
<?php
$conn = mysql_connect("localhost", "root", "");
mysql_select_db("exp");

$id = $_REQUEST['klasse'];

$y    = mysql_query("SELECT * FROM `HP-klasser` WHERE `klasse`= '$id' ");

$row  = mysql_fetch_array($y) or die(mysql_error());

if ($row[klasse] != "" ) {

echo $row[id]    ;
echo $row[klasse]  ;
echo $row[alder]  ;
echo $row[net]    ;

} else { echo"Fejl !"; };

?>
Men altså...jeg kan ikke lure hvad der er galt i den anden kode så for den virker stadig ikke jo
Avatar billede busschou Praktikant
11. juni 2004 - 21:02 #34
altså min originale kode
Avatar billede thedeathart Nybegynder
11. juni 2004 - 21:07 #35
nåå.. okay.. de linjer du byttede om på er det faktisk lidt ligegyldt hvad der står først. Det er bare om dataerne skal fetches før eller efter if'et.

Men får du data ud nu, når du bruger den kode hvor du HAR byttet om på linjerne ?
Avatar billede thedeathart Nybegynder
11. juni 2004 - 21:08 #36
rettelse: $row skal stå før if... en fejl fra min side.. godt du selv fandt den.
Avatar billede busschou Praktikant
11. juni 2004 - 21:09 #37
jeg er ikke så klog på PHP. Men i andre programeringssprog skal man da danne variablen før man kan bruge den?
Jeg ville synes at man ikke kan spørge om "if ($row[klasse] != "" ) "
førend man har fortalt den hvad "$row" er - så derfor jeg satte den udenfor
Anyway. Jeg har rodet lidt med det du gav mig og nu virker det sku
Jeg ved ikke hvorfor?!?..
Men nu virker det med 1.bla og 1_bla og hele molivitten
Der må have været en og anden dum pling galt et og andet sted
Avatar billede thedeathart Nybegynder
11. juni 2004 - 21:12 #38
ja, en variable skal declares før man kan bruge den..

ved ikke lige hvorfor jeg lavede den fejl :S

men så længe det virker så er alt jo godt :)
Avatar billede busschou Praktikant
11. juni 2004 - 21:15 #39
ja det fint - jeg er lidt lost synes jeg om man bruger ` eller ' eller ´ og hvor og sådan
Men jeg lærer det nok
Tak for hjælpen
Avatar billede thedeathart Nybegynder
11. juni 2004 - 21:15 #40
okay :) svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester