Question:
I have a foreach
that fetches data from a table and insert
into another table. I need to count the number of foreach
records, then generate a random sequence, and feed an insert
field.
See the code:
$dados2 = connection::select('SELECT * FROM tab1');
foreach ($dados2 as $reg) {
$campo1 = $reg['campo1'];
$campo2 = $reg['campo2'];
$sequencia_aleatoria = '';
}
connection::exec("insert into tab2(campo1,campo2,sequencia_aleatoria) values('$campo1','$campo2','$sequencia_aleatoria')");
I hope you understood my question.
Answer:
uses PHP's uniqueid
function, serial something like:
$dados2 = connection::select('SELECT * FROM tab1');
$contagem=0;
foreach ($dados2 as $reg) {
$campo1 = $reg['campo1'];
$campo2 = $reg['campo2'];
$contagem++;
}
$sequencia_aleatoria=rand(0,$contagem);
connection::exec("insert into tab2(campo1,campo2,sequencia_aleatoria) values('$campo1','$campo2','$sequencia_aleatoria')");
the uniqid()
function generates a hash based on milliseconds so there is no possibility of repetition.
I think your code would then look like this:
$dados2 = connection::select('SELECT * FROM tab1');
$numero=count(dados2);
foreach ($dados2 as $reg) {
$campo1 = $reg['campo1'];
$campo2 = $reg['campo2'];
$sequencia_aleatoria=rand(0,$numero);
connection::exec("insert into tab2(campo1,campo2,sequencia_aleatoria) values('$campo1','$campo2','$sequencia_aleatoria')");
unset($sequencia_aleatoria);
}
run it that works
<?php
$contagem=420; // aqui iioria o count($resultado);
for($i=0;$i<=$contagem;$i++){
echo rand(0,$contagem)."<br>";
}
?>
the logic is the same and it's happening.
test online here http://phptester.net/
instead of you doing a foreach do a for
$dados2 = connection::select('SELECT * FROM tab1');
$numero=count(dados2);
for($i=0;$i<$numero;i++) {
$reg=$dados2[$i];
$campo1 = $reg['campo1'];
$campo2 = $reg['campo2'];
$sequencia_aleatoria=rand(0,$numero);
connection::exec("insert into tab2(campo1,campo2,sequencia_aleatoria) values('$campo1','$campo2','$sequencia_aleatoria')");
unset($sequencia_aleatoria);
}