[PHP] Problemen met arrays vullen/ weergeven

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

  • DaTiezl
  • Registratie: Januari 2004
  • Laatst online: 29-04 22:05
Ik heb een vraagje mbt mijn stage opdracht. Ik ken dus bezig met een kennismanagementsysteem en nu heb ik dus een database met daarin een tabel met gegevens (afk. is prim. key) en een koppeltabel met welke kennis men bezit. Nu ben ik dus bezig met een script waarbij ik dus middels een zoekopdracht op kennisitem de daarbij horende medewerkers kan opvragen. Nu lukt het opvragen en weergeven van de namen goed. Als ik echter de gegevens uit de tabel moet halen gaat het fout. Ik krijg bij de eerste medewerker de gegevens van de 2e en bij de 2e krijg ik de foutmeldingen:

Notice: Undefined offset: 1 in c:\website\zoekenkennis.php on line 178


Notice: Undefined offset: 1 in c:\website\zoekenkennis.php on line 179


Notice: Undefined offset: 1 in c:\website\zoekenkennis.php on line 180

hier de code:
code:
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
<? 

$zoektekst= ""; 

if (isset($HTTP_POST_VARS["searchfor"]) && $HTTP_POST_VARS["searchfor"] != '') 
{ 
$zoektekst = $HTTP_POST_VARS["searchfor"]; 

echo "<b>U zocht op: " . $zoektekst . "</b>"; 

?> 
<table width=100% border=0 cellpadding=0 cellspacing=0> 
  <tr><td bgcolor="#D31245"><img width=1 height=1 alt=""></td></tr></table> 
  <? 
} 
else { 
?> 

<font size="4" face="Book Antiqua">Zoeken op trefwoord</font>:<br></p> 

<form method="post" action="zoekenkennis.php"> 

  <font size="4" face="Book Antiqua">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Trefwoord: </font> 

  <input name="searchfor" size="60"> 

  <input name="submit" type="submit" value="Zoeken"> 

</form> 

<table width=100% border=0 cellpadding=0 cellspacing=0> 
  <tr><td bgcolor="#D31245"><img width=1 height=1 alt=""></td></tr></table> 

<? 
} 
require ("include/connect.php"); 

$sql = "SELECT * FROM Kennisitems 
                WHERE Kennisitem = '$zoektekst'"; 
$sqlres = odbc_exec($con,$sql); 
?> 
<table width="896" border=0 
cellpadding=5 cellspacing=0> 
  <? 
while (odbc_fetch_into($sqlres,$rowarr)) 
{ 
    $Itemcode=     $rowarr[0]; 
    $Kennisitem= $rowarr[1]; 

?> 
  <td width="210"></font></td> 
  </tr> 
  <tr> 
    <td> 
      <? 
    if ($Kennisitem !='') 
    { 

$sql2 = "SELECT * FROM KWKI 
                WHERE Itemcode = '$Itemcode'"; 
$sqlres2 = odbc_exec($con,$sql2); 

$kwerker= array(); 

while (odbc_fetch_into($sqlres2,$rowarr2)) 
{ 
    $kwerker[]=     $rowarr2[0]; 
} 

for($i=0; $i<sizeof($kwerker); $i++) 

{ 

$sql3 = "SELECT * FROM Kenniswerker 
                WHERE Afk = '$kwerker[$i]'"; 
$sqlres3 = odbc_exec($con,$sql3); 

$kwnaam= array(); 
$kwemail= array(); 
$kwtelnr= array(); 
$kwafk= array(); 
$kwafd= array(); 

?> 
<table width="896" border=0 
cellpadding=5 cellspacing=0> 
  <? 
while (odbc_fetch_into($sqlres3,$rowarr3)) 
{ 

    $kwafk[]= $rowarr3[0]; 
    $kwnaam[]= $rowarr3[1]; 
    $kwemail[]= $rowarr3[6]; 
    $kwtelnr[]= $rowarr3[3]; 
    $kwafd[]= $rowarr3[4]; 

} 
} 

?> 
      <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"> <font color="#CC0033" size="4" face="Book Antiqua">Gevonden 
        kenniswerkers:</font></font></p> 
      <p>  <br> 
         </font> 
        </p></td> 
  </tr> 
  <tr> 
    <td> 
    <tr><strong><font color="#CC0033" size="2" face="Book Antiqua">Naam</font></strong></tr> 
    <tr> 
    <? 
for($i=0; $i<sizeof($kwerker); $i++) 
{ 
     //echo($kwnaam[$i] . "(" . $kwerker[$i] . ")");?> <BR><? 

             echo($kwerker[$i]);?><br><? 
             echo($kwnaam[$i]);?><br><? 
             echo($kwemail[$i]);?><br><? 
             echo($kwafd[$i]);?><br><? 



     } 
    ?></tr> 
    </td> 
    <td width="99"> 
    <tr><strong><font color="#CC0033" size="2" face="Book Antiqua">Afdeling</font></strong></tr> 
    <tr> 
        <? 


    for($i=0; $i<sizeof($kwerker); $i++) 
    { 
         //echo($kwafd[$i]); 
         } 

    ?> 
    </tr> 
    </td> 

    <td width="125"><strong><font color="#CC0033" size="2" face="Book Antiqua">E-mailadres</font></strong></td> 
    <td width="204"><strong><font color="#CC0033" size="2" face="Book Antiqua">Telefoonnummer</font></strong></td> 
    <td width="208"><strong><font color="#CC0033" size="2" face="Book Antiqua">Mate 
      van kennis</font></strong></td> 
  </tr> 
  <tr> 
    <td align="center">&nbsp;</td> 
  </tr> 
  <? 
  } 

  } 
  //else 
  //{ 
      //echo("Sorry, niets gevonden!"); 
    //} 

require ("include/connect_close.php"); 
?>



Let niet op het form. Daar ben ik nog mee bezig. Ik wil de gegevens nu gewoon onder elkaar bij "naam".


De output:


U zocht op: Data

Gevonden kenniswerkers:

Naam

KSm
Jantje Smit
jantje@smit.nl
1

JSm

Notice: Undefined offset: 1 in c:\website\zoekenkennis.php on line 178


Notice: Undefined offset: 1 in c:\website\zoekenkennis.php on line 179


Notice: Undefined offset: 1 in c:\website\zoekenkennis.php on line 180

-----

Je ziet dus dat de info van Jantje niet bij de goede user (KSm) komt te staan..


Weet iemand wat het probleem is??

Yesterday's home runs don't win today's games. - Babe Ruth


  • Rac-On
  • Registratie: November 2003
  • Niet online
je post is compleet onleesbaar. Kan je een samenvatting maken met alleen de relevante code en de relevante foutmelding? Daarnaast geeft je foutmelding regelnummers mee die niet in je code blok voorkomen?

doet niet aan icons, usertitels of signatures


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
De foutmelding is toch duidelijk? Gewoon wat variabelen printen met behulp van var_dump en print_r en dan weet je zo wat er fout gaat.

Noushka's Magnificent Dream | Unity


  • MueR
  • Registratie: Januari 2004
  • Laatst online: 00:06

MueR

Admin Devschuur® & Discord

is niet lief

DaTiezl schreef op woensdag 20 april 2005 @ 11:06:
Notice: Undefined offset: 1 in c:\website\zoekenkennis.php on line 178
Notice: Undefined offset: 1 in c:\website\zoekenkennis.php on line 179
Notice: Undefined offset: 1 in c:\website\zoekenkennis.php on line 180
Allereerst zijn dit geen fouten, maar waarschuwingen. Dit duid er op dat je variabelen gebruik zonder ze eerst een waarde te geven. Hier moet je niet te veel op letten. Dit soort notices kan je uitzetten dmv error_reporting.

Ik denk dat het probleem ligt bij het feit dat je dingen onnodig ingewikkeld maakt voor jezelf.. Je HTML code is bijzonder rommelig, en volgens mij zou het je geen kwaad doen een keer een HTML tutorial te lezen. Vooral aangaande tabellen. Ik bedoel dit:
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
?>
<table width="896" border=0 
cellpadding=5 cellspacing=0> 
  <? 
while (odbc_fetch_into($sqlres3,$rowarr3)) 
{ 

    $kwafk[]= $rowarr3[0]; 
    $kwnaam[]= $rowarr3[1]; 
    $kwemail[]= $rowarr3[6]; 
    $kwtelnr[]= $rowarr3[3]; 
    $kwafd[]= $rowarr3[4]; 

} 
} 

?> 
      <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"> <font color="#CC0033" size="4" face="Book Antiqua">Gevonden 
        kenniswerkers:</font></font></p> 
      <p>  <br> 
         </font> 
        </p></td> 
  </tr> 
  <tr> 
    <td> 
    <tr><strong><font color="#CC0033" size="2" face="Book Antiqua">Naam</font></strong></tr> 
    <tr> 
    <? 
for($i=0; $i<sizeof($kwerker); $i++) 
{ 
     //echo($kwnaam[$i] . "(" . $kwerker[$i] . ")");?> <BR><? 

             echo($kwerker[$i]);?><br><? 
             echo($kwnaam[$i]);?><br><? 
             echo($kwemail[$i]);?><br><? 
             echo($kwafd[$i]);?><br><? 



     } 
    ?> 

Je haalt hier je data uit de tabel, om het vervolgens via een while in een array te gooien. Waarom die moeite? Iets nodeloos ingewikkeld maken leidt erg vaak tot fouten. Verder mist je output van gegevens over de werknemer <td> velden....
je zou het zo kunnen proberen:
PHP:
1
2
3
4
5
6
7
while (odbc_fetch_into($sqlres3,$rowarr3)) 
{
  echo($rowarr3[0] . "<br>\n");
  echo($rowarr3[1] . "<br>\n");
  echo($rowarr3[2] . "<br>\n");
  echo($rowarr3[3] . "<br>\n");
}

[ Voor 16% gewijzigd door MueR op 20-04-2005 11:20 ]

Anyone who gets in between me and my morning coffee should be insecure.


  • DaTiezl
  • Registratie: Januari 2004
  • Laatst online: 29-04 22:05
ok editing...

Yesterday's home runs don't win today's games. - Babe Ruth


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Sorry, debuggen mag je zelf doen. Ik zie sowieso niet eens een regel 178, dus hoe moeten wij weten wat je fout doet? :?

Het is gewoon not done om hier een lap code te dumpen, te zeggen wat je wil, en vervolgens te verwachten dat iemand je code voor je gaat debuggen. Zoals je in P&W FAQ - De "quickstart" kan lezen, verwachten we informatie over wat je al geprobeerd hebt en wat er niet aan lukte, en bovendien relevante code. Je maakt mij niet wijs dat die 159 regels allemaal relevant zijn voor foutmeldingen op 3 regeltjes. :)

Om bovenstaande redenen sluit ik je topic. Je mag gerust een nieuw topic openen, maar hou je dan wel aan de quickstart. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.