Avatar billede rema Nybegynder
20. juli 2004 - 21:29 Der er 21 kommentarer og
1 løsning

Select fra mysql hvor alle starter med A eller b osv.

Hej alle

Er det muligt at hente alle de navne som begynder med f.eks: a eller b eller c osv. fra en mysql db??

Her er min kode:

$result = mysql_query("SELECT * FROM table where firma = '$abc' order by firma ASC");

mvh rema
Avatar billede squashguy Nybegynder
20. juli 2004 - 21:38 #1
$result = mysql_query("SELECT * FROM table where firma LIKE '$abc%' order by firma ASC");
Avatar billede rema Nybegynder
20. juli 2004 - 21:48 #2
ahhhh ja...

mange tak, ligger du et svar!!
Avatar billede rema Nybegynder
20. juli 2004 - 21:50 #3
kan du så klare denne:  Hvis nu det er tal f.eks 1 2 3 4 5 6 7 osv. og den skal finde alle som starter med et tal???
Avatar billede terrak Nybegynder
20. juli 2004 - 22:00 #4
Du sætter bare indholdet af $abc til at være 123 i stedet.

Og nej, det duer ikke at bruge variabel navnet $123, da et navn på en variabel ikke må starte med et tal :)
Avatar billede jakoba Nybegynder
20. juli 2004 - 22:19 #5
I nyere mysql kan du bruge REGEXP til sammenligninger
se: http://dev.mysql.com/doc/mysql/en/Pattern_matching.html

SELECT * FROM table where firma REGEXP '^\d' order by firma ASC

finder firmanavne der starter med et ciffer (0..9)

mvh JakobA
Avatar billede rema Nybegynder
20. juli 2004 - 22:23 #6
JakobA>>

Skal den så lyde sådan her:

$result = mysql_query("SELECT * FROM table where firma REGEXP '^\d' order by firma ASC");

og kan jeg så også bruge den til bogstaver

mvh rema
Avatar billede jakoba Nybegynder
20. juli 2004 - 22:41 #7
Den kan også bruges på bogstaver, men for at bruge den rigtigt bør du kende reglerne for regular espressions. de kan være noget forvirrende hvis du aldrig har hørt om dem før.

denne query:
  $result = mysql_query("SELECT * FROM table where firma REGEXP '^\d' order by firma ASC");
vil KUN finde de rækker hvor første tegn i feltet 'firma' er et ciffer

denne query:
  $result = mysql_query("SELECT * FROM table where firma REGEXP '^[\da-z]' order by firma
vil finde de rækker hvor første tegn enten er et ciffer eller et af bogstaverne fra a til z (de specielle danske bogstaver 'æ', 'ø' og 'å' er som sædvanligt et problem) du kan (vistnok) få dem med ved at skrive:
  $result = mysql_query("SELECT * FROM table where firma REGEXP '^[\da-zæøå]' order by firma
om det duer for dig afhænger af hvilke tegnsæt din mysql og din php og din server er indstillet til at benytte.

mvh JakobA
Avatar billede rema Nybegynder
20. juli 2004 - 22:45 #8
;) tak for det

men vil den stadig søge udfra hvad der står i $abc  ???
Avatar billede jakoba Nybegynder
20. juli 2004 - 22:50 #9
her er lidt grundlæggende og regular expressions: http://www.gimpster.com/wiki/RegularExpressions
Avatar billede jakoba Nybegynder
20. juli 2004 - 22:54 #10
nej, det vil den ikke. Hvis du vil have mig til at lave en regular expression for dig der finder det du ønsker kommer du til at forklare MEGET præcist hvad det er du ønsker, fx med en masse eksempler på hvad der kan stå i variablen $abc, og på hvilke værdier i kolonnen firma der skal findes og hvilke der ikke skal findes.
Avatar billede rema Nybegynder
20. juli 2004 - 23:04 #11
OK...

Her min kode:
<td width="300" colspan="2" align="center" class="underline_bg">
<a href="?main=sponsorer&abc=1234567890">0-9</a> -
<a href="?main=sponsorer&abc=a">A</a> -
<a href="?main=sponsorer&abc=B">B</a> -
<a href="?main=sponsorer&abc=C">C</a> -
<a href="?main=sponsorer&abc=D">D</a> -
<a href="?main=sponsorer&abc=E">E</a> -
<a href="?main=sponsorer&abc=F">F</a> -
<a href="?main=sponsorer&abc=G">G</a> -
<a href="?main=sponsorer&abc=H">H</a> -
<a href="?main=sponsorer&abc=I">I</a> -
<a href="?main=sponsorer&abc=J">J</a> -
<a href="?main=sponsorer&abc=K">K</a> -
<a href="?main=sponsorer&abc=L">L</a> -
<a href="?main=sponsorer&abc=M">M</a> -
<a href="?main=sponsorer&abc=N">N</a> -
<a href="?main=sponsorer&abc=O">O</a> -
<a href="?main=sponsorer&abc=P">P</a> -
<a href="?main=sponsorer&abc=Q">Q</a> -
<a href="?main=sponsorer&abc=R">R</a> -
<a href="?main=sponsorer&abc=S">S</a> -
<a href="?main=sponsorer&abc=T">T</a> -
<a href="?main=sponsorer&abc=U">U</a> -
<a href="?main=sponsorer&abc=V">V</a> -
<a href="?main=sponsorer&abc=W">W</a> -
<a href="?main=sponsorer&abc=X">X</a> -
<a href="?main=sponsorer&abc=Y">Y</a> -
<a href="?main=sponsorer&abc=Z">Z</a>
</td></tr>
</table></td>
    <td height="30" align="left" valign="top" class="almtekst2" >&nbsp;</td>
  </tr>
  <tr>
    <td width="319" height="84" align="left" valign="top" class="almtekst2" ><? if ($id2){

$query= mysql_query("SELECT * FROM scrb WHERE id2 = '$id2'");


$row = mysql_fetch_array($query);
$row[nyhed] = nl2br($row[nyhed]);
?>
           
            <?

}else{ if($abc){
$result = mysql_query("SELECT * FROM scrb where firma LIKE '$abc%' order by firma ASC");

$rows = mysql_fetch_array($result);
if ( $rows ) {  // lav en tabel hvis der er noget at fylde i den
    echo "<div style='height: 200px; overflow:auto;'><table border='0' cellpadding='2'>";
    while ( $rows ) {  // skriv rækker en ad gangen
        echo "<tr align='left'>";
        for ( $i=0; $i<1; $i++ ) {  // skriv 5 celler i hver række
            if ( $rows ) {  // hvis der er data til denne celle så skriv data
          echo "<td>"  ?>
              &nbsp;<a href="http://www.<?php echo "$rows[www]"; ?>" target="_blank" class="almtekst6"><? echo "$rows[firma]"; ?></a>
    <?
                $rows = mysql_fetch_array($result);  // og hent næste datasæt
            } else {  // ellers skriv tomme celler for resten af rækken.
                echo "</td>";
            }
        }
        echo "</tr>";
    }
    echo "</table></div>";
}
}
else { print "<table width='198' border='0'>
  <tr>
    <td width='192' class='almtekst2'>V&aelig;lg et bogstav fra listen.</td>
  </tr>
</table>"; }}

?></td>

det jeg gerne vil er at kunne trække en liste ud f.eks. hvis man trykker på A skal den finde alt der starter med a og det samme hvis det vare B eller C osv. som man trykker på. Og det gør den også nu, det jeg ikke kan hitte ud af er hvis nu det starter med et tal, jeg ville også gerne kunne trække dem ud, dog skal de være i samme liste, alså man trykker på 0-9 og man får en liste med alle dem der starter med et tal.

er dette forklaring nok ellers skal jeg prøve igen???

På forhånd mange tak

mvh rema
Avatar billede terrak Nybegynder
20. juli 2004 - 23:06 #12
jakoba > Er REGEXP ikke lidt overkill, hvis han kun ønsker søge sine poster igennem for felter, som starter med et tal? :)

rema > virker det ikke at sætte $abc til et tal?
Avatar billede jakoba Nybegynder
20. juli 2004 - 23:13 #13
>>terrak  Det skal være alle cifre der findes, ikke kun et enkelt (som med bogstaverne)
>>rema
prøv at ændre:
  if($abc){
    $result = mysql_query("SELECT * FROM scrb where firma LIKE '$abc%' order by firma ASC");
til:
  if($abc){
    if ( $abc=='0123456789' ) $abc='\d';
    $result = mysql_query("SELECT * FROM scrb where firma regexp '^$abc' order by firma ASC");

mvh JakobA
Avatar billede rema Nybegynder
20. juli 2004 - 23:14 #14
terrak>>

Hvis jeg sætter $abc til 3 henter den kun dem der starter med 3, jeg ville gerne kunne trykke på en knap der hedder 0 - 9 og så henter den alle der starter med et tal
Avatar billede jakoba Nybegynder
20. juli 2004 - 23:17 #15
Ups. du har skrevet 0 sidst i din select, det skal være ens:
    if ( $abc=='1234567890' ) $abc='\d';
Avatar billede rema Nybegynder
20. juli 2004 - 23:17 #16
JakobA>>

det har jeg nu gjort, hvad skal jeg så kalde min knap:

<a href="?main=sponsorer&abc=1234567890">0-9</a> ???

mvh rema
Avatar billede rema Nybegynder
20. juli 2004 - 23:22 #17
JakobA>>

nu har jeg ændret:

<a href="?main=sponsorer&abc=1234567890">0-9</a>

til:

<a href="?main=sponsorer&abc=0123456789">0-9</a>

men det virker ikke der kommer ingen ta¨l

mvh rema
Avatar billede rema Nybegynder
20. juli 2004 - 23:26 #18
JakobA>>

Min fejl... DET VIRKER, Super fedt, mange mange tak, også mange tak for de links, vil dog først gå i krig med dem i morgen
Avatar billede jakoba Nybegynder
20. juli 2004 - 23:29 #19
fint :)
Avatar billede rema Nybegynder
20. juli 2004 - 23:35 #20
Super - hvem skal ha flest point syntes at jakoba burde har flest da han kom med det jeg skulle bruge, hvad siger i andre????

:|
Avatar billede rema Nybegynder
21. juli 2004 - 00:15 #21
skulle man vente til i morgen med at give point. Ok vi venter på hamderpolle

håber at det er ok med folk!!

mvh rema
Avatar billede terrak Nybegynder
21. juli 2004 - 00:51 #22
Jakoba og Hamderpolle svarede på begge dine spørgsmål ;)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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