Toon posts:

[PHP] Resultaten in tabel worden niet weergegeven

Pagina: 1
Acties:
  • 45 views sinds 30-01-2008

Verwijderd

Topicstarter
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
<!DOCTYPE HTML PUBLIC
                 "-//W3C//DTD HTML 4.01 Transitional//EN"
                 "http://www.w3.org/TR/html401/loose.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <title>Planningslijst</title>
</head>

<body bgcolor="white">
<?php

  require 'db.inc';

  // Selecteer de planning van een medewerker in een <table>
  function displayPlanning($connection, $query, $voornaam)
  
  {
     // Voer de query uit op de server
     if (!($result = @ mysql_query ($query, $connection)))
        showerror();

     // Hoeveel rijen zijn er
     $rowsFound = @ mysql_num_rows($result);

     // Als de query resultaat heeft
     if ($rowsFound > 0)
     {
         // ... print een header uit
         print "Planning voor $voornaam<br>";

         // en start een <table>.
         print "\n<table>\n<tr>" .
               "\n\t<th>Medewerker_ID</th>" .
               "\n\t<th>Voornaam</th>" .
               "\n\t<th>Achternaam</th>" .
               "\n\t<th>Planning_ID</th>" .
               "\n\t<th>Titel</th>" .
               "\n</tr>";

         // Haal alle rijen op
         while ($row = @ mysql_fetch_array($result))
         {
                        
            // resultaten
            print "\n<tr>\n\t<td>{$row["medewerker_id"]}</td>" .
                  "\n\t<td>{$row["medewerker_voornaam"]}</td>" .
                  "\n\t<td>{$row["medewerker_achternaam"]}</td>" .
                  "\n\t<td>{$row["planning_id"]}</td>" .
                  "\n\t<td>{$row["planning_titel"]}</td>\n</tr>";
         } // 

         // eindig de <table>
         print "\n</table>";
     } 

     // Hoeveel rijen zijn er gevonden
     print "er zijn {$rowsFound} records die voldoen <br>";
  } // einde van de functie

  // Connectie naar de MySQL server
  if (!($connection = @ mysql_connect($hostname, $username, $password)))
     die("Could not connect");

  // nog opmerking plaatsen
  $voornaam = mysqlclean($_GET, "voornaam", 30, $connection);

  if (!mysql_select_db($db, $connection))
     showerror();

  // Start de query ...
  $query = "select medewerker.MEDEWERKER_ID, MEDEWERKER_VOORNAAM, MEDEWERKER_ACHTERNAAM, planning.planning_ID, PLANNING_TITEL
            from medewerker, planning, medewerker_planning
            where medewerker.medewerker_ID = medewerker_planning.medewerker_ID
            and planning.planning_ID = medewerker_planning.planning_ID";  

   // ... als de gebruiker een voornaam heeft opgegeven gebruik de voornaam
   if (isset($voornaam) && $voornaam != "All")
     $query .= " AND medewerker_voornaam = \"{$voornaam}\"";

   // voer de query uit en laat de resultaten zien
   displayPlanning($connection, $query, $voornaam);
?>
</body>
</html>


Nu krijg ik alleen als resultaat:

Planning voor thijs
Medewerker_ID Voornaam Achternaam Planning_ID Titel

er zijn 1 records die voldoen

Op advies van jimmy de @ weggehaald. Geen foutmelding.
En sorry dat ik het niet tussen php tags hebt gezet, zo leest het wat makkelijker :o

alvast bedankt

[ Voor 29% gewijzigd door Verwijderd op 22-10-2004 13:46 ]


Verwijderd

Als je die @ eens voor je functie aanroepen weghaald. Foutmeldingen onderdrukken is natuurlijk niet slim als je aan het debuggen bent.

En plaats je code ook ff tussen [ php ] tags.

Verwijderd

Ik stel voor dat je alle @'s weghaald en kijkt of er dan nog geen foutmeldingen te zien zijn.

Op het 1e gezicht ziet de code er goed uit.

[ Voor 177% gewijzigd door Verwijderd op 22-10-2004 13:54 ]


  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 16:04
Misschien gaat er wat mis ivm casing. In je query gebruik je nl. nogal andere hoofdletters dan wanneer je waarden uit $row opvraagt. (geen idee of dit zo werkt, ben zelf meetsal consequent in lowercase bezig voor tabellen e.d.). Jou zou met print_r ($row) even kunnen kijken wat er allemaal in $row komt en hoe het heet...

[ Voor 3% gewijzigd door T-MOB op 22-10-2004 14:01 ]

Regeren is vooruitschuiven


Verwijderd

Topicstarter
T-MOB schreef op 22 oktober 2004 @ 14:00:
Misschien gaat er wat mis ivm casing. In je query gebruik je nl. nogal andere hoofdletters dan wanneer je waarden uit $row opvraagt.
_/-\o_ wees dus consequent :P

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:45

gorgi_19

Kruimeltjes zijn weer op :9

Op advies van jimmy de @ weggehaald. Geen foutmelding.
@ betekent negeer foutmelding, die de functie evt. produceert. Je moet dan ook ALLE @'s weghalen.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • ikke007
  • Registratie: Juni 2001
  • Laatst online: 22-10-2025
PHP:
1
error_reporting(e_all);


Wil ook nog weleens foutmeldingen weergeven die tijdens debuggen erg handig kunnen zijn. Dingen zoals:

$array[naam] is niet goed. PHP accepteerd het maar geeft wel een foutmelding(notice) dat naam een ongedefinieerde constante is, en dat php aanneemt dat je 'naam' bedoeld

[ Voor 6% gewijzigd door ikke007 op 23-10-2004 10:15 ]

Lets remove all security labels and let the problem of stupidity solve itself


Verwijderd

Topicstarter
Ok het werkt nu allemaal. Alleen mijn databaselayout is het volgende

-------------------------------
Klant
-------------------------------
Klant_ID | Klant_Bedrijfsnaam
-------------------------------
1 | Cisco |
2 | HP |
-------------------------------

nogmaals de functiondistinct.php

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
<?php
  function selectDistinct ($connection, $tableName, $attributeName,
                           $pulldownName, $defaultValue)
  {
     $defaultWithinResultSet = FALSE;

     // Query om disticnt waarden te vinden van $attributeName in $tableName
     $distinctQuery = "SELECT DISTINCT {$attributeName} FROM
                       {$tableName}";
     
     // Voer de distinctQuery uit op de db
     if (!($resultId = mysql_query ($distinctQuery, $connection)))
        showerror();

     // 
     print "\n<select name=\"{$pulldownName}\">";

     // Haal elke rij op uit de query
     while ($row = mysql_fetch_array($resultId))
     {
       // krijg de waarde voor de attribuut
       $result = $row[$attributeName];

       // Controleer of een defaultValue is aangegeven, en als dat zo is of
       // het de huidige database waarde is
       if (isset($defaultValue) && $result == $defaultValue)
          // Ja
          print "\n\t<option selected value=\"{$result}\">{$result}";
       else
          // Nee
          print "\n\t<option value=\"{$result}\">{$result}";
       print "</option>";
     }
     print "\n</select>";
  } // 
?>


Je kan nu in je php pagina's daarna verwijzen doormiddel van:

*Voorbeeld uit een pagina van mij

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
<?php
require "db.inc";

// selectDistinct() functie
require "functiondistinct.php";

// Connect naar de server
if (!($connection = mysql_connect($hostname, $username, $password)))
     showerror();

if (!mysql_select_db($databaseName, $connection))
     showerror();

print "\n";

// Produceerd de select list
// Parameters:
// 1: Database connectie
// 2. Tabel
// 3. Rij
// 4. <SELECT> element naam
// 5. Optioneel <OPTION SELECTED>
selectDistinct($connection, "klant", "Klant_Bedrijfsnaam", "bedrijfsnaam", "All");
?>


Nu krijg je dan de volgende code in je gewone pagina's:

<option value="Cisco">Cisco</option>

Wat ik graag wil is dat bij de "option value=" de Klant_ID staat en tussen >Cisco</option> de bedrijfsnaam.. Dus:

<option value="1">Cisco</option>

(Dus eigenlijk <option value="Klant_ID">Klant_Bedrijfsnaam</option>

Kan ik mijn selectDistinct functie ergens mee uitbereiden (ik zou niet weten hoe trouwens :o ) of moet ik maar iets anders gaan schrijven

Excuses voor de lange en soms onduidelijke uitleg. Ik hoop dat jullie begrijpen wat ik bedoel

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16:38

Janoz

Moderator Devschuur®

!litemod

Sorry, maar hiervoor zul je echt meer zelf moeten doen. Zo lijkt het meer op een scriptrequest. Daarnaast zou het ook niet zo moeilijk moeten zijn voor je waneer je de huidige functie begreep en/of zelf geschreven had. Ik vermoed dus ook daat dit code is van iemand anders die je aan het aanpassen bent. In dat geval is de policy hier binnen Programming & Webscripting dat je dit maar aan degene moet vragen van wie je deze code hebt.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'

Pagina: 1

Dit topic is gesloten.