Denna delen av 99 uppdateras inte längre utan har arkiverats inför framtiden som ett museum.
Här kan du läsa mer om varför.
Mac-nyheter hittar du på Macradion.com och forumet hittar du via Applebubblan.

Filtrera PHP table

Tråden skapades och har fått 8 svar. Det senaste inlägget skrevs .
1

Hejsan alla.

jag håller på med en liten php sida som ska visa filnamn som kommer in i en mapp.
filerna heter delvis samma så det jag vill är att jag vill kunna sortera/filtrera tabellen så att det bara kommer upp filnamn som börjar på tex SKI.

jag har testat att köra en massa som sägs filtrera men jag får syntax error på detta.
Det jag har testat är

SELECT * FROM databas WHERE filnamn LIKE SKI

Detta har jag testat med både ´SKI´ och ´SKI%´ vad är det jag inte fatta
Är det någon som kan få mig på rätt väg.
Tack på förhand

Min fungerade kod utan filtrering:

<html> 
<head> 
<title>Table</title> 
<style type="text/css"> 
th, td{ 
font: 11px Verdana; 
} 
.r0{ 
background-color: #eee; 
} 
.r1{ 
background-color: #ccc; 
} 
th{ 
background-color: #555; 
color: #fff; 
} 
</style> 
</head> 
<body> 
<?php 
// Details, details, details 
$server = 'localhost'; 
$username = 'root'; 
$pass = ''; 
$database = 'indata'; 
$table_name = 'Sid_log'; 

// No mans land 

// Connect, select DB 
$db = mysql_connect($server, $username, $pass); mysql_query("use $database"); 

// Template 
$table = "<table><thead>%s</thead><tbody>%s</tbody></table>"; 
$tbody = ''; 
$thead = '<tr>'; 

// Fetch a list of fields from the table 
$resource = mysql_query("SHOW COLUMNS FROM `$table_name`"); 

// Create a CONCAT_WS query from the list of fields 
// CONCAT_WS works like implode in a way, the first argument is the glue that holds the rest of the arguments together. 
$concat = 'CONCAT_WS("</td><td>"'; 
while($details = mysql_fetch_assoc($resource)) 
{ 
$thead .= '<th>' . $details['Field'] . '</th>'; // Build the table header while we're here 
$concat .= ',' . $details['Field']; // Add an argument to CONCAT_WS 
} 
$thead .= '</tr>'; // Close the table header 
$concat .= ')'; // Close the CONCAT_WS query 

// Get the results of the CONCAT_WS query 
$sql = "SELECT $concat FROM `$table_name`"; 
$resource = mysql_query($sql); 
if(! $resource){ 
die(mysql_error()); 
} 

// Now it's a matter of appending the pre-formatted rows returned from the query to a string & 
// then using sprintf to put that all together. 
$i = 0; 
while($row = mysql_fetch_row($resource)) 
{ 
$tbody .= '<tr class="r' . ($i%2) . '"><td>' . implode('', $row) . '</td></tr>'; 
$i++; 
} 
echo sprintf($table, $thead, $tbody); 
// Now, if we could only get people to arrange their database columns in certain ways... 
?> 
</body> 
</html>

Prova:

SELECT * FROM databas WHERE filnamn LIKE SKI; <-- semikolon

eller

SELECT * FROM databas WHERE filnamn LIKE 'SKI' <-- singelquotes

eller

SELECT * FROM databas WHERE filnamn LIKE 'SKI' ORDER BY filnamn; <-- Om du vill sortera på filnamnet.

Se upp för NULL-värden i filnamn, verkar ställa till det:

MySQL :: MySQL 5.0 Reference Manual :: 12.2.7 SELECT Syntax
MySQL :: MySQL 5.1 Reference Manual :: 11.4.1 String Comparison Functions

Ursprungligen av Taz_1999:

Prova:

SELECT * FROM databas WHERE filnamn LIKE SKI; <-- semikolon

eller

SELECT * FROM databas WHERE filnamn LIKE 'SKI' <-- singelquotes

eller

SELECT * FROM databas WHERE filnamn LIKE 'SKI' ORDER BY filnamn; <-- Om du vill sortera på filnamnet.

Följande händer om jag kör smikolon så får jag "Unknown column 'SKI' in 'where clause'-

eller jag har fattat allt fel?
är det inte
SELECT * FROM databas WHERE column LIKE innehålleticolumen ?

Du har fattat fel. Allt som inte har fnuttar är columnamn, ord som hör till SQL-"språket" osv. Allt som skall letas efter, infogas, processas, jämföras, mätas, vägas osv, skall ha fnuttar.

Läs sidorna jag länkade till, där finns syntax och exempel och ofta mycket bra info i kommentarerna med mer exempel med sk caveats och workarounds.

okej så om jag vill filtrera filnamn som börjar på SKI så ska det altså vara.

SELECT * FROM databas.tabell WHERE Filnamn LIKE 'SKI' ?

  • Oregistrerad
  • 2008-08-15 13:11

Det är skillnad på versaler o germaler i tabellnamn.

SELECT * FROM tabell WHERE kolumn LIKE '%SKI%'

Du behöver inte använda % men om du gör det så får du med sådana filnamn som innehåller min_fil_SKI.jpg också, och inte bara SKI (Sällan en fil heter SKI)

nu funkar det som en gud. Jag bugar och bockar.
nu kan man pilla lite med detta ett tag

Nu har jag berättat tillräckligt, dags för dig att laborera och experimentara lite själv.

Har du något verktyg att skriva SQL och skicka dem till databasen och få svar och se hur det blir? Tex PHPMyAdmin (webblösning) eller MySQL Query Browser (program).

MySQL :: MySQL GUI Tools Downloads
phpMyAdmin | MySQL Database Administration Tool | www.phpmyadmin.net

(Det finns många flera).

Ursprungligen av Taz_1999:

Nu har jag berättat tillräckligt, dags för dig att laborera och experimentara lite själv.

Har du något verktyg att skriva SQL och skicka dem till databasen och få svar och se hur det blir? Tex PHPMyAdmin (webblösning) eller MySQL Query Browser (program).

MySQL :: MySQL GUI Tools Downloads
phpMyAdmin | MySQL Database Administration Tool | www.phpmyadmin.net

(Det finns många flera).

Ja jag kan inte mer än att hålla med om att du har hjälpt mig
Jag tackar jätte mycket för hjälpen.
Det är på god väg att bli ngt riktigt bra nu det är bara små saker kvar nu, men det verkar inte va en jätte nöt att knäcka. inte när pappa google finns

Ja jag har mysqls gui tool för att testa saker i dbn.

1
Bevaka tråden