[php] Functie werkt niet

Pagina: 1
Acties:
  • 1.299 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • IJnte
  • Registratie: Juni 2003
  • Laatst online: 15-09 20:09
Ik zit even te prutsen met een functie die echt niet wil werken.

code:
1
2
3
4
5
6
7
8
9
<?
function taakhis($historyt){
if ($taak == "$historyt")
echo "<option selected>".$historyt."</option>";

else{
echo "<option>".$historyt."</option>";}
}
?>


Wat moet er gebeuren:
In $taak staat de waarde die in een vak van de Mysql tabel staat. Stel er staat Programmeren in dat vak, dan staat in de variabele $taak Programmeren. Dit klopt ook.
Wat de functie moet doen is kijken of een megegeven waarde (die in $historyt staat) hetzelfde is als wat er in $taak staat. Als dit het geval is, zal <option selected>$historyt</option> op het schem geschreven moeten worden.

Echter ik krijg steeds maar <option>$historyt</option> op mijn scherm te staan(waarbij $historyt natuurlijk een waarde bezit als programmeren). Ik snap er helemaal niets meer van. Als ik de variabelen los van elkaar op het scherm schrijf dan zie je gewoon dat de variabelen exact hetzelfde zijn, dus moet de optie met selected erin op het scherm geschreven worden, maar dit gebeurt gewoon niet..

de functie roep ik als volgt aan:
code:
1
taakhis("Programmeren");


Een andere code werkt wel maar dat bezit dus geen functie, en moet ik telkens hetzlefde intypen:
code:
1
2
3
4
if ($taak == "Programmeren")
Echo "<option selected>"."Programmeren"."</option>";
else
Echo "<option>"."Programmeren"."</option>";


Wie kan mij vertellen wat ik fout doe. Ik ben er al de hele avond mee bezig...

Exploring the world by bicycle! cyclingsilk.wordpress.com


Acties:
  • 0 Henk 'm!

  • TimDJ
  • Registratie: Februari 2002
  • Laatst online: 09:54
Dit is wat ik op het eerste gezicht iig zou veranderen:
code:
1
2
3
4
if ($taak == $historyt) {
echo "<option selected>".$historyt."</option>";
}
else{

[ Voor 37% gewijzigd door TimDJ op 30-06-2004 23:20 ]

Freelance Drupal Developer


Acties:
  • 0 Henk 'm!

  • Reinier
  • Registratie: Februari 2000
  • Laatst online: 18:23

Reinier

\o/

Probeer het eens zonder quotes om $historyt heen? Beetje basic trouwens als dat het probleem is.

Acties:
  • 0 Henk 'm!

  • IJnte
  • Registratie: Juni 2003
  • Laatst online: 15-09 20:09
Reinier schreef op 30 juni 2004 @ 23:20:
Probeer het eens zonder quotes om $historyt heen? Beetje basic trouwens als dat het probleem is.
Neej die heb je echt nodig, omdat je html tekst op je scherm moet hebben.. lijkt mij althans.

Exploring the world by bicycle! cyclingsilk.wordpress.com


Acties:
  • 0 Henk 'm!

  • Tycoontje
  • Registratie: Februari 2003
  • Laatst online: 15-07 12:59
Hmmmz. En waar komt $taak vandaan? Misschien dat een global helpt?

Edit: En die quotes lijken me overbodig. Je vergelijkt gewoon 2 variabelen met elkaar.

Bedankt sjaakduhuuhl :)

[ Voor 49% gewijzigd door Tycoontje op 30-06-2004 23:29 ]


Acties:
  • 0 Henk 'm!

  • Reinier
  • Registratie: Februari 2000
  • Laatst online: 18:23

Reinier

\o/

IJnte schreef op 30 juni 2004 @ 23:23:
[...]

Neej die heb je echt nodig, omdat je html tekst op je scherm moet hebben.. lijkt mij althans.
:?
Lijkt me niet. $taak heeft toch nooit exact de waarde $historyt? Dus geen quotes nodig lijkt mij.

Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Probeer even dit:
PHP:
1
2
3
4
5
function taakhis($historyt){
global $taak;

if ($taak == "$historyt")
//...



Edit: Heel goed, Tycoontje :)

[ Voor 19% gewijzigd door Room42 op 30-06-2004 23:28 . Reden: Te laat.... ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • IJnte
  • Registratie: Juni 2003
  • Laatst online: 15-09 20:09
mm werkt ook niet zonder die quote's.
ik heb hem nu zo:

code:
1
2
3
4
5
6
7
8
9
<?
function taakhis($historyt){
if ($taak == $historyt){
echo "<option selected>".$historyt."</option>";
}
else{
echo "<option>".$historyt."</option>";}
}
?>

Exploring the world by bicycle! cyclingsilk.wordpress.com


Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
IJnte, $taak is leeg zo. Echo em maar eens.

offtopic:
Tip, gebruik de php-tags dan is het a: leesbaarder en b: mooier :)

[ Voor 163% gewijzigd door Room42 op 30-06-2004 23:34 ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • IJnte
  • Registratie: Juni 2003
  • Laatst online: 15-09 20:09
soz taak is als volgt gedeclareerd:

code:
1
$taak = $data['taak'];


Die $data['taak'] is als volgt ingesteld:

code:
1
2
3
4
while ($data = mysql_fetch_array($result))
{
echo "<tr>"."<td>"."&nbsp;"."</td>"."<td>".$data['id']."</td>"."<td>".$data['naam']."</td>"."<td>".$data['datum']."</td>".
"<td>".$data['begin_tijd']."</td>"."<td>".$data['eind_tijd']."</td>"."<td>".$data['totaal_uur']."</td>"."<td>".$data['taak']."</td>"."<td>".$data['opmerking']."</td>"."</tr>"       ;


$taak is dus zeker niet leeg!! Als ik heb echo dan komt er te staan : Programmeren. Precies wat ik dus ook verwacht.

[soz voor de layout f*ckup..]

[ Voor 140% gewijzigd door IJnte op 30-06-2004 23:34 . Reden: layout verkloot ]

Exploring the world by bicycle! cyclingsilk.wordpress.com


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Tycoontje
  • Registratie: Februari 2003
  • Laatst online: 15-07 12:59
IJnte schreef op 30 juni 2004 @ 23:32:
$taak is dus zeker niet leeg!!
Binnen de functie wel. Zoals al eerder gezegd is; doe maar eens een echo.
Echt, een global doet wonderen. Of haal 'm ook tussen de () binnen.

Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
ok:

[voorkauw-modus]
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?
function taakhis($historyt){

  global $taak;

  if ($taak == $historyt) {
    echo "<option selected>".$historyt."</option>";
  } else {
    echo "<option>".$historyt."</option>";
  }
}
?>
[/voorkauw-modus]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

waarom global gebruiken als je $taak net zo goed ook als parameter mee kan geven? En wie zegt dat $taak wel in de global namespace defined is en niet binnen een andere functie?
Last but not least: waarom zou je voor zoiets triviaals een aparte functie maken?

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Ja, je kan taak ook als parameter meegeven in dit geval, maar als je $taak nog wil wijzigen is global weer effectiever, he. (anders moet je em returnen...)

Rede van functie zou kunnen zijn dat hij dit op veel verschillende plaatsen in z'n code toe wil passen.

[ Voor 8% gewijzigd door Room42 op 30-06-2004 23:42 ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • IJnte
  • Registratie: Juni 2003
  • Laatst online: 15-09 20:09
crisp schreef op 30 juni 2004 @ 23:39:
waarom global gebruiken als je $taak net zo goed ook als parameter mee kan geven? En wie zegt dat $taak wel in de global namespace defined is en niet binnen een andere functie?
Last but not least: waarom zou je voor zoiets triviaals een aparte functie maken?
Omdat er meerdere opties in de Mysql tabel staan. Als ik voor elke optie een appart stukje moet gaan maken dan wordt mijn code zo'n rotzooi terwijl het met een functie kan! Alleen ik nog niet :X

Exploring the world by bicycle! cyclingsilk.wordpress.com


Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Heb je die global nou geprobeerd?? :?

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • IJnte
  • Registratie: Juni 2003
  • Laatst online: 15-09 20:09
Room42 schreef op 30 juni 2004 @ 23:43:
Heb je die global nou geprobeerd?? :?
moment mijn server is bezig met sophos volgens mij. Dan is een beetje niet bereikbaar volgens mij 8)7

Effe killen die hap! })

[ Voor 6% gewijzigd door IJnte op 30-06-2004 23:44 ]

Exploring the world by bicycle! cyclingsilk.wordpress.com


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Room42 schreef op 30 juni 2004 @ 23:41:
Ja, je kan taak ook als parameter meegeven in dit geval, maar als je $taak nog wil wijzigen is global weer effectiever, he.
dan kan je toch een pass-by-reference doen?
Rede van functie zou kunnen zijn dat hij dit op veel verschillende plaatsen in z'n code toe wil passen.
ik doe het meestal zo:
PHP:
1
2
echo '<option value="' . htmlspecialchars($historyt) . '"' . ($historyt == $taak? ' selected="selected"' : '') . '>' .
  htmlspecialchars($historyt) . '</option>';

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
oei, pass-by-reference... Ik voel een leermoment aankomen :D
Dat zoeken we op...

Ja die code van je is ook wel strak. Maar ik vind een functie hier ook niet misstaan, met enig nadeel dat je moet scrollen om te kijken wat hij ook alweer deed :)


Edit: Leuk voorbeeldje van pass-by-reference

[ Voor 19% gewijzigd door Room42 op 30-06-2004 23:50 ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • IJnte
  • Registratie: Juni 2003
  • Laatst online: 15-09 20:09
Het werkt!!! :*)

code:
1
2
3
4
5
6
7
8
9
10
<?
function taakhis($historyt){
global $taak;
if ($taak == $historyt){
echo "<option selected>".$historyt."</option>";
}
else{
echo "<option>".$historyt."</option>";}
}
?>


Het zat hem dus toch in die global :X :X . Ik kreeg eerst een partij foutmeldingen, maar dat kwam omdat ik een } ergens weggewerkt had wat niet moest..

Weer wat geleerd!!

Mm.. volgende keer mijn programmeer beredenatie er toch maar weer es bijpakken.. Waar je je niet je een hele avond op stuk kan bijten zeg!!

In iedergeval hartstike bedankt voor de snelle reply!! (zeker ook sjaakduhuuhl
_/-\o_ )

_/-\o_

Exploring the world by bicycle! cyclingsilk.wordpress.com


Acties:
  • 0 Henk 'm!

  • IJnte
  • Registratie: Juni 2003
  • Laatst online: 15-09 20:09
Room42 schreef op 30 juni 2004 @ 23:47:
oei, pass-by-reference... Ik voel een leermoment aankomen :D
Dat zoeken we op...

Ja die code van je is ook wel strak. Maar ik vind een functie hier ook niet misstaan, met enig nadeel dat je moet scrollen om te kijken wat hij ook alweer deed :)
Hahaa idd. Ik wist dat het met een functie moet kunnen.. Ik zat eerst de hele tijd te prutsen met dit:
code:
1
2
3
4
if ($taak == "Programmeren")
Echo "<option selected>"."Programmeren"."</option>";
else
Echo "<option>"."Programmeren"."</option>";

en dat maal euh 20 x en dan ook nog eens dubbele mogelijkheden |:(

Het werkt nu in iedergeval! thnx..

Exploring the world by bicycle! cyclingsilk.wordpress.com


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

pass-by-reference:

PHP:
1
2
3
4
5
6
7
8
9
10
11
function a() {
  $taak = 'foo';
  b($taak);
  echo $taak;
}

function b(&$taak) {
  $taak = 'bar';
}

a();

en binnen functie b bereik je niets met global - $taak is local binnen functie a ;)

[ Voor 4% gewijzigd door crisp op 30-06-2004 23:51 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Tnx, crisp! Dit is zeker bruikbaar!

Ik had ook al een leuk voorbeeldje gevonden ;)

[ Voor 9% gewijzigd door Room42 op 30-06-2004 23:53 ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • IJnte
  • Registratie: Juni 2003
  • Laatst online: 15-09 20:09
crisp schreef op 30 juni 2004 @ 23:50:
pass-by-reference:

PHP:
1
2
3
4
5
6
7
8
9
10
11
function a() {
  $taak = 'foo';
  b($taak);
  echo $taak;
}

function b(&$taak) {
  $taak = 'bar';
}

a();

en binnen functie b bereik je niets met global - $taak is local binnen functie a ;)
Bedankt voor je uitleg. Ik snapte die pass-by-reference niet .. Ik was al aan et google.. Dit is zeker een heldere uitleg ! Thnx Crisp _/-\o_

Exploring the world by bicycle! cyclingsilk.wordpress.com

Pagina: 1