Ben MySQL tabloya yazıyor bir sayfa var. Tablo satırları bir miktar (24) sahiptir.
Ben rand () fonksiyonu tarafından belirleniyor bir $ id değişkeni var. Ben temelde $ id de satır çekmek istiyorum, bu yüzden $ id 3 olsaydı, ben üçüncü satır çekmek istiyorum. Sonra ben (satır kullanıldığını belirten) O satırdaki ayarlanmış bir fiyat olup olmadığını kontrol etmek istiyorum. Herhangi bir fiyat varsa, ben de ayarlanmış olan değerden $ id tutmak ve sorgu ile devam etmek istiyorum. Bir fiyat varsa, ben $ id değişkeni yeniden rastgele ve bu satır kadar kullanılan tekrar kontrol etmek istiyorum. Boş bir satır bulduğunda, sorgusu ile devam edin.
Benim çözüm yarı çalışır, ama nedense bir kullanılan satır yazılmadan bir <% 10 şansı var gibi görünüyor. Bunu kullanılmış satır üzerine asla istiyorum.
İşte benim kod:
mysql_select_db("delives0_booklet", $con);
$query = "SELECT * FROM booklet WHERE id = '$id'";
$res = mysql_query($query,$con);
$newId = $id;
while($row = mysql_fetch_array($res))
{
if($row['price'] != 0)
{
do{
$newId = rand(1, 24);
}while($newId == $id);
}
}
$id = $newId;
mysql_query("UPDATE booklet SET price = '$price', advertiser = '$advertiser', image = '$image', monthsRemaining = '$monthsRemaining', availability = 1 WHERE id = '$id'");
Edit I had the idea to do this. I loop through the table and I put the 'id' of each unfilled spot into an array. Then I pick randomly from that array. However, there seems to be a bug that I can't find, since the array keeps showing as having nothing in it, even after the loop is run, and $i is the correct figure.
mysql_select_db("delives0_booklet", $con);
$query = "SELECT * FROM booklet";
$res = mysql_query($query,$con);
$i = 0;
$isEmpty = array();
while($row = mysql_fetch_array($res))
{
if($row['price'] == 0)
{
$isEmpty[i] = $row['id'];
$i = $i + 1;
}
}
echo $i . " unfilled spots.";
$n = 0;
while($n<$i)
{
echo $isEmpty[$n];
$n = $n + 1;
}
if($i > 0)
{
$id = $isEmpty[rand(0, $i)];
}
if($i == 0)
{
echo 'All spots have been filled.';
}