Prolema Update dupa ordonare din Select
Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
-
andras
- Mesaje:430
Prolema Update dupa ordonare din Select
Salut,
Am o secventa PHP care nu functioneaza corect:
Cod: Selectaţi tot
<?php
$i=1;
while ($i<=$count1){ // $count1 este numarul de inregistrari si este variabil.
$nu1="SELECT min(pozitie1) as min, lista1_id, rang1 from lista1 where rang1=0";
$num1 = mysql_query($nu1) or die(mysql_error());
$randnum = mysql_fetch_assoc($num1) ;
$id=$randnum['lista1_id'];
$ianum="UPDATE lista1 set rang1=$i where lista1_id=$id";
$punenum =mysql_query($ianum) or die(mysql_error());
$i++;
}
?>
Inital toate inregistrarile au 0 la rang1. Functioneaza, dar incorect. In BD a rezultat cam asa:
Cod: Selectaţi tot
lista1_id rang1 pozitie1
81 1 6
82 2 2
82 3 4
84 4 5
85 5 3
desi trebuia ca rang1 sa fie atribuit succesiv in functie de min(pozitie1). SELECT-ul nu depinde de $i, dar UPDATE da. Poate aveti ceva idei, ca eu nu mai am.
MarPlo
Mesaje:4343
Salut
Incearca sa aplici "ORDER BY pozitie1" la acel select.
Adica asa:
Cod: Selectaţi tot
SELECT min(pozitie1) as min, lista1_id, rang1 from lista1 where rang1=0 ORDER BY pozitie1
Sau daca nu e necesara valoarea "min", poate e bun acest Select:
Cod: Selectaţi tot
SELECT lista1_id, rang1 from lista1 where rang1=0 ORDER BY pozitie1 LIMIT 1
andras
Mesaje:430
Am renuntat la MIN(pozitie1) care am observat ca nu merge cind ai mai multe conditii (scoate intotdeauna ordonat dupa ID-ul tabelei, adica lista1_id) si am pus
Cod: Selectaţi tot
SELECT lista1_id FROM lista1 WHERE rang1=0 ORDER BY pozitie1 LIMIT 1
, asa functioneaza corect. Totusi nu inteleg, teoretic ar fi trebuit sa functioneze din prima. Sa fie un bug al MYSQL? Greu de crezut. Oricum, multumesc.
Subiecte similare
- Setare valori din array in select tag
JavaScript - jQuery - Ajax
Primul mesaj
Salut am un array cu orele de functionare
$data = array (
'0400' => '04:00 AM',
'0430' => '04:30 AM',
'0500' => '05:00 AM',
'0530'...
Ultimul mesaj
Testeaza urmatorul cod.
Daca ceva mai trebuie schimbat, incearca si tu sa modifici dupa cum stii, in functie de ce vrei sa obtii.
Open:...