Echo $i in for()

  • Beste,
    Ik raak er maar niet uit :(


    Heb nu dit stukje script:

    PHP
    for ($i = 1; $i <= 8; $i++) {
    if(isset($_POST['ontslarunner'.$i.''])) {
    echo '<tr><td class="mainTxt" align="center" colspan="4">Je hebt <b>'.$jouwfabriek->runner$i.'</b> ontslagen.</td></tr>'; 
    mysql_query("UPDATE `[cokefabriek]` SET `coke`=`coke`+$runner[$i]->cokeverkoop WHERE `owner`='{$own['username']}'"); 
    mysql_query("UPDATE `users` SET `runner`='0',`cokeverkoop`='0' WHERE `username`='{$jouwfabriek->runner[$i]}'"); 
    mysql_query("INSERT INTO `messages`(`date`,`from`,`to`,`title`,`content`)  
    VALUES(NOW(),'Automatisch bericht','".$jouwfabriek->runner[$i]."','Ontslagen','Je bent ontslagen, je bent nu geen runner meer van de cokefabriek van '".$own['username']."'')"); 
    mysql_query("UPDATE `[cokefabriek]` SET `runner[$i]`='' WHERE `owner`='{$own['username']}'"); 
    }
    }


    Omdat ik eerst 8 van deze scripts had dacht ik, dat kan korter, door een for() dus.
    Maar, dit stukje script:

    PHP
    echo '<tr><td class="mainTxt" align="center" colspan="4">Je hebt <b>'.$jouwfabriek->runner$i.'</b> ontslagen.</td></tr>';


    Krijg ik maar niet goed, het moet dus worden dat die dus elke keer veranderd. Bij de eerste is het dus $jouwfabriek->runner1, bij de tweede $jouwfabriek->runner2.
    Zou niet weten hoe het moet.
    Er komt nu 1 uit...


    Ook de MySQL query's zijn fout denk ik :(.


    Lars

  • Guest, wil je besparen op je domeinnamen? (ad)
  • Probeer $jouwfabriek->{'runner'.$i}
    Verder is .'' nutteloos. (ik dacht vroeger ook dat dat moest)
    Je queries zijn fout ja, `runner[$i]` moet `runner'.$i.'` worden, en haal alle variablen aub buiten haakjes.

  • Oke
    Heb nu dit:

    PHP
    for ($i = 1; $i <= 8; $i++) {
    if(isset($_POST['ontslarunner'.$i.''])) {
    echo '<tr><td class="mainTxt" align="center" colspan="4">Je hebt <b>'.$jouwfabriek->{'runner'.$i}.'</b> ontslagen.</td></tr>'; 
    mysql_query("UPDATE `[cokefabriek]` SET `coke`=`coke`+$runner'.$i.'->cokeverkoop WHERE `owner`='{$own['username']}'"); 
    mysql_query("UPDATE `users` SET `runner`='0',`cokeverkoop`='0' WHERE `username`='".$jouwfabriek->{'runner'.$i}."'"); 
    mysql_query("INSERT INTO `messages`(`date`,`from`,`to`,`title`,`content`)  
    VALUES(NOW(),'Automatisch bericht','".$jouwfabriek->{'runner'.$i}."','Ontslagen','Je bent ontslagen, je bent nu geen runner meer van de cokefabriek van '".$own['username']."'')"); 
    mysql_query("UPDATE `[cokefabriek]` SET `runner'.$i.'`='' WHERE `owner`='{$own['username']}'"); 
    }
    }


    Echter, worden alle mySQL querys niet uitgevoerd.
    De echo gaat nu wel goed.


    Als iemand het kan verbeteren :)


    Lars
    P.S.
    Ik gebruik zelf nooit for's en weinig while's.

  • Sorry, ik ben enkele quotes te gewend denk ik.
    `runner".$i."` is juist.


    $_POST['ontslarunner'.$i.''] is nog steds fout, en ook zijn er nog een paar variablen die nog buiten quotes gehaald moeten worden.


    $runner'.$i.'->cokeverkoop moet in zijn geheel buite quotes, niet alleen $i, verder weet ik niet of wat je hier eerst had staan fout was of niet (in denk het niet)

  • dit kan je trouwnes ook nog anders doen:
    $jouwfabriek->{'runner'.$i}


    doe het is gewoon netter:
    $jouwfabriek->runner.$i


    Hij moet namelijk de runner ook gewoon goed pakken uit de database en daarachter zet je dus $i!

    School
    Tweedejaars Informatica Student @ Hogeschool Rotterdam.


    Webtalen
    - PHP ( OOP )
    - SQL
    - JavaScript i.c.m. jQuery framework
    - (x)HTML
    - CSS
    - Actionscript
    - XML


    Programmeertalen
    - Java
    - C#
    - Ruby i.c.m. on Rails framework

  • Citaat van NielsB

    dit kan je trouwnes ook nog anders doen:
    $jouwfabriek->{'runner'.$i}


    doe het is gewoon netter:
    $jouwfabriek->runner.$i


    Hij moet namelijk de runner ook gewoon goed pakken uit de database en daarachter zet je dus $i!


    Laten we dat eens achter een echo zetten:
    echo $jouwfabriek->runner.$i; === echo $jouwfabriek->runner; echo $i;
    Niet wat hij wilt dus.

  • Oke, heb een dag niks van me laten horen :)
    Maar, heb het nu zo:

    PHP
    for ($i = 1; $i <= 8; $i++) {
    if(isset($_POST['ontslarunner'.$i.''])) {
    echo '<tr><td class="mainTxt" align="center" colspan="4">Je hebt <b>'.$jouwfabriek->{'runner'.$i}.'</b> ontslagen.</td></tr>'; 
    mysql_query("UPDATE `[cokefabriek]` SET `coke`=`coke`+$runner".$i."->cokeverkoop WHERE `owner`='{$own['username']}'"); 
    mysql_query("UPDATE `users` SET `runner`='0',`cokeverkoop`='0' WHERE `username`='".$jouwfabriek->{'runner'.$i}."'"); 
    mysql_query("INSERT INTO `messages`(`date`,`from`,`to`,`title`,`content`)  
    VALUES(NOW(),'Automatisch bericht','".$jouwfabriek->{'runner'.$i}."','Ontslagen','Je bent ontslagen, je bent nu geen runner meer van de cokefabriek van '".$own['username']."'')"); 
    mysql_query("UPDATE `[cokefabriek]` SET `runner".$i."`='' WHERE `owner`='{$own['username']}'"); 
    }
    }


    En deze query word nog niet uitgevoerd:

    PHP
    mysql_query("INSERT INTO `messages`(`date`,`from`,`to`,`title`,`content`)  
    VALUES(NOW(),'Automatisch bericht','".$jouwfabriek->{'runner'.$i}."','Ontslagen','Je bent ontslagen, je bent nu geen runner meer van de cokefabriek van '".$own['username']."'')");


    Hopelijk kunnen jullie helpen;)


    Lars Groot
    P.S. Bedankt voor jullie inzet & hulp alvast!

    Nieuwe reactie samengevoegd met originele reactie op 28.02.10 11:33:11:
    Zo,
    Ben er maar weer mee aan de slag gegaan.
    Dit heb ik dus mnu:

    PHP
    for ($i = 1; $i <= 8; $i++) {
    	if(isset($_POST['ontslarunner'.$i.''])) {
    	echo '<tr><td class="mainTxt" align="center" colspan="4">Je hebt <b>'.$jouwfabriek->{'runner'.$i}.'</b> ontslagen.</td></tr>'; 
    	mysql_query("UPDATE `[cokefabriek]` SET `coke`=`coke`+$runner".$i."->cokeverkoop WHERE `owner`='{$own['username']}'") or die(mysql_error()); 
    	mysql_query("UPDATE `users` SET `runner`='0',`cokeverkoop`='0' WHERE `username`='".$jouwfabriek->{'runner'.$i}."'") or die(mysql_error()); 
    	mysql_query("INSERT INTO `messages`(`date`,`from`,`to`,`title`,`content`)  
    	VALUES(NOW(),'Cokefabriek','".$jouwfabriek->{'runner'.$i}."','Ontslagen uit de cokefabriek','Je bent ontslagen, je bent nu geen runner meer van de cokefabriek van '".$own['username']."'')") or die(mysql_error()); 
    	mysql_query("UPDATE `[cokefabriek]` SET `runner".$i."`='' WHERE `owner`='{$own['username']}'"); 
    	}
    	}


    Heb even mysql_error(); toegevoegd.
    En ik krijg de volgende error in het script:

    PHP
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '>cokeverkoop WHERE `owner`='webmaster'' at line 1


    Weet iemand wat er mis aan is?


    Lars

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!