Een willekeurige SQL query (SELECT) afhandelen in PHP
Voor school heb ik een opdracht gekregen om een systeem wat momenteel in MSSQL is geschreven met een PHP-frontend om te schrijven naar een MYSQL omgeving. Het betreft hier een website (waar ik de broncode e.d. niet van heb) waar men opdrachten uitvoert in MYSQL (alleen met SELECT). Nu zit ik met een klein vraag:
Voor zover ik weet is het in PHP niet mogelijk om een tabel rechtstreeks uit de database te halen (SELECT * FROM users), maar moet je zelf de tabel scripten in PHP met vaste kolomkoppen en vervolgens met for/while de gegevens uitlezen tussen <tr> en <td> tags.
Omdat de gebruiker in dit systeem zelf de query kan invoeren, zou ik niet weten hoe ik de gegevens die hiermee worden opgehaald uit de database in een tabel kan zetten (dus een dynamische tabel).
Ik hoop dat jullie mij een stapje verder kunnen helpen!
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
// ---------------------------------
// Dit kan je beter in een apart php bestand steken en hierin includen
$username="username";
$password="password";
$database="your_database";
mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
// ---------------------------------
if(isset($_POST["verzend"])){
$query = $_POST["query"];
$data = mysql_query($query)
while($info = mysql_fetch_array( $data ))
{
echo "<table>";
echo "<tr><td>".$info["naam"]."</td></tr>";
echo "</table>";
}
}
?>
// ---------------------------------
// Dit kan je beter in een apart php bestand steken en hierin includen
$username="username";
$password="password";
$database="your_database";
mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
// ---------------------------------
if(isset($_POST["verzend"])){
$query = $_POST["query"];
$data = mysql_query($query)
while($info = mysql_fetch_array( $data ))
{
echo "<table>";
echo "<tr><td>".$info["naam"]."</td></tr>";
echo "</table>";
}
}
?>
Dit is dan je formulier waar je de query kunt ingeven.
<form action="query.php" method="post">
SQL Query: <input type="text" name="query"><br>
<input type="Submit" name=verzend">
</form>
klik
voor jullie allebei?
voor jullie allebei?
hoezo voor ons allebei?
Kenneth Dehouwer op 20/05/2011 15:41:38:
hoezo voor ons allebei?
Kenneth Dehouwer:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
// ---------------------------------
// Dit kan je beter in een apart php bestand steken en hierin includen
$username="username";
$password="password";
$database="your_database";
mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
// ---------------------------------
if(isset($_POST["verzend"])){
$query = $_POST["query"];
$data = mysql_query($query)
while($info = mysql_fetch_array( $data ))
{
echo "<table>";
echo "<tr><td>".$info["naam"]."</td></tr>";
echo "</table>";
}
}
?>
// ---------------------------------
// Dit kan je beter in een apart php bestand steken en hierin includen
$username="username";
$password="password";
$database="your_database";
mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
// ---------------------------------
if(isset($_POST["verzend"])){
$query = $_POST["query"];
$data = mysql_query($query)
while($info = mysql_fetch_array( $data ))
{
echo "<table>";
echo "<tr><td>".$info["naam"]."</td></tr>";
echo "</table>";
}
}
?>
Omdat je een aantal dingen mist:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
//zoals Kenneth zei zet je database gegevens in een apart bestandje
include 'connect.php';
//is je formulier gepost??
if($_SERVER['REQUEST_METHOD'] == 'POST'){
//is er wel iets ingevuld?
if($_POST['query']){
//als $_POST['query'] bijv. is: SELECT naam FROM tabel
$query = mysql_query($_POST['query']);
if($query){
echo '<table border="1">';
while($row = mysql_fetch_assoc($query)){
//dan zal je hier al je namen zien
echo '<tr><td>'.$row['naam'].'</td></tr>';
}
echo '</table>';
}
else{
//mysql error
echo 'error '.mysql_error();
}
}
else{
echo 'niets ingevuld';
}
}
?>
<form action="" method="POST">
<!-- dit gaat alleen maar werken met een SELECT query -->
SQL Query: <input type="text" name="query"><br>
<input type="submit"/>
//zoals Kenneth zei zet je database gegevens in een apart bestandje
include 'connect.php';
//is je formulier gepost??
if($_SERVER['REQUEST_METHOD'] == 'POST'){
//is er wel iets ingevuld?
if($_POST['query']){
//als $_POST['query'] bijv. is: SELECT naam FROM tabel
$query = mysql_query($_POST['query']);
if($query){
echo '<table border="1">';
while($row = mysql_fetch_assoc($query)){
//dan zal je hier al je namen zien
echo '<tr><td>'.$row['naam'].'</td></tr>';
}
echo '</table>';
}
else{
//mysql error
echo 'error '.mysql_error();
}
}
else{
echo 'niets ingevuld';
}
}
?>
<form action="" method="POST">
<!-- dit gaat alleen maar werken met een SELECT query -->
SQL Query: <input type="text" name="query"><br>
<input type="submit"/>
De database bevat 6 tabellen waar SELECT queries op worden uitgevoerd. Uit het bovenstaande voorbeeld wordt al aangenomen dat er een veld "naam" wordt opgehaald, maar dat is willekeurig in mijn idee.
Zie het als PHPmyadmin, als je daar een SELECT query op loslaat, laat hij mooi zien wat je op hebt gevraagd! (Dus geen statische tabel met $row['naam']; !
Het was toch de bedoeling dat jij dat ging maken voor school? Nu laat je andere het werk doen!
PHP Scripter op 20/05/2011 16:40:29:
Het was toch de bedoeling dat jij dat ging maken voor school? Nu laat je andere het werk doen!
Klopt, ik bood me aan om dat te gaan doen tbv de rest van de klas!
Zie hier wat ik bedoel (probeer het zelf maar eens, niveau 1 aanklikken en dan vraag 1). Het gaat me om de afhandeling van de query, hoe dit in die tabel wordt gezet.
http://athena-hi.fontys.nl/users/879014/ICT21/Demo_Site/SQL_Vragen/index.html
Beetje link natuurlijk als jij zomaar de opgegeven sql gaat uitvoeren. Je data is dan zo weg lijkt mij.