Herhaling functie bij uitvoer
Op zich lukt dit wel maar defunctie show() wordt een oneinding aantal keer uitgevoerd waardoor e.a.a. vast loopt. Hoe kan ik ervoor zorgen dat deze functie slechts eenmaal wordt uitgevoerd?
Hieronder de code.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled</title>
</head>
<body>
<form method="post" action="" >
<table style="background-color:orange;">
<tr><td><input name="crypto" style="font-family:arial black;" type="text"><p style="font-family:impact;">Geef een crypto</p></input>
<tr><td><input name="oplossing" style="font-family:arial black;" type="text"><p style="font-family:impact;">Geef de oplossing</p></input>
<tr><td><input name="send" type="submit">
</table>
</form>
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?
error_reporting(E_ALL);
class connection
{
var $host;
var $user;
var $password;
var $db_name;
var $connection;
var $db_select;
var $query;
var $aantal;
function connect()
{
$connection=mysql_connect($this->host,$this->user,$this->password) or die("kan geen verbinding maken");
$db_select=mysql_select_db($this->db_name, $connection) or die("kan geen verbnding maken");
$result=mysql_query($this->query, $connection);
}
function show()
{
while($row=mysql_fetch_array(mysql_query($this->query))){
echo $row["oplossing"];
}
}
}
$connection_1=new connection;
$connection_1->host="localhost";
$connection_1->user="root";
$connection_1->password="";
$connection_1->db_name="crypto";
$connection_1->query="SELECT * FROM omschrijvingen";
$connection_2=new connection;
$connection_2->host="localhost";
$connection_2->user="root";
$connection_2->password="";
$connection_2->db_name="crypto";
$connection_2->query="INSERT INTO omschrijvingen(crypto,oplossing) VALUES('".$_POST['crypto']."', '".$_POST['oplossing']."')";
$connection_2->connect();
$connection_1->connect();
$connection_1->show(); deze functie wordt dus een oneidig aantal x uitgevoerd.
?>
error_reporting(E_ALL);
class connection
{
var $host;
var $user;
var $password;
var $db_name;
var $connection;
var $db_select;
var $query;
var $aantal;
function connect()
{
$connection=mysql_connect($this->host,$this->user,$this->password) or die("kan geen verbinding maken");
$db_select=mysql_select_db($this->db_name, $connection) or die("kan geen verbnding maken");
$result=mysql_query($this->query, $connection);
}
function show()
{
while($row=mysql_fetch_array(mysql_query($this->query))){
echo $row["oplossing"];
}
}
}
$connection_1=new connection;
$connection_1->host="localhost";
$connection_1->user="root";
$connection_1->password="";
$connection_1->db_name="crypto";
$connection_1->query="SELECT * FROM omschrijvingen";
$connection_2=new connection;
$connection_2->host="localhost";
$connection_2->user="root";
$connection_2->password="";
$connection_2->db_name="crypto";
$connection_2->query="INSERT INTO omschrijvingen(crypto,oplossing) VALUES('".$_POST['crypto']."', '".$_POST['oplossing']."')";
$connection_2->connect();
$connection_1->connect();
$connection_1->show(); deze functie wordt dus een oneidig aantal x uitgevoerd.
?>
</body>
</html>
hmm, wat je in ieder geval kunt doen om een while loop te beëindigen is het break statement gebruiken. Ik kan zo niet precies zien waarom hij oneindig is..
Dit is de while conditie dus..... hier gaat het mis.
Ik zou zelf zeggen zet die mysql_query even buiten die fetch functie dus zo:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$result = mysql_query($this->query);
while ($row=mysql_fetch_array($result)) {
//bla bla
}
?>
$result = mysql_query($this->query);
while ($row=mysql_fetch_array($result)) {
//bla bla
}
?>
Ik weet niet of dit verschil maakt maar jouw variatie kon ik nog niet en misschien zit daar het probleem.
Bij de while (mysql_fetch_array(mysql_query()) wordt de query bij elke iteratie opnieuw uitgevoerd. Je krijgt dan een oneindig aantal keren het eerste record. Zit je denk ik niet op te wachten ;-)
Nu lukt het aardig maar als ik zoek in het oplossingen veld, gaat het goed maar als ik in de omschrijvingen ga zoeken, doet hij niets. Verder krijg ik de melding undefined index. Wat kan dat betekenen?
Nogmaals, bedankt voor jullie hulp.
Vr. Gr.,
Frank
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled</title>
</head>
<body>
<!-- de formulieren voor het invoegen en opzoeken -->
<form method="post" action="" >
<table style="background-color:orange;">
<tr><td><input name="omschrijving" style="font-family:arial black;" type="text"><p style="font-family:impact;">Geef een crypto</p></input>
<tr><td><input name="oplossing" style="font-family:arial black;" type="text"><p style="font-family:impact;">Geef de oplossing</p></input>
<tr><td><input name="send" type="submit">
</table>
</form>
<form method="post" action="" >
<input name="zoekwoord" type="text">Zoekwoord</input>
<input name="omschr" type="checkbox">In de omschrijvingen</input>
<input name="opl" type="checkbox">In de oplossingen</input>
<input name="zoek" type="submit">
</form>
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<?
error_reporting(E_ALL);
// de klasse om te verbinden en de query weer te geven
class connection
{
var $host;
var $user;
var $password;
var $db_name;
var $connection;
var $db_select;
var $query;
var $result;
var $zoek;
function connect()
{
$connection=mysql_connect($this->host,$this->user,$this->password) or die("kan geen verbinding maken");
$db_select=mysql_select_db($this->db_name, $connection) or die("kan geen verbnding maken");
$result=mysql_query($this->query, $connection);
}
function show()
{
$result=mysql_query($this->query);
echo $this->query;
echo "<table style='font-family:arial;font-size:10px;'>";
while($row=mysql_fetch_array($result)){
echo "<tr><td>".$row["omschrijving"]."<td>".$row["oplossing"]."</tr>";
}
echo"</table>";
}
}
// wanneer er in de oplossing wordt gezocht
if($_POST["zoek"] && $_POST["opl"])
{
$zoek=$_POST["zoekwoord"];
$connection_3=new connection;
$connection_3->host="localhost";
$connection_3->user="root";
$connection_3->password="";
$connection_3->db_name="crypto";
$connection_3->query="SELECT * FROM omschrijvingen WHERE oplossing='$zoek'";
$connection_3->connect();
$connection_3->show();
}
// wanneer er in de omschrijving wondt gezocht
elseif($_POST["zoek"] && $_POST["omschr"])
{
$zoek=$_POST["zoekwoord"];
$connection_3=new connection;
$connection_3->host="localhost";
$connection_3->user="root";
$connection_3->password="";
$connection_3->db_name="crypto";
$connection_3->query="SELECT * FROM omschrijvingen WHERE omschrijving='$zoek'";
$connection_3->connect();
$connection_3->show();
}
//wanneer er een crypto wordt toegevoegd
elseif($_POST["send"])
{
$connection_1=new connection;
$connection_1->host="localhost";
$connection_1->user="root";
$connection_1->password="";
$connection_1->db_name="crypto";
$connection_1->query="SELECT * FROM omschrijvingen";
$connection_2=new connection;
$connection_2->host="localhost";
$connection_2->user="root";
$connection_2->password="";
$connection_2->db_name="crypto";
$connection_2->query="INSERT INTO omschrijvingen(omschrijving,oplossing) VALUES('".$_POST['omschrijving']."', '".$_POST['oplossing']."')";
$connection_2->connect();
$connection_1->connect();
$connection_1->show();
}
?>
error_reporting(E_ALL);
// de klasse om te verbinden en de query weer te geven
class connection
{
var $host;
var $user;
var $password;
var $db_name;
var $connection;
var $db_select;
var $query;
var $result;
var $zoek;
function connect()
{
$connection=mysql_connect($this->host,$this->user,$this->password) or die("kan geen verbinding maken");
$db_select=mysql_select_db($this->db_name, $connection) or die("kan geen verbnding maken");
$result=mysql_query($this->query, $connection);
}
function show()
{
$result=mysql_query($this->query);
echo $this->query;
echo "<table style='font-family:arial;font-size:10px;'>";
while($row=mysql_fetch_array($result)){
echo "<tr><td>".$row["omschrijving"]."<td>".$row["oplossing"]."</tr>";
}
echo"</table>";
}
}
// wanneer er in de oplossing wordt gezocht
if($_POST["zoek"] && $_POST["opl"])
{
$zoek=$_POST["zoekwoord"];
$connection_3=new connection;
$connection_3->host="localhost";
$connection_3->user="root";
$connection_3->password="";
$connection_3->db_name="crypto";
$connection_3->query="SELECT * FROM omschrijvingen WHERE oplossing='$zoek'";
$connection_3->connect();
$connection_3->show();
}
// wanneer er in de omschrijving wondt gezocht
elseif($_POST["zoek"] && $_POST["omschr"])
{
$zoek=$_POST["zoekwoord"];
$connection_3=new connection;
$connection_3->host="localhost";
$connection_3->user="root";
$connection_3->password="";
$connection_3->db_name="crypto";
$connection_3->query="SELECT * FROM omschrijvingen WHERE omschrijving='$zoek'";
$connection_3->connect();
$connection_3->show();
}
//wanneer er een crypto wordt toegevoegd
elseif($_POST["send"])
{
$connection_1=new connection;
$connection_1->host="localhost";
$connection_1->user="root";
$connection_1->password="";
$connection_1->db_name="crypto";
$connection_1->query="SELECT * FROM omschrijvingen";
$connection_2=new connection;
$connection_2->host="localhost";
$connection_2->user="root";
$connection_2->password="";
$connection_2->db_name="crypto";
$connection_2->query="INSERT INTO omschrijvingen(omschrijving,oplossing) VALUES('".$_POST['omschrijving']."', '".$_POST['oplossing']."')";
$connection_2->connect();
$connection_1->connect();
$connection_1->show();
}
?>
</body>
</html>
Je kan dan ook het best bovenin je code iets opnemen als
if (!isset($_POST["zoek"])) { $_POST["zoek"] = ''; }
en dat dan voor alle post-variabelen die je in je code gebruikt.
Groet,
Frank