[PHP/mysql] dbconnect function en result vraag!*

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
ik Heb een functie om met de database te connecten maar er staat een variabele ($db) in die ik ergens anders gebruik. Het lijkt erop dat hij die niet pakt.

PHP:
1
2
3
4
5
6
7
<?
function DBConnect()
{
    $db = mysql_connect("localhost", "username", "password") or die("Kan niet verbinden: " . mysql_error());
    mysql_select_db("theperuvian", $db);   // Selecteer database 
}
?>

hij geeft een fout bij deze regel:
PHP:
1
$result = $nav->execute($query, $db, "mysql");


hoe kan ik toch een functie gebruiken en dat hij dus geen fouten geeft????
hij geeft geen mysql error maar laat simpelweg geen gegevens zien. Deze staat normaal in de $result.

  • Johnny
  • Registratie: December 2001
  • Laatst online: 17-09 16:59

Johnny

ondergewaardeerde internetguru

Is het niet zo dat er iets mis is met je query waardoor er geen resultaten kunnen worden opgehaald?

Je kunt zoiets testen door een query in te voeren in PHPmyAdmin.

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Programmer - an organism that turns coffee into software.


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 15-09 18:24

dusty

Celebrate Life!

Dit is inderdaad een scope probleem,

In principe zeg je nu in je functie dat de variabele $db aangemaakt moet worden, die wordt netjes aangemaakt, dan selecteer je de database, dat doet hij ook nog netjes, echter dan is het einde functie, wat dus betekent ook einde van je variabele. ( ie: Einde Connectie )

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Verwijderd

Topicstarter
dan zou de functie er zo uit moeten zien?:

PHP:
1
2
3
4
5
6
7
8
9
10
11
<?
/* global scope */
$db = mysql_connect("localhost", "username", "password") or die("Kan niet verbinden: " . mysql_error());

function DBConnect()
{
    
    mysql_select_db("theperuvian", $db);   // Selecteer database 
    return $db; 
}
?>

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 15-09 18:24

dusty

Celebrate Life!

Verwijderd schreef op 18 september 2003 @ 09:39:
dan zou de functie er zo uit moeten zien?:
Nee. Try Again ;)

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Verwijderd

Topicstarter
het werkt wel maar dat komt waarschijnlijk doordat ik hem "include"(requere). Hij zet hem dan gewoon neer en hij staat niet in de functie? klopt?

Verwijderd

Topicstarter
dan zou dit hem moeten zijn! de logica begrijp ik. Namelijk:
dat de variabele global wordt gezet en dus buiten de functie (dus ook nog beschikbaar zodra hij klaar is met die functie) beschikbaar komt.
PHP:
1
2
3
4
5
6
7
8
<?
function DBConnect()
{
    global $db;
    $db = mysql_connect("localhost", "username", "password") or die("Kan niet verbinden: " . mysql_error());
    mysql_select_db("theperuvian", $db);   // Selecteer database
}
?>

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 15-09 18:24

dusty

Celebrate Life!

Dit werkt wel, echter is het niet netjes, aangezien het op te lossen is zonder gebruik te maken van "GLOBAL".

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Verwijderd

Topicstarter
hoe zou ik het dan moeten doen?

  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

return $db;

in je functie zetten ipv $db global maken?

[ Voor 23% gewijzigd door Brakkie op 18-09-2003 10:29 ]

Systeem | Strava


Verwijderd

Topicstarter
had ik al geprobeerd maar dan laat hij ook niks zien. ik zet hem dan onder mysql_select_db

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 15-09 18:24

dusty

Celebrate Life!

Parameter.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Verwijderd

Topicstarter
Ik heb nu echt geen idee meer!!!!!!

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 15-09 18:24

dusty

Celebrate Life!

code:
1
2
3
functie blaat( &parameter1, parameter2) {
  // geblaat
}

[ Voor 7% gewijzigd door dusty op 18-09-2003 13:42 ]

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 12:56
Hiet zien we dan een duidelijk voorbeeld waar een class een probleem zou kunnen oplossen. Als je een class zou gebruiken zou dit geen enkel probleem vormen.

  • PijnJoh
  • Registratie: Oktober 1999
  • Laatst online: 07-08 17:22
Heb je al geprobeerd oderwets te debuggen door een aantal print statements in je functies te plaatsen?

Ik heb namelijk het vermoeden dat de functie helemaal niet het probleem is!!

Sjesus...


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 15-09 18:24

dusty

Celebrate Life!

PijnJoh schreef op 18 september 2003 @ 14:12:
Heb je al geprobeerd oderwets te debuggen door een aantal print statements in je functies te plaatsen?

Ik heb namelijk het vermoeden dat de functie helemaal niet het probleem is!!
Voor de mensen die wat minder goed kunnen programmeren en/of lezen hierbij een herhaling waarom het fout zat in de functie:

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Verwijderd

Topicstarter
Ik heb een navigatie die de $db variabele gebruikt.
met global $db en dan $db (connectie) dan doet hij het wel. Dus zodra is de $db weghaal werkt hij niet. ook als ik zonder die variabele de datbaseconnectie opbouw.

zo ziet mijn pagina eruit:
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
<?php
    require "./includes/settings.php";
    require "./includes/functions.php";
?>
<html>
<head>
<title><?=$title?></title>

<link href="./includes/style.css" rel="stylesheet" type="text/css">
<script language="JavaScript" type="text/JavaScript" src="./includes/scripts.js"></script>

</head>

<body onLoad="MM_preloadImages('//theperuvian/images/img_nav-home-on.gif','//theperuvian/images/img_nav-story-on.gif','//theperuvian/images/img_nav-route-on.gif','//theperuvian/images/img_nav-gallery-on.gif')" bgcolor="E4E4E4" background="<?=$sitebackground?>" text="444444" link="444444" vlink="#CCCCCC" alink="444444" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<table width="740" height="100%" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">
  <tr> 
    <td width="1" rowspan="5" bgcolor="#9AC40F">[img]"/theperuvian/images/pixel.gif"[/img]</td>
    <td width="48" rowspan="3" valign="top" background="/theperuvian/images/left.jpg" bgcolor="#9AC40F">[img]"/theperuvian/images/pixel.gif"[/img]</td>
    <td width="1" rowspan="3" valign="top" bgcolor="#FFFFFF">[img]"/theperuvian/images/pixel.gif"[/img]</td>
    <td height="48" valign="top">[img]"/theperuvian/images/img_top.jpg"[/img]</td>
    <td width="1" rowspan="5" bgcolor="#9AC40F">[img]"/theperuvian/images/pixel.gif"[/img]</td>
  </tr>
  <tr> 
    <td height="33" valign="top">
    <?
    include ("includes/navigatie.php");
    ?>
    </td>
  </tr>
  <tr> 
    <td height="100%" valign="top" class="plattetekst">
    <table border="0" cellpadding="0" cellspacing="2" width="100%">
      <tr>
        <td class="plattetekst">hier komt een hele tekst over de gallery</td>
      </tr>
    </table>
    <?php

    DBConnect();//  connect met database
    
    // including the navbar class
include("navbar.php");
// initiate it!
$nav = new navbar;
// set how many records to show at a time
$nav->numrowsperpage = 16;
$columns = 8; //aantal kolommen in beeld. 8 plaatjes en dan nieuwe rij.

$query = "SELECT * FROM gallery ORDER BY id";
// the third parameter of execute() is optional
$result = $nav->execute($query, $db, "mysql");

//we add this line because we need to know the number of rows
$num_rows = mysql_num_rows($result);
echo "<TABLE BORDER=\"0\" CELLPADDING=\"0\" CELLSPACING=\"2\">\n";

//changed this to a for loop so we can use the number of rows
for($i = 0; $i < $num_rows; $i++) {
    $newrow = mysql_fetch_array($result);
    if($i % $columns == 0) {
        //if there is no remainder, we want to start a new row
        echo "<TR>\n";
    }
    ?>
    <td><a href="javascript:openWindow('imageholder.php?id=<?=$newrow[id]?>','imagedetail',
'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,
resizable=no,width=524,height=400')">[img]"/theperuvian/gallery/small/small<?=$newrow[img_small]?>"[/img]</a></td>
    <?
    //echo "<TD>[img]""$result->image""></TD[/img]\n";
    if(($i % $columns) == ($columns - 1) || ($i + 1) == $num_rows) {
        //if there is a remainder of 1, end the row
        //or if there is nothing left in our result set, end the row
        echo "</TR>\n";
    }
}
echo "</TABLE>\n";
//************************END

echo "<hr>\n";
// build the returned array of navigation links
$links = $nav->getlinks("all", "on");
for ($y = 0; $y < count($links); $y++) {
  echo $links[$y] . "&nbsp;&nbsp;";
}
?>
</td>
  </tr>
  <tr> 
    <td height="1" colspan="3">[img]"/theperuvian/images/pixel.gif"[/img]</td>
  </tr>
  <tr> 
    <td height="10" colspan="3" bgcolor="#555555">[img]"/theperuvian/images/pixel.gif"[/img]</td>
  </tr>
</table>
</body>
</html>


de functie:
PHP:
1
2
3
4
5
6
7
8
<?
function DBConnect()
{
    global $db;
    $db = mysql_connect("localhost", "username", "password") or die("Kan niet verbinden: " . mysql_error());
    mysql_select_db("theperuvian", $db);   // Selecteer database
}
?>


Nu doet hij het ook maar doe ik het dan goed of niet?

[ Voor 88% gewijzigd door Verwijderd op 18-09-2003 14:23 ]


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 15-09 18:24

dusty

Celebrate Life!

djluc schreef op 18 September 2003 @ 14:05:
Hiet zien we dan een duidelijk voorbeeld waar een class een probleem zou kunnen oplossen. Als je een class zou gebruiken zou dit geen enkel probleem vormen.
Als je het dan al vergelijkt met een class moet je het ook goed vergelijken.

Create Instance,
call DBConnect,
Destroy Instance,
call DBvoerqueryuit.

En in dat geval werkt het dus ook niet. Dus als jij zegt dat dit een duidelijk voorbeeld is zit je toch aardig fout.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR

Pagina: 1