Herhaling functie bij uitvoer

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Frank

Frank

11/11/2007 20:04:00
Quote Anchor link
Hallo PHP_ers, ik ben begonnen met een beetje OOP en heb twee klassen gemaakt. Hat is de bedoeling dat er verbinding wordt gemaakt met een database en dat in het ene geval alle records worden uigelezen en uitgevoerd naar het scherm en in het andere geval een twwetal waarde worden weggeschreven naar de database.

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="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo $php_self ?>
" >
<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)
PHP script in nieuw venster Selecteer het PHP script
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
<?

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>
 
PHP hulp

PHP hulp

17/11/2024 04:41:58
 
Hylke

Hylke

11/11/2007 20:11:00
Quote Anchor link
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..
 
Jaws

Jaws

11/11/2007 20:48:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$row
=mysql_fetch_array(mysql_query($this->query))
?>

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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$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.
 
Kalle P

Kalle P

11/11/2007 21:00:00
Quote Anchor link
gebruik pdo.

pdo
 
Willem vp

Willem vp

11/11/2007 23:03:00
Quote Anchor link
@Jaws: Jouw idee klopt.

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 ;-)
 
Frank

Frank

12/11/2007 22:51:00
Quote Anchor link
Beste mensen, bedankt voor jullie PHP_hulp. Zoals jullie kunnen zien, heb ik die $result naar voren gehaald zodat hij niet iedere keer wordt meegenomen in de while-loop. Beetje stom maar goed.

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="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo $php_self ?>
" >
<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="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo $php_self ?>
" >
<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)
PHP script in nieuw venster Selecteer het PHP script
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
<?

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>
 
Willem vp

Willem vp

13/11/2007 19:17:00
Quote Anchor link
Als je bijvoorbeeld $_POST["zoek"] ergens in je code gebruikt, en er is geen post-variabele "zoek", krijg je een undefined index foutmelding.

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.
 
Frank

Frank

14/11/2007 09:34:00
Quote Anchor link
Hallo Willem, bedankt voor je reactie. Het probleem is opgelost. Snap nu de logica achter 'undefined index'.

Groet,
Frank
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.