Toon posts:

[php] Variabele in variabele

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik heb deze functie:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?
function msgall($msg){
echo "<b>$msg</b><p>";
verbind();
$sql="SELECT userid,login,number FROM users";
$query = mysql_query($sql); 
$aantal = mysql_num_rows($query); 
echo "$aantal<p>";
$i = 0; 
while ($i < $aantal) 
{ 
    $row = mysql_fetch_array($query);
    $userid = $row['userid'];
    $username = $row['login'];
    $nr = $row['number'];

echo "<b>$msg</b> - $userid - $username - $nr<br>"; 
$i++; 
} 
exit;
}
?>

waarbij $msg = "hello $username"; (gepost via form)
Alleen bij elke loop blijft ie letterlijk hello $username zeggen ipv hello en dan de variabele $username (bv. hello jaap)
Hoe los ik dit op?

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

$username heeft dan geen waarde denk ik?

probeer anders acho "username : $username";

Doet iets met Cloud (MS/IBM)


  • Tim
  • Registratie: Mei 2000
  • Laatst online: 23-07 15:18

Tim

dat kopt, want $usrname is dan een string en word niet gezien als een variabele, wil je dat wel kunnen zal je $username moeten vervangen met str_replace of eval gebruiken (Wat sterk is af te raden)

Verwijderd

Topicstarter
hmmz, ik post dus $msg als 'hello $username'
dan wordt $username uit db gehaald
en dan doe ik echo '$msg'

en dat werkt dus niet, ik krijg output: hello $username....

Verwijderd

Topicstarter
Op dinsdag 11 september 2001 20:59 schreef Timpie2000 het volgende:
dat kopt, want $usrname is dan een string en word niet gezien als een variabele, wil je dat wel kunnen zal je $username moeten vervangen met str_replace of eval gebruiken (Wat sterk is af te raden)
Duzz, hoe dat ik dat in het script??

Verwijderd

Topicstarter
Op dinsdag 11 september 2001 20:50 schreef D2k het volgende:
$username heeft dan geen waarde denk ik?

probeer anders acho "username : $username";
Doe ik al, staat ernaast in dezelfde echo... 8-)

Verwijderd

Topicstarter
probeer dit:

$msg = str_replace("$username", $username, $msg);

maar werkt niet echt...

Verwijderd

Topicstarter
o kijk heb nu hello username gepost en dit veranderd:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
while ($i < $aantal) 
{ 
    $row = mysql_fetch_array($query);
    $userid = $row['userid'];
    $username = $row['login'];
    $nr = $row['number'];

$msg = str_replace("username", $username, $msg);

echo "<b>$msg</b> - $userid - $username - $nr<br>"; 
$i++; 
} 
?>

Vervangen werkt goed, alleen krijg ik nu overal de eerste username in de msg, terwijl de gewone $username wel doorloppt zeg maar...

  • troxx
  • Registratie: Mei 2001
  • Laatst online: 13-01-2020

troxx

Vechain maximalist

Kijk je str_replace functie is na...
zoals je ziet heb je bij de eerste variabele de $ vergeten......

Grtz

aka Crypto T


Verwijderd

Topicstarter
neee! want ik post nu ook hello username zonder $, omdat het anders niet werkte! Maar nu doet ie maar 1 keer die str_replace, inplaats van in elke loop, terwijl dat verders wel werkt (elke keer query en mysql_fetcharay)...

Verwijderd

Topicstarter
F*ck, 'k probeer van alles maar het wil maar niet lukken :'(

Verwijderd

Topicstarter
dit:
$msg = "Hello $username!";
werkt wel in de while, dus daar ligt het niet aan.. Alleen dooet ie die str_replace alleen maar de eerste kee van de while.

Vreemd....

Verwijderd

Waarom deze function lijkt mij totaal overbodig vooral de replacement die je uitvoert... Waarvoor gebruik je deze functie?

Verwijderd

Topicstarter
om de geposte variabele als variabele herkend te laten worden ;)

  • Grum
  • Registratie: Juni 2001
  • Niet online
single quote == literal
double quote == parsed

vb
PHP:
1
2
3
4
5
6
7
8
<?
$num = 10;
$str = 'literal $num'; // nu is $str LETTERLIJK 'literal $num' zonder de single quotes uiteraard
$str = "literal $num"; // nu is $str 'literal 10' en wederom zonder single quotes
 
$str = 'literal '.$num; // dit kan ook nog .. en dus ook
$str = "literal ".$num;
?>
Pagina: 1